datagrid控件导出到EXCEL

时间:2021-01-27 09:26:35
哪位仁兄帮忙,看看我在VB中将datagrid中数据导出到EXCEL,显示数据类型不匹配。代码如下:其中rstmp是已经有数据的数据集,
而我的的datagrid中有的列数据为空,我估计问题就出在这个地方,我用的是VB+SQL2000,请各位帮忙
Private Sub Command2_Click()
Dim i As Integer
Dim j As Integer
Dim m As Integer
Dim n As Integer
'建立excel对象
Set xlApp = CreateObject("excel.application")
Dim xlBook As Object
Dim xlSheet As Object
xlApp.Visible = True
'建立excel对象的工作薄对象
Set xlBook = xlApp.Workbooks.Add
'建立excel对象的工作表对象
Set xlSheet = xlBook.Worksheets(1)
j = DataGrid1.Columns.count
i = 1
For n = 1 To j - 2
'如果DataGrid1表格中第n列可见,则将其该列的列标题输出至excel表
If DataGrid1.Columns(n).Visible = True Then
'在excel表中的第2行,第i列对应的单元格中显示DataGrid1表格中第n列的列标题
xlSheet.Cells(2, i) = DataGrid1.Columns(n).Caption
i = i + 1
End If
Next n
rstmp.MoveFirst
m = 0
Do While Not rstmp.EOF
i = 1
For n = 1 To j - 2
'如果ataGrid1表格中第n列可见,则将其该列的值输出至excel表
If DataGrid1.Columns(n).Visible = True Then
'在excel表中的第m+3行,第i列对应的单元格中显示DataGrid1表格中第n列的值
xlSheet.Cells(m + 3, i) = DataGrid1.Columns(n).Value
i = i + 1
End If
Next n
rstmp.MoveNext
m = m + 1
Loop
'Exit Sub
End Sub

7 个解决方案

#1


xlSheet.Cells(m + 3, i) = DataGrid1.Columns(n).Value

改成:
xlSheet.Cells(m + 3, i)=iif(isnull(DataGrid1.Columns(n).Value),"",DataGrid1.Columns(n).Value)

#2


我试过这个代码了,还是会提示类型不匹配
空列值的类型在SQL中是datetime型的,还请多多帮忙,谢谢

#3


引用楼主 gdjmp5 的帖子:
哪位仁兄帮忙,看看我在VB中将datagrid中数据导出到EXCEL,显示数据类型不匹配。代码如下:其中rstmp是已经有数据的数据集, 
而我的的datagrid中有的列数据为空,我估计问题就出在这个地方,我用的是VB+SQL2000,请各位帮忙 
Private Sub Command2_Click() 
Dim i As Integer 
Dim j As Integer 
Dim m As Integer 
Dim n As Integer 
'建立excel对象 
Set xlApp = CreateObject("excel.application") 
Dim xlBook As …

我试过这个代码了,还是会提示类型不匹配 
空列值的类型在SQL中是datetime型的,还请多多帮忙,谢谢

#4


引用 1 楼 CityBird 的回复:
xlSheet.Cells(m + 3, i) = DataGrid1.Columns(n).Value 

改成: 
xlSheet.Cells(m + 3, i)=iif(isnull(DataGrid1.Columns(n).Value),"",DataGrid1.Columns(n).Value)


我试过这个代码了,还是会提示类型不匹配 
空列值的类型在SQL中是datetime型的,还请多多帮忙,谢谢

#5


引用楼主 gdjmp5 的帖子:
哪位仁兄帮忙,看看我在VB中将datagrid中数据导出到EXCEL,显示数据类型不匹配。代码如下:其中rstmp是已经有数据的数据集, 
而我的的 datagrid中有的列数据为空,我估计问题就出在这个地方,我用的是VB+SQL2000,请各位帮忙 


列数据为空,没读出来?那你直接读入Excel有什么意义?不是很明白。用MSFlexGrid 或 MSHFlexGrid比DataGrid好用

#6


引用 5 楼 xrongzhen 的回复:
引用楼主 gdjmp5 的帖子: 
哪位仁兄帮忙,看看我在VB中将datagrid中数据导出到EXCEL,显示数据类型不匹配。代码如下:其中rstmp是已经有数据的数据集, 
而我的的datagrid中有的列数据为空,我估计问题就出在这个地方,我用的是VB+SQL2000,请各位帮忙 


