关于EXCEL数据拆分问题[已解决]
本帖最后由 heroxianf 于 2015-11-18 17:11 编辑#include <Excel.au3>
#include <Excel.au3>
#include <array.au3>
Local $oExcel = _ExcelBookOpen(@ScriptDir & "\Data.xlsx")
$avArray = _ExcelReadSheetToArray($oExcel)
Local $str, $i, $dt, $avArray
_ArrayDisplay($avArray)
For $i = 2 To UBound($avArray) - 1
$str = StringSplit($avArray[$i], "{TAB}", 1)
$xName = $str
MsgBox(0, "test", $xName)
Next
_ExcelBookSaveAs($oExcel, @ScriptDir & "\temp.xls", "xls", 0, 1)
_ExcelBookClose($oExcel)
$str = StringSplit($avArray[$i], "{TAB}", 1)之前我用.CSV格式用逗号拆分,现在先改成execl的默认格式,不知道如何拆分了,请问默认分隔符是什么呢? 另外能不能让Local $oExcel = _ExcelBookOpen(@ScriptDir & "\Data.xlsx") 不要弹出excel表格,后台打开就好, 请帮忙指点一下。 #include <Excel.au3>
#include <array.au3>
Local $str, $i, $dt, $avArray
Local $oExcel = _ExcelBookOpen(@ScriptDir & "\Data.xlsx")
$avArray = _ExcelReadSheetToArray($oExcel)
_ArrayDisplay($avArray)
For $i = 2 To UBound($avArray) - 1
$xName = $avArray[$i]
$xNo = $avArray[$i]
$xErp = $avArray[$i]
MsgBox(0, "test", $xName & "-" & $xNo & "-" & $xErp)
Next
_ExcelBookSaveAs($oExcel, @ScriptDir & "\temp.xls", "xls", 0, 1)
_ExcelBookClose($oExcel)
测试了一下 这样也可以读取每个值,希望高人指点一下,有没有更加好的代码。 回复 2# heroxianf
晚點給你代碼 根本不用管 分隔符號是甚麼 回复 3# kk_lee69
非常谢谢,那晚上我等着哦。 本帖最后由 kk_lee69 于 2015-11-17 21:24 编辑
回复 4# heroxianf
$eExcel = _ExcelBookOpen($eFPath,0,True) ;打開EXCEL表
With $eExcel.ActiveSheet ;Worksheets("")如果要用工作表名稱 就改成這邊
$eExcelArray=.range("a1").currentregion.value;第一行讀取
$eExcelArray=.application.transpose($eExcelArray) ;行列互換
;.parent.close(false) ;讀取完畢後 把頁面關掉的
EndWith
_ExcelBookClose($eExcel, 0, 0)
$eExcel=0
$eExcelArray 就是你要的陣列(數組)
_ArrayDisplay($eExcelArray) 看一下就知道 回复 5# kk_lee69
你的这种写法有什么学习资料吗?最近要学习下Excel 回复 6# heroxianf
VBA
打開 EXCEL 後 就是 VBA 的寫法
怎麼用其實我也不知道你可以找一下 作者 kevinch 兄 回答的文章
他是 EXCEL VBA 的第一把交椅 回复 7# kk_lee69
好的 多了解一下。 实际上EXCEL操作时效率奇慢无比啊,真奇怪 回复 9# wwwmhk
确实很慢,还不如直接操作CSV格式。 回复 10# heroxianf
老實說 不知道哪裡慢??? 我怎麼用起來很快呢??
能舉實際例子 測試看看嗎 本帖最后由 kk_lee69 于 2015-11-18 14:48 编辑
回复 10# heroxianf
開啟 幾百筆的資料 變成陣列
5百多毫秒 會算慢嗎??
開啟 13000筆資料 每筆資料 有 A~Z 的欄位資料
所以儲存格是 13000*26 個儲存格
轉成數組
3355毫秒算慢嗎?? 回复 12# kk_lee69
我正打算利用空余时间看下VBA,如果你能提供一份你的列子,不胜感激啊。 回复 13# heroxianf
#include <Excel.au3>
#include <Array.au3>
DIM$eExcelArray
$begin =TimerInit()
$eExcel = _ExcelBookOpen(@ScriptDir&"\1.XLS",0,True) ;打開EXCEL表
With $eExcel.ActiveSheet ;Worksheets("")如果要用工作表名稱 就改成這邊
$eExcelArray=.range("a1").currentregion.value;第一行讀取
$eExcelArray=.application.transpose($eExcelArray) ;行列互換
;.parent.close(false) ;讀取完畢後 把頁面關掉的
EndWith
_ExcelBookClose($eExcel, 0, 0)
$eExcel=0
MsgBox(0,"",TimerDiff($begin))
_ArrayDisplay($eExcelArray)
文件在這 你可以測試看看
回复 14# kk_lee69
非常谢谢,看来操作EXCEL表格只能用VBA来,这样速度才能飙升。
页:
[1]
2