找回密码
 加入
搜索
楼主: joint

[AU3基础] 如何输出CSV格式数据并能被其它软件读取? 已解决。

 火.. [复制链接]
 楼主| 发表于 2017-6-27 11:34:16 | 显示全部楼层
回复  joint
    哦,那是笔误,把Local $sStr = '"' & StringReplace($aArray[$i][$j], '"', '""') &  ...
tubaba 发表于 2017-6-27 11:27


唉,我昨天用模拟数据测试是正常的,所以,就搞晕了。
Local $array[100][8]

For $i = 0 To 99
        For $j = 0 To 7
                $array[$i][$j] = "Item " & StringFormat("%02i", $i) & StringFormat("%02i", $j)
        Next
Next
_ArrayDisplay($array)

_SaveToCsv ($array,@ScriptDir&"\tools\yd.csv")
 楼主| 发表于 2017-6-27 12:11:46 | 显示全部楼层
回复  joint


    哦,那是笔误,把Local $sStr = '"' & StringReplace($aArray[$i][$j], '"', '""') &  ...
tubaba 发表于 2017-6-27 11:27


另外,不是一维,是按列追加的二维表。用现在的代码存储的csv文件是空的,吃玩饭我再看看是怎么回事。
发表于 2017-6-27 12:32:13 | 显示全部楼层
检查一下得到的$array是否正确.
 楼主| 发表于 2017-6-27 12:47:30 | 显示全部楼层
本帖最后由 joint 于 2017-6-27 13:03 编辑
检查一下得到的$array是否正确.
tubaba 发表于 2017-6-27 12:32


$array是正常的。需要说明以下,与[$i][$j]循环按行方式产生的不同,这个是按列产生的数组。

For $i = 0 To $iItemCount - 1
        $aText[$i][0] = ControlListView('', '', 1703, 'GetText', $i, 0)
        $aText[$i][1] = ControlListView('', '', 1703, 'GetText', $i, 1)
        $aText[$i][2] = ControlListView('', '', 1703, 'GetText', $i, 2)
        $aText[$i][3] = ControlListView('', '', 1703, 'GetText', $i, 3)
        $aText[$i][4] = ControlListView('', '', 1703, 'GetText', $i, 4)
Next
_ArrayDisplay($aText)

这个取的是5列,和全部的行。
发表于 2017-6-27 14:20:11 | 显示全部楼层
把你_arraydisplay显示的数据截图看一下
发表于 2017-6-27 15:45:29 | 显示全部楼层
本帖最后由 tubaba 于 2017-6-27 15:47 编辑

用 savetocsv将上面的数据写文件是空的?

Func _SaveToCsv1($aArray, $sCsvSavePath)
        Local $csv = FileOpen($sCsvSavePath, 2 + 8)
        If UBound($aArray, 0) = 1 Then
                For $i = 0 To UBound($aArray) - 1
                        Local $sStr = '"' & StringReplace($aArray[$i], '"', '""') & '"'
                        FileWriteLine($csv, $sStr)
                Next
        ElseIf UBound($aArray, 0) = 2 Then
                For $i = 0 To UBound($aArray, 1) - 1
                        Local $sStr = ''
                        For $j = 0 To UBound($aArray, 2) - 1
                                $sStr &= '"' & StringReplace($aArray[$i][$j], '"', '""') & '",'
                        Next
                        $sStr = StringTrimRight($sStr, 1)
                        ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sStr = ' & $sStr & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console;加这行调试下,看看控制台输出
                        FileWriteLine($csv, $sStr)
                Next
        EndIf
        FileClose($csv)

EndFunc   ;==>_SaveToCsv1
 楼主| 发表于 2017-6-27 16:05:10 | 显示全部楼层
本帖最后由 joint 于 2017-6-27 16:26 编辑
用 savetocsv将上面的数据写文件是空的?
tubaba 发表于 2017-6-27 15:45


是啊,用前面的代码,写入csv是空的。
刚才试了上面最新的这个,还是空的,文件写了,但是内容是空的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2017-6-27 22:17:48 | 显示全部楼层
哥们做裂变的吗?我这有现成的
 楼主| 发表于 2017-6-28 09:05:16 | 显示全部楼层
哥们做裂变的吗?我这有现成的
524443834 发表于 2017-6-27 22:17



   不懂,裂变是什么东东?
发表于 2017-6-28 09:16:09 | 显示全部楼层
本帖最后由 tubaba 于 2017-6-28 09:20 编辑

让你加consolwrite是看控制台输出.是用来debug用的,你不用scite编辑器吗?好累啊

看看你的array到底是几维的,用UBound($aArray, 0)
 楼主| 发表于 2017-6-28 10:44:42 | 显示全部楼层
让你加consolwrite是看控制台输出.是用来debug用的,你不用scite编辑器吗?好累啊
看看你的array到底是几维 ...
tubaba 发表于 2017-6-28 09:16


按数组的方式显示正常,但却是0行0列0维:

是不是与数据类型有关?怎么查看数组的各行各列的数据类型?au3的数组功能好像很弱啊。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2017-6-28 10:54:56 | 显示全部楼层
回复 41# joint

你的基礎語法根本就是錯誤的......

如果 你畫面中的 _arraydisplay 是成立的 有資料的

那麼 $iRows 就應該等於  UBound($aText ...)  才對
 楼主| 发表于 2017-6-28 11:14:18 | 显示全部楼层
本帖最后由 joint 于 2017-6-28 11:21 编辑
回复  joint

你的基礎語法根本就是錯誤的......

如果 你畫面中的 _arraydisplay 是成立的 有資料的
...
kk_lee69 发表于 2017-6-28 10:54


抱歉,在忙,仓促中直接拷贝了,我再试试。
不行,改为aText就死循环了。aText数据是动态变化的。
发表于 2017-6-28 11:39:06 | 显示全部楼层
提问区满屏全部是你的刷屏。。。建议从头耐心的先看一遍Autoit3CHS.chm(  Autoit 帮助)。
发表于 2017-6-28 12:54:10 | 显示全部楼层
我实在搞不懂,能用arraydisplay显示数组,但UBound($array,0)又是0维.灵异
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-22 20:44 , Processed in 0.076592 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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