列数据为空,没读出来?那你直接读入Excel有什么意义?不是很明白。用MSFlexGrid 或 MSHFlexGrid比DataGrid好用 


有的行上列数据为空,并不是所有的行上列数据为空!
这么说吧,我做的是实验室上机卡管理,比如说一张卡被注销了,我就把注销的时间写入数据库
而正在使用的卡就没有注销时间,注销时间就为空!
所以在我导出上机卡信息的时候,有的卡的注销时间就是空的了!
我的程序已经都写好了,再用别的控件要改很多代码,比较菜,也不大会别的控件
还请多帮忙,谢谢了

#7


强烈推荐使用CoolGrid第三方控件
CoolGrid1.ExportToExcel (FileName as String )
后面直接加一个文件名就可以导出CoolGrid控件里面的数据

#1


xlSheet.Cells(m + 3, i) = DataGrid1.Columns(n).Value

改成:
xlSheet.Cells(m + 3, i)=iif(isnull(DataGrid1.Columns(n).Value),"",DataGrid1.Columns(n).Value)

#2


我试过这个代码了,还是会提示类型不匹配
空列值的类型在SQL中是datetime型的,还请多多帮忙,谢谢

#3


引用楼主 gdjmp5 的帖子:
哪位仁兄帮忙,看看我在VB中将datagrid中数据导出到EXCEL,显示数据类型不匹配。代码如下:其中rstmp是已经有数据的数据集, 
而我的的datagrid中有的列数据为空,我估计问题就出在这个地方,我用的是VB+SQL2000,请各位帮忙 
Private Sub Command2_Click() 
Dim i As Integer 
Dim j As Integer 
Dim m As Integer 
Dim n As Integer 
'建立excel对象 
Set xlApp = CreateObject("excel.application") 
Dim xlBook As …

我试过这个代码了,还是会提示类型不匹配 
空列值的类型在SQL中是datetime型的,还请多多帮忙,谢谢

#4


引用 1 楼 CityBird 的回复:
xlSheet.Cells(m + 3, i) = DataGrid1.Columns(n).Value 

改成: 
xlSheet.Cells(m + 3, i)=iif(isnull(DataGrid1.Columns(n).Value),"",DataGrid1.Columns(n).Value)


我试过这个代码了,还是会提示类型不匹配 
空列值的类型在SQL中是datetime型的,还请多多帮忙,谢谢

#5


引用楼主 gdjmp5 的帖子:
哪位仁兄帮忙,看看我在VB中将datagrid中数据导出到EXCEL,显示数据类型不匹配。代码如下:其中rstmp是已经有数据的数据集, 
而我的的 datagrid中有的列数据为空,我估计问题就出在这个地方,我用的是VB+SQL2000,请各位帮忙 


列数据为空,没读出来?那你直接读入Excel有什么意义?不是很明白。用MSFlexGrid 或 MSHFlexGrid比DataGrid好用

#6


引用 5 楼 xrongzhen 的回复:
引用楼主 gdjmp5 的帖子: 
哪位仁兄帮忙,看看我在VB中将datagrid中数据导出到EXCEL,显示数据类型不匹配。代码如下:其中rstmp是已经有数据的数据集, 
而我的的datagrid中有的列数据为空,我估计问题就出在这个地方,我用的是VB+SQL2000,请各位帮忙 


列数据为空,没读出来?那你直接读入Excel有什么意义?不是很明白。用MSFlexGrid 或 MSHFlexGrid比DataGrid好用 


有的行上列数据为空,并不是所有的行上列数据为空!
这么说吧,我做的是实验室上机卡管理,比如说一张卡被注销了,我就把注销的时间写入数据库
而正在使用的卡就没有注销时间,注销时间就为空!
所以在我导出上机卡信息的时候,有的卡的注销时间就是空的了!
我的程序已经都写好了,再用别的控件要改很多代码,比较菜,也不大会别的控件
还请多帮忙,谢谢了

#7


强烈推荐使用CoolGrid第三方控件
CoolGrid1.ExportToExcel (FileName as String )
后面直接加一个文件名就可以导出CoolGrid控件里面的数据