求access导出excel和dbf的函数
本帖最后由 bnuzjm 于 2013-8-7 19:16 编辑各位大侠,有没有直接将access中的表导出成excel和dbf的函数?找了好久,基本上都是遍历表中的数据,然后插入到excel或者dbf中,有没有现成的导出函数么?
自己写了两个函数,excel 导出见1楼,dbf导出见2楼,两个函数差不多。解决方案还是不够好,希望有大侠能够有更好的解决方案。 导出excel的已经解决了Func _exportExcel()
$addfld = ObjCreate("ADODB.Connection")
$addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $mdb_data_path)
$sQuery="select * from datahsd"
$RS =ObjCreate("ADODB.Recordset")
$RS.ActiveConnection =$addfld
$RS.open($sQuery)
Local $intCount = $RS.Fields.Count
$oExcel = _ExcelBookNew(0) ; Create an Excel Object
$oExcel.WorkBooks.Add ; Add a new workbook
For $i = 1 to $intCount Step + 1
$oExcel.ActiveWorkBook.ActiveSheet.Cells(1, $i).value = $RS.Fields($i - 1).name
Next
$oExcel.ActiveWorkBook.ActiveSheet.Cells(2,1).CopyFromRecordset ($RS) ; Fill a cell
$oExcel.Columns.AutoFit
$oExcel.ActiveWorkBook.Saved = 1 ; Simulate a save of the Workbook
_ExcelBookSaveAs($oExcel, 'D:\code\autoit\example\录取数据处理系统\test\098\cwc.xls', "xls", 0, 1)
_ExcelBookClose($oExcel)
$oExcel=0
EndFunc 本帖最后由 bnuzjm 于 2013-8-7 20:39 编辑
把excel.au3修改了下,加上dbf类型判断。测试了下,xp系统,只支持dbf4类型,dbf2和dbf3都不支持。
win7系统,三个都不支持,所以这个方案还是有挺多问题的
_export("d:\","文件名1","xls")
_export("d:\","文件名2","dbf")
Func _export($targetPath,$fileName,$fileType)
$addfld = ObjCreate("ADODB.Connection")
$addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $mdb_data_path)
$sQuery="select * from datahsd"
$RS =ObjCreate("ADODB.Recordset")
$RS.ActiveConnection =$addfld
$RS.open($sQuery)
Local $intCount = $RS.Fields.Count
$oExcel = _ExcelBookNew(0) ; Create an Excel Object
$oExcel.WorkBooks.Add ; Add a new workbook
For $i = 1 to $intCount Step + 1
$oExcel.ActiveWorkBook.ActiveSheet.Cells(1, $i).value = $RS.Fields($i - 1).name
Next
$oExcel.ActiveWorkBook.ActiveSheet.Cells(2,1).CopyFromRecordset ($RS) ; Fill a cell
$oExcel.Columns.AutoFit
$oExcel.ActiveWorkBook.Saved = 1 ; Simulate a save of the Workbook
_ExcelBookSaveAs($oExcel, $targetPath&$fileName&"."&$fileType, $fileType, 0, 1)
If $fileType="xls" Then
_ExcelBookClose($oExcel)
$oExcel=0
Else
ProcessClose("excel.exe")
EndIf
EndFunc
本帖最后由 bnuzjm 于 2013-8-7 21:13 编辑
另外再附上excel.au3中保存类型的参数值对应表,可能对大家有用。
其中我用到了DBF4 (2) (*.DBF) dBase IV 11
当数据量大的时候会不会效率很低? 这个要好好研究的,将来一定有用 是所有的导出函数? 回复 5# quintin
是有点低 回复 7# huangwei
这是ExcelCOM_UDF.au3里面的代码,目前只支持以下几种类型吧,dbf是我自己加上去的
Func _ExcelBookSaveAs($oExcel, $sFilePath, $sType = "xls", $fAlerts = 0, $fOverWrite = 0)
If NOT IsObj($oExcel) Then Return SetError(1, 0, 0)
If $sType = "xls" or $sType = "csv" or $sType = "txt" or $sType = "template" or $sType = "html" or $sType = "dbf" Then
If $sType = "xls" Then $sType = $xlNormal
If $sType = "csv" Then $sType = $xlCSVMSDOS
If $sType = "txt" Then $sType = $xlTextWindows
If $sType = "template" Then $sType = $xlTemplate
If $sType = "html" Then $sType = $xlHtml
If $sType = "dbf" Then $sType = $xlDbf4
Else 看看sqlite吧 回复 10# netegg
因为跟其他系统对接,用access会更方便点 回复 12# bnuzjm
sqlite本身就是跨平台的
页:
[1]