机房收费进行到MSHFLEXGEID控件中的内容写入excel中,遇到了问题下面将问题进行记录。
首先导出到excel中需要引用microsoft Excel 15.0 object Library,开始我把VB-工程引用列表中的内容上下翻了三遍没有找到这个控件,于是上网找。功夫不负有心人,终于找到了,原来机房电脑装的是office2013,VB6.0是很老的编程语言根本不可能把它封装起来,但是VB6.0提供了浏览窗口,可以手动的添加可执文件和.dll文件。单击浏览在office的默认按照路径找到Excel.EXE文件添加,这样就能引用上面的功能。
下面是Excel.exe的寻找路径。
另外需要用到commondiallog控件,添加方式如下:
1.工程 - 部件 - 控件 在里面选择commondialog 在窗体中添加即可。
由于整个过程有很多窗体用到了导出到excel功能,所以把这个过程封装到模块中,及优化了代码增加可读性,而且一旦遇到错误可以非常方便的找到源头。
下面是主体的代码
Public Function ExportFlexDataToExcel(flex As MSHFlexGrid,g_CommonDialog As CommonDialog) On Error GoTo ErrHandler Dim xlapp As Object Dim xlBook As Object Dim Rows As Integer,Cols As Integer Dim iRow As Integer,hCol As Integer,iCol As Integer Dim New_Col As Boolean Dim New_Column As Boolean g_CommonDialog.CancelError = True On Error GoTo ErrHandler ' 设置标志 g_CommonDialog.Flags = cdlOFNHideReadOnly ' 设置过滤器 g_CommonDialog.Filter = "All Files (*.*)|*.*|Excel Files" & "(*.xls)|*.xls|Batch Files (*.bat)|*.bat" ' 指定缺省的过滤器 g_CommonDialog.FilterIndex = 2 ' 显示“打开”对话框 g_CommonDialog.ShowSave If flex.Rows <= 1 Then '判断表格中是否有数据 MsgBox "没有数据!",vbInformation,"警告" Exit Function End If '打开Excel,添加工作簿 Set xlapp = CreateObject("Excel.Application") Set xlBook = xlapp.Workbooks.Add xlapp.Visible = False '遍历表格中的记录,传递到Excel中 With flex Rows = .Rows Cols = .Cols iRow = 0 iCol = 1 For hCol = 0 To Cols - 1 For iRow = 1 To Rows '获取表格中值,传递到Excel单元格中 xlapp.Cells(iRow,iCol).Value = .TextMatrix(iRow - 1,hCol) Next iRow iCol = iCol + 1 Next hCol End With '设置Excel的属性 With xlapp .Rows(1).Font.Bold = True .Cells.Select .Columns.AutoFit .Cells(1,1).Select ' .Application.Visible = True End With '获取要保存文件的文件名,选择保存路径 xlBook.SaveAs (g_CommonDialog.FileName) xlapp.Application.Visible = True xlapp.DisplayAlerts = False Set xlapp = Nothing '"交还控制给Excel Set xlBook = Nothing MsgBox "数据已经导出到Excel中。","成功" Exit Function ErrHandler: ' 用户按了“取消”按钮 If Err.Number <> 32755 Then MsgBox "数据导出失败!",vbCritical,"警告" End If End Function每一次使用的时候需要调用功能
调用方式如下:
Call ExportFlexDataToExcel(MSHFlexGrid1,CommonDialog1)
原文链接:https://www.f2er.com/vb/257328.html