导出SQLite里的数据到Excel里,是怎么写到表格里的?[已解决]
本帖最后由 heroxianf 于 2016-11-14 10:41 编辑下面是一行一行的输出,如果不赋值$sOut = ''那么是一个大的数组,不知道如何写到Excel, 如何定义输出的格式呢? 请指点下哇。
While _SQLite_FetchData($hQuery, $aRow) = $sqlite_ok ;查到有效数据
For $i = 0 To UBound($aRow) - 1
$sOut &= $aRow[$i] & ' - '
Next
MsgBox(0, '', $sOut, 1)
$sOut = ''
WEnd 回复 1# heroxianf
一:查看帮助文件
二:搜索论坛例子
三:函数语句如何使用再帮助 之前想搜这个帖子的,此帖作者整理的UDF里 有详细的方法。
http://www.autoitx.com/forum.php?mod=viewthread&tid=36429&highlight=%B8%DF%D0%A7 打开Excel文件直接进入表格直接写就行了
$wb.activeSheet.name="表名"
$wb.worksheets(表名).range("a1").resize(UBound($sOut,2),UBound($sOut)).value=$sOut 回复 3# heroxianf
你的连接那里我也看过并测试过,他是把字段名英文话,感觉有很多SQL文件都要转麻烦。 回复 5# blue_dvd
谢谢提醒,下来好好了解一下。我本人也喜欢直接写入比较好。 回复 5# blue_dvd
老兄 你这句没看明白,能提供一下完整的语句么?
Local $sFilePath1 = FileOpenDialog("选择导入电子表格文件", @ScriptDir & "\", "Microsoft Excel 工作薄 (*.xls)", 1 + 2 + 4)
$oexcel=ObjCreate("excel.application") ;创建excel进程
$oexcel.visible=False;隐藏进程界面,可以提高处理速度
$wb=$oexcel.workbooks.open($sFilePath);打开选定工作簿
;行列转置才能用
Local $aArray2
For $i = 0 To UBound($aArray, 2) - 1
For $j = 0 To UBound($aArray, 1) - 1
$aArray2[$i][$j] = $aArray[$j][$i]
Next
Next
;行列转置后放在$aArray2中
$wb.worksheets(1).activate
$wb.sheets.Add.activate
$wb.activeSheet.name="合并查询结果"
$wb.worksheets("合并查询结果").range("a1").resize(UBound($aArray2,2),UBound($aArray2)).value=$aArray2;结果数组写入工作簿第二个工作表
$wb.close(true);保存并关闭工作簿(参数true代表保存)
$oexcel.quit;退出excel进程
把$aArray2改为你的目标数组就可了 回复 8# blue_dvd
你分享的是把SQLite数据导出来的代码? 回复 9# heroxianf
对,导出来,再存进Excel表格,最近也在玩Excel及SQLite 回复 10# blue_dvd
看不懂了,我看你这个是打开EXCEL表 存到数组里。 回复 10# blue_dvd
你看看我的代码,要是能这样排列数据就好了,存起来方便。
#AutoIt3Wrapper_UseX64=n
#include <SQLite.au3>
#include <array.au3>
;~ #include <SQLite.dll.au3>
Local $aRow, $hQuery, $sOut = '', $sQuery
Local $hDb = @ScriptDir & '\Monitor.db'
_SQLite_Startup()
ConsoleWrite("SQLite 库版本 = " & _SQLite_LibVersion() & @CRLF)
Local $test = _SQLite_Open($hDb) ; 打开 :内存: 数据库
_SQLite_Query($test, "select * from Monitor;", $hQuery) ;查询表中所有数据
;ConsoleWrite(@CRLF & '下面将输出表中所有数据:')
While _SQLite_FetchData($hQuery, $aRow) = $sqlite_ok ;查到有效数据
;行列转置才能用
Local $aArray2
For $i = 0 To UBound($aRow, 2) - 1
For $j = 0 To UBound($aRow, 1) - 1
$aArray2[$i][$j] = $aRow[$j][$i]
Next
Next
WEnd
_ArrayDisplay($aArray2) 回复 10# blue_dvd
折腾了这么久,竖着输入的。 请求帮助
_SQLite_Query($test, "SELECT * FROM Monitor;", $hQuery)
While _SQLite_FetchData($hQuery, $aRow) = $SQLITE_OK
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $aRow, "B1")
_ArrayDisplay($aRow)
WEnd 回复 13# heroxianf
我没测试结果,不过一般读取Excel数据都是行列倒置的,所有存储的时候也要转制一下再存!
页:
[1]