上一篇我们介绍了如何将数据显示到DataGridView,有时候我们还需要将DataGridView里的数据导出至Excel中,我是将数据源中的数据源显示到控件中,下面就将我在实现的过程中遇到的问题说下。
首先看下我们的显示数据的代码
'声明并实例化临时表 Dim temDt AsData.DataTable = New Data.DataTable '获取临时表名字 temDt=ds.Tables("TLineRecordInfo") '进行数据源的绑定 dataView.DataSource= LineRecordManage.CheckLineRecord(strsql) dataView.DataMember= temDt.TableName
接下来我们需要DataGridView中数据导出至Excel时,首先要添加引用:
ImportsMicrosoft.Office.Interop.Excel
然后是导出的代码:
'要先添加引用才能使用下列语句 Dim myExcel As NewMicrosoft.Office.Interop.Excel.Application() myExcel.Application.Workbooks.Add(True) myExcel.Visible = True '去除dataView的编号列 Dim m As Integer For m = 0 To dataView.ColumnCount - 1 myExcel.Cells(1, m + 1) =Me.dataView.Columns(m).HeaderText Next m '往excel表里添加数据 Dim i As Integer For i = 0 To dataView.RowCount - 1 Dim j As Integer For j = 0 To dataView.ColumnCount -1 If Me.dataView(j, i).Value IsSystem.DBNull.Value Then myExcel.Cells(i + 2, j + 1)= "" Else myExcel.Cells(i + 2, j + 1)= dataView(j, i).Value.ToString End If Next j Next i
正常情况下,到这里我们的功能就可以实现了,但是系统运行后提示出现问题:
因为在添加引用Imports Microsoft.Office.Interop.Excel后,系统已经将temDt当做了接口已经不把它当做内存中的数据表了,我们知道接口是不能实例化的,所以也就出现了这个问题。
我们的解决办法是:
Dim temDt As System.Data.DataTable = NewSystem.Data.DataTable
这样声明后temDt就不再是接口了,而是内存中的数据表了
这样我们的问题就轻易的解决了。