找回密码
 加入
搜索
查看: 42031|回复: 17

[系统综合] [已解决]AU3连接MYSQL并导出表到excel

 火.. [复制链接]
发表于 2013-9-27 16:04:11 | 显示全部楼层 |阅读模式
本帖最后由 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数据复制到表一内。

希望有做过类似功能的大大给予小弟帮助谢谢。。。。
发表于 2013-9-27 18:01:48 | 显示全部楼层
select * from table

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

数据库你都可以连上了,这个我相信你也可以自己搞定的。
发表于 2013-9-27 19:55:59 | 显示全部楼层
mysql不会,ado就知道可以激活指定表后用CopyFromRecordset方法
发表于 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 就可以了.
 楼主| 发表于 2013-9-30 13:20:25 | 显示全部楼层
回复 2# nmgwddj


    直接一个一个写入搞定了,谢谢您的提示,不过这样子写入一次数据mysql访问超过了千次以上速度太慢了,现在想换一个方法
 楼主| 发表于 2013-9-30 13:23:58 | 显示全部楼层
回复 4# lanfengc

$query="SELECT * FROM tablename"
   $arr= _Query($oConnectionObj, $sQuery)
多谢您的答复,发送mysql UDF的这一条函数到mysql里面返回的$arr变量是什么形式呢?我用_arraydisplay($arr)显示不出什么内容,小弟MYSQL不太熟万请指点谢谢。
 楼主| 发表于 2013-9-30 13:25:47 | 显示全部楼层
回复 3# kevinch


    kevinch您好,哈哈这些功能的还是基于之前您给的字典对象来做对比。现在要先连接数据库然后写导入EXCEL再读到字典里。
 楼主| 发表于 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表里面
发表于 2013-12-11 16:01:11 | 显示全部楼层
可以,不错不错
发表于 2013-12-26 15:06:07 | 显示全部楼层
看不懂呀,学习一下
发表于 2013-12-31 16:35:38 | 显示全部楼层
发表于 2014-1-4 20:05:30 | 显示全部楼层
得到了帮助,非常感谢
发表于 2014-1-4 20:47:09 | 显示全部楼层
4楼高手啊!学习了
发表于 2014-8-31 19:36:25 | 显示全部楼层
如果是远程的mysql呢,如何连接
发表于 2015-3-27 12:25:32 | 显示全部楼层
学习了~~~~~~~~~~~
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-15 16:53 , Processed in 0.080026 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表