两种方法DatagridView轻松导入到Excel
时间:2014-06-16 14:47:10
收藏:0
阅读:273
众所周知,DatagridView控件来处理表各类数据真的是“简单、方便、疗效快”,因此备受广大民众喜爱。今天我们再来继续探讨一下有关它和Excel的“姊妹情深”。
几乎没有人不对Excel不了解,但要说熟悉和认识透彻恐怕我们还远远没有做到(这是题外之言),重点还是Excel的强大数据处理能力带给我们的便利,所以把DatagridView数据表变为老少皆宜的Excel表格就显得尤为重要了。
其实这一转换也很简单,下面就为大家介绍下两种方法,轻松连接“姊妹情”。
方法一:
这种方法不需要任何加载和引用,只是纯代码,执行效率比较高。
Public Function ExportExcel(ByVal gvw As DataGridView) As Boolean '导出到Excel函数 Try If gvw.Rows.Count <= 0 Then '判断记录数,如果没有记录就退出 MessageBox.Show("没有记录可以导出", "没有可以导出的项目", MessageBoxButtons.OK, MessageBoxIcon.Information) Return False Else '如果有记录就导出到Excel Dim objCreateExcel As Object Dim objAddExcel As Object objCreateExcel = CreateObject("Excel.Application") '创建Excel对象 objAddExcel = objCreateExcel.workbooks.add() Dim intTitle As Integer Dim intRow As Integer Dim intColumn As Integer '定义循环变量,行列变量 '把表头写入Excel For intTitle = 0 To gvw.Columns.Count - 1 objAddExcel.worksheets(1).cells(1, intTitle + 1) = gvw.Columns(intTitle).HeaderCell.Value Next '用循环添加数据 For intRow = 0 To gvw.Rows.Count - 1 '行循环 For intColumn = 0 To gvw.Columns.Count - 1 '列循环 objAddExcel.worksheets(1).cells(intRow + 2, intColumn + 1) = gvw.Item(intColumn, intRow).Value.ToString Next Next objAddExcel.worksheets(1).Cells.EntireColumn.AutoFit() '自动调整Excel列 objCreateExcel.visible = True '设置Excel可见作为Excel工作表名称 objAddExcel = Nothing '释放资源 objCreateExcel = Nothing '释放资源 End If Return True Catch ex As Exception '错误处理 MessageBox.Show(Err.Description.ToString, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error) '出错提示 Return False End Try End Function
方法二:需要引用.NET FrameWork程序集下的Office,但代码较少,具体如下:
1、添加引用(如图)
然后选择
2、代码
Imports Microsoft ‘添加引用 Module mdlText Public Function ExportExcel(ByVal gvw As DataGridView) As Boolean '导出到Excel函数 '建立Excel连接 Dim myExcel As New Microsoft.Office.Interop.Excel.Application() myExcel.Application.Workbooks.Add(True) myExcel.Visible = True '定义循环变量,行列变量 Dim intRow As Integer Dim intColumn As Integer Dim intTitle As Integer '添加表头 For intTitle = 0 To gvw.ColumnCount - 1 myExcel.Cells(1, intTitle + 1) = gvw.Columns(intTitle).HeaderText Next intTitle '通过循环来添加控件中的数据到表格中 For intRow = 0 To gvw.RowCount - 1 For intColumn = 0 To gvw.ColumnCount - 1 '由于第一行是表头,所以添加数据时从第二行开始 myExcel.Cells(intRow + 2, intColumn + 1) = gvw(intColumn, intRow).Value.ToString Next intColumn Next intRow Return True '添加完毕,返回true End Function
EndModule
虽然和第一次做收费系统相比简单了很多,但这个功能由于存在着普遍性和良好的通用性,还是需要我们认真对待。如何做到最大化的方便用户使用才是我们的最终目标。
评论(0)