我想实现在MSflexgrid查询结果导出到EXCEL。找到代码如下: Private Sub Command1_Click() Dim Xlapp As Object Dim i As Long Dim j As Long Dim Header As String Dim xlsheet As Excel.Worksheet Set Xlapp = CreateObject("excel.application") Xlapp.Workbooks.Add Xlapp.Visible = True Set xlsheet = Xlapp.Worksheets.Add With xlsheet ' .Range("C1") = Header ' .Range("C1").Font.Size = 20 ' .Range("A2") = "´Ó" & DTPicker1.Value & "µ½" & DTPicker2.Value & "Ϊֹ:" For i = 1 To msgList.Rows - 1 For j = 0 To msgList.Cols - 1 .Cells(i + 1, j + 1) = msgList.TextMatrix(i, j) Next Next End With Set xlsheet = Nothing Set Xlapp = Nothing End Sub
Dim Xlapp As Object Dim i As Long Dim j As Long Dim Header As String Dim xlssheet As New Excel.Worksheet Dim xlsbook As New Excel.Workbook Set Xlapp = CreateObject("excel.application") 'Set xlsbook = New Excel.Workbook Set xlsbook = Excel.Workbooks.Open(App.Path & "\aa.xls") Set xlssheet = xlsbook.Worksheets.Add 'Xlapp.Workbooks.Add 'Xlapp.Visible = True 'Set xlsheet = Xlapp.Worksheets.Add With xlssheet .Range("A1").CopyFromRecordset DataGrid1.DataSource
End With xlsbook.Save xlsbook.Close Set xlssheet = Nothing Set xlsbook = Nothing Set Xlapp = Nothing 这样你试一试,看行吗?
来个简单的SQL语句,不需要挂EXCEL SELECT * INTO [Excel 8.0;Database=C:\Book1.xls].[Sheet1] FROM [MyTable]
Public Function ExporToExcel(strOpen As String) '********************************************************* '* 名称:ExporToExcel '* 功能:导出数据到EXCEL '* 用法:ExporToExcel(sql查询字符串) '********************************************************* Dim Rs_Data As New ADODB.Recordset Dim Irowcount As Integer Dim Icolcount As Integer
Dim xlApp As New Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Dim xlQuery As Excel.QueryTable
With Rs_Data If .State = adStateOpen Then .Close End If .ActiveConnection = Cn .CursorLocation = adUseClient .CursorType = adOpenStatic .LockType = adLockReadOnly .Source = strOpen .Open End With With Rs_Data If .RecordCount < 1 Then MsgBox ("没有记录!") Exit Function End If '记录总数 Irowcount = .RecordCount '字段总数 Icolcount = .Fields.Count End With
Set xlApp = CreateObject("Excel.Application") Set xlBook = Nothing Set xlSheet = Nothing Set xlBook = xlApp.Workbooks().Add Set xlSheet = xlBook.Worksheets("sheet1") xlApp.Visible = True
'添加查询语句,导入EXCEL数据 Set xlQuery = xlSheet.QueryTables.Add(Rs_Data, xlSheet.Range("a1"))
Private Sub Command1_Click()
Dim Xlapp As Object
Dim i As Long
Dim j As Long
Dim Header As String
Dim xlsheet As Excel.Worksheet
Set Xlapp = CreateObject("excel.application")
Xlapp.Workbooks.Add
Xlapp.Visible = True
Set xlsheet = Xlapp.Worksheets.Add
With xlsheet
' .Range("C1") = Header
' .Range("C1").Font.Size = 20
' .Range("A2") = "´Ó" & DTPicker1.Value & "µ½" & DTPicker2.Value & "Ϊֹ:"
For i = 1 To msgList.Rows - 1
For j = 0 To msgList.Cols - 1
.Cells(i + 1, j + 1) = msgList.TextMatrix(i, j)
Next
Next
End With
Set xlsheet = Nothing
Set Xlapp = Nothing
End Sub
我的datagrid的属性怎么和你的不一样?rows是row,cols是col,没有textmatrix这个属性
我试了一下,能调出excel程序,但是数据没插进去
它们的属性值不一样啊,大家快点帮帮我吧
Dim i As Long
Dim j As Long
Dim Header As String
Dim xlssheet As New Excel.Worksheet
Dim xlsbook As New Excel.Workbook
Set Xlapp = CreateObject("excel.application")
'Set xlsbook = New Excel.Workbook
Set xlsbook = Excel.Workbooks.Open(App.Path & "\aa.xls")
Set xlssheet = xlsbook.Worksheets.Add
'Xlapp.Workbooks.Add
'Xlapp.Visible = True
'Set xlsheet = Xlapp.Worksheets.Add
With xlssheet
.Range("A1").CopyFromRecordset DataGrid1.DataSource
End With
xlsbook.Save
xlsbook.Close
Set xlssheet = Nothing
Set xlsbook = Nothing
Set Xlapp = Nothing
这样你试一试,看行吗?
SELECT * INTO [Excel 8.0;Database=C:\Book1.xls].[Sheet1] FROM [MyTable]
而且你的这种方法得有前提,那就是事先得手动新建一个excel文件,感觉不太通用
专栏作品
VB6 中将数据导出到 Excel 提速之法
李洪根
--------------------------------------------------------------------------------Excel 是一个非常优秀的报表制作软件,用VBA可以控制其生成优秀的报表,本文通过添加查询语句的方法,即用Excel中的获取外部数据的功能将数据很快地从一个查询语句中捕获到EXCEL中,比起往每个CELL里写数据的方法提高许多倍。
在程序中引用Microsoft Excel 9.0 Object Library,将下文加入到一个模块中,窗体中调用如下ExporToExcel("select * from table")。则实现快速将数据导出到EXCEL中。
Public Function ExporToExcel(strOpen As String)
'*********************************************************
'* 名称:ExporToExcel
'* 功能:导出数据到EXCEL
'* 用法:ExporToExcel(sql查询字符串)
'*********************************************************
Dim Rs_Data As New ADODB.Recordset
Dim Irowcount As Integer
Dim Icolcount As Integer
Dim xlApp As New Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim xlQuery As Excel.QueryTable
With Rs_Data
If .State = adStateOpen Then
.Close
End If
.ActiveConnection = Cn
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockReadOnly
.Source = strOpen
.Open
End With
With Rs_Data
If .RecordCount < 1 Then
MsgBox ("没有记录!")
Exit Function
End If
'记录总数
Irowcount = .RecordCount
'字段总数
Icolcount = .Fields.Count
End With
Set xlApp = CreateObject("Excel.Application")
Set xlBook = Nothing
Set xlSheet = Nothing
Set xlBook = xlApp.Workbooks().Add
Set xlSheet = xlBook.Worksheets("sheet1")
xlApp.Visible = True
'添加查询语句,导入EXCEL数据
Set xlQuery = xlSheet.QueryTables.Add(Rs_Data, xlSheet.Range("a1"))
With xlQuery
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
End With
xlQuery.FieldNames = True '显示字段名
xlQuery.Refresh
With xlSheet
.Range(.Cells(1, 1), .Cells(1, Icolcount)).Font.Name = "黑体"
'设标题为黑体字
.Range(.Cells(1, 1), .Cells(1, Icolcount)).Font.Bold = True
'标题字体加粗
.Range(.Cells(1, 1), .Cells(Irowcount + 1, Icolcount)).Borders.LineStyle = xlContinuous
'设表格边框样式
End With
With xlSheet.PageSetup
.LeftHeader = "" & Chr(10) & "&""楷体_GB2312,常规""&10公司名称:" ' & Gsmc
.CenterHeader = "&""楷体_GB2312,常规""公司人员情况表&""宋体,常规""" & Chr(10) & "&""楷体_GB2312,常规""&10日 期:"
.RightHeader = "" & Chr(10) & "&""楷体_GB2312,常规""&10单位:"
.LeftFooter = "&""楷体_GB2312,常规""&10制表人:"
.CenterFooter = "&""楷体_GB2312,常规""&10制表日期:"
.RightFooter = "&""楷体_GB2312,常规""&10第&P页 共&N页"
End With
xlApp.Application.Visible = True
Set xlApp = Nothing '"交还控制给Excel
Set xlBook = Nothing
Set xlSheet = Nothing
End Function注::在程序中引用'Microsoft Excel 9.0 Object Library'和ADO对象,机器必装Excel 2000
本程序在Windows 98/2000,VB 6 下运行通过。