上一篇我们介绍了如何将数据显示到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就不再是接口了,而是内存中的数据表了
这样我们的问题就轻易的解决了。