heroxianf 发表于 2015-11-17 14:35:44

关于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表格,后台打开就好, 请帮忙指点一下。

heroxianf 发表于 2015-11-17 17:35:36

#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)
测试了一下 这样也可以读取每个值,希望高人指点一下,有没有更加好的代码。

kk_lee69 发表于 2015-11-17 18:02:34

回复 2# heroxianf

晚點給你代碼 根本不用管 分隔符號是甚麼

heroxianf 发表于 2015-11-17 18:04:34

回复 3# kk_lee69

非常谢谢,那晚上我等着哦。

kk_lee69 发表于 2015-11-17 21:06:19

本帖最后由 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) 看一下就知道

heroxianf 发表于 2015-11-17 21:53:05

回复 5# kk_lee69


    你的这种写法有什么学习资料吗?最近要学习下Excel

kk_lee69 发表于 2015-11-17 22:05:12

回复 6# heroxianf

VBA

打開 EXCEL 後 就是 VBA 的寫法

怎麼用其實我也不知道你可以找一下 作者 kevinch 兄 回答的文章
他是 EXCEL VBA 的第一把交椅

heroxianf 发表于 2015-11-17 22:42:20

回复 7# kk_lee69


    好的   多了解一下。

wwwmhk 发表于 2015-11-18 12:06:24

实际上EXCEL操作时效率奇慢无比啊,真奇怪

heroxianf 发表于 2015-11-18 13:28:41

回复 9# wwwmhk

确实很慢,还不如直接操作CSV格式。

kk_lee69 发表于 2015-11-18 14:15:38

回复 10# heroxianf

老實說 不知道哪裡慢??? 我怎麼用起來很快呢??

能舉實際例子 測試看看嗎

kk_lee69 发表于 2015-11-18 14:43:46

本帖最后由 kk_lee69 于 2015-11-18 14:48 编辑

回复 10# heroxianf
開啟 幾百筆的資料 變成陣列

5百多毫秒 會算慢嗎??

開啟 13000筆資料 每筆資料 有 A~Z 的欄位資料


所以儲存格是 13000*26 個儲存格

轉成數組

3355毫秒算慢嗎??

heroxianf 发表于 2015-11-18 16:25:34

回复 12# kk_lee69

我正打算利用空余时间看下VBA,如果你能提供一份你的列子,不胜感激啊。

kk_lee69 发表于 2015-11-18 16:47:39

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

文件在這 你可以測試看看

heroxianf 发表于 2015-11-18 17:12:14

回复 14# kk_lee69


    非常谢谢,看来操作EXCEL表格只能用VBA来,这样速度才能飙升。
页: [1] 2
查看完整版本: 关于EXCEL数据拆分问题[已解决]