heroxianf 发表于 2016-11-13 21:39:01

导出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

chzj589 发表于 2016-11-14 09:13:47

回复 1# heroxianf

一:查看帮助文件
二:搜索论坛例子
三:函数语句如何使用再帮助 

heroxianf 发表于 2016-11-14 10:40:54

之前想搜这个帖子的,此帖作者整理的UDF里 有详细的方法。

http://www.autoitx.com/forum.php?mod=viewthread&tid=36429&highlight=%B8%DF%D0%A7

blue_dvd 发表于 2016-11-14 11:13:28

打开Excel文件直接进入表格直接写就行了
              $wb.activeSheet.name="表名"
        $wb.worksheets(表名).range("a1").resize(UBound($sOut,2),UBound($sOut)).value=$sOut

blue_dvd 发表于 2016-11-14 11:16:33

回复 3# heroxianf

你的连接那里我也看过并测试过,他是把字段名英文话,感觉有很多SQL文件都要转麻烦。

heroxianf 发表于 2016-11-14 11:22:53

回复 5# blue_dvd


    谢谢提醒,下来好好了解一下。我本人也喜欢直接写入比较好。

heroxianf 发表于 2016-11-14 13:24:04

回复 5# blue_dvd


    老兄 你这句没看明白,能提供一下完整的语句么?

blue_dvd 发表于 2016-11-14 15:58:08


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改为你的目标数组就可了

heroxianf 发表于 2016-11-14 21:40:43

回复 8# blue_dvd


    你分享的是把SQLite数据导出来的代码?

blue_dvd 发表于 2016-11-14 22:01:30

回复 9# heroxianf

对,导出来,再存进Excel表格,最近也在玩Excel及SQLite

heroxianf 发表于 2016-11-14 22:42:41

回复 10# blue_dvd

看不懂了,我看你这个是打开EXCEL表 存到数组里。

heroxianf 发表于 2016-11-14 22:48:53

回复 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)

heroxianf 发表于 2016-11-14 23:59:43

回复 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

blue_dvd 发表于 2016-11-15 21:43:50

回复 13# heroxianf

我没测试结果,不过一般读取Excel数据都是行列倒置的,所有存储的时候也要转制一下再存!
页: [1]
查看完整版本: 导出SQLite里的数据到Excel里,是怎么写到表格里的?[已解决]