mpf5566 发表于 2013-9-27 16:04:11

[已解决]AU3连接MYSQL并导出表到excel

本帖最后由 mpf5566 于 2013-9-30 17:24 编辑

#include<mysql.au3>
#include<excel.au3>
$dic=ObjCreate("scripting.dictionary")
$oexcel=ObjCreate("excel.application")
$oexcel.visible=True
$sUsername="XX"
$sPassword="xxxxxx"
$sDatabase="ixxxxxx"
$sServer="192.168.xxxxx"
$sDriver="{MySQL ODBC 3.51 Driver}"
$oconnectionobj= _MySQLConnect($sUsername, $sPassword, $sDatabase, $sServer, $sDriver)
MsgBox(0,"",$oconnectionobj)
$1=_CountTables($oConnectionObj)   ;测试下数据库是否正常连接
MsgBox(0,"",$1);测试结果读出数据库包含正确的tables数说明已正常连接
$sQuery="SELECT * FROM isaLog . SiteA ";高潮来了,如何把数据库整个table的内容导出到excel表格里
$sitea=_Query($oconnectionobj, $sQuery);发送查询命令到数据库中
$wb=$oexcel.workbooks.open(@ScriptDir&"\数据库.xlsx");打开本地excel表格
$wb.worksheets(1).range("a1").resize(500,4).value=$sitea;假设有500行4列的table数据复制到表一内。

希望有做过类似功能的大大给予小弟帮助谢谢。。。。
{:face (394):}

nmgwddj 发表于 2013-9-27 18:01:48

select * from table

for $i = 1 to x
   _excelwritecall(xx,xx,xx)
next

数据库你都可以连上了,这个我相信你也可以自己搞定的。

kevinch 发表于 2013-9-27 19:55:59

mysql不会,ado就知道可以激活指定表后用CopyFromRecordset方法

lanfengc 发表于 2013-9-28 00:38:16

回复 3# kevinch


    机器需要安装一个MySQL ODBC 3.51 Driver 驱动的. 要不然无法连接Mysql数据库.
导出到Excel你可以把查询语句格式化成TAB分割的( select * from yourtablename 返回的数据略作处理,处理成一个字符串,每个字段之间Tab隔开,每行后加换行符. ),然后把返回的结果直接调用Paste方法粘贴到Excel里就行了.很快的.不要用设置单元格数值的,太慢了.

字符串格式为:
local $ResultString="这是第一行第一个字段"&@tab&"这是第一行第二个字段"&....&@crlf & _
                              "这是第二行第一个字段"&@tab&"这是第二行第二个字段"&....&@crlf & _
                              .
                              .
                              .
                              .
                              .
                               "这是第n行第一个字段"&@tab&"这是第n行第二个字段"&....
然后调用Range("A1").Paste 就可以了.

mpf5566 发表于 2013-9-30 13:20:25

回复 2# nmgwddj


    直接一个一个写入搞定了,谢谢您的提示,不过这样子写入一次数据mysql访问超过了千次以上速度太慢了,现在想换一个方法

mpf5566 发表于 2013-9-30 13:23:58

回复 4# lanfengc

$query="SELECT * FROM tablename"
   $arr= _Query($oConnectionObj, $sQuery)
多谢您的答复,发送mysql UDF的这一条函数到mysql里面返回的$arr变量是什么形式呢?我用_arraydisplay($arr)显示不出什么内容,小弟MYSQL不太熟万请指点谢谢。

mpf5566 发表于 2013-9-30 13:25:47

回复 3# kevinch


    kevinch您好,哈哈这些功能的还是基于之前您给的字典对象来做对比。现在要先连接数据库然后写导入EXCEL再读到字典里。{:face (394):}

mpf5566 发表于 2013-9-30 17:24:10

                        For $n=0 To UBound($sQuery)-1
                $1=_Query($oConnectionObj, $sQuery[$n])
                With $1
                        Local $i=1
                        ;MsgBox(0,"",$s1)
                        While Not .EOF
                              Local $resultstring=.fields("Serial").value&@TAB&.fields("Site").value&@TAB&.fields("Description").value
                                $wb.sheets($s1).range("a"&$i).value=.fields("Serial").value
                                $wb.sheets($s1).range("b"&$i).value=.fields("Site").value
                                $wb.sheets($s1).range("c"&$i).value=.fields("Description").value
                        .movenext
                        $i+=1
                        WEnd
                        $s1+=1回复 4# lanfengc

谢谢您的提示,已经解决了附上赋值说明。。。循环了查询语句,用.fields把所有行每个字段以此读取到excel表里面

plutosherry 发表于 2013-12-11 16:01:11

可以,不错不错

ak47gglllk 发表于 2013-12-26 15:06:07

看不懂呀,学习一下

alpin 发表于 2013-12-31 16:35:38

{:face (396):}

heruowen 发表于 2014-1-4 20:05:30

得到了帮助,非常感谢

joyran 发表于 2014-1-4 20:47:09

4楼高手啊!学习了

winple 发表于 2014-8-31 19:36:25

如果是远程的mysql呢,如何连接

xmantom 发表于 2015-3-27 12:25:32

学习了~~~~~~~~~~~
页: [1] 2
查看完整版本: [已解决]AU3连接MYSQL并导出表到excel