(已解决)提取excel文件中的数据,按需求记录到ini文件中
本帖最后由 风过无痕 于 2019-11-21 19:00 编辑如图所示,按需求将快递单号列提取到ini文件中,请大家帮帮忙吧,谢谢了!test.rar只是示例,快递单号.rar是完整数据
把楼上的稍微改了一下
#include <Excel.au3>
Global $sFilePath = @ScriptDir & "\_IniLtest.ini"
Local $vara = @ScriptDir & "\test.xlsx"
$oExcel = ObjCreate("excel.application")
$oExcel.visible = 0;True
$oWorkbook = $oExcel.workbooks.open($vara)
Local $iRowsA = $oWorkbook.ActiveSheet.UsedRange.Rows.Count; ‘当前工作表中已使用的行数
Dim $a = 1, $b = 1, $c
For $i = 2 To $iRowsA
$sResult = _ExcelReadCell($oWorkbook, $i, 2)
$c &= $sResult & ","
If $a = 10 Then
IniWrite($sFilePath, "单号分组", "分组" & $b, $c)
$a = 1
$b += 1
$c = ""
EndIf
If $i = $iRowsA Then IniWrite($sFilePath, "单号分组", "分组" & $b, $c)
$a += 1
Next
_ExcelBookClose($oExcel) 风过无痕 发表于 2019-11-21 09:56
谢谢帮助,但是您的方法只是把数据提取出来了,并没有分组,生成快递单信息.txt文件。
Local $aArray = IniReadSection($sFilePath, "B")
Local $sComboTxt = '', $sComboTxt1 = '', $sRTXT
If Not @error Then
For $i = 1 To $aArray
For $i = 1 To 10;$aArray
$sRTXT = $aArray[$i]
If Not StringInStr($sComboTxt, $sRTXT) Then $sComboTxt &= $sRTXT & ','
Next
IniWrite(@ScriptDir & "\test.txt", "快递单号", "分组1", $sComboTxt)
If Not @error Then
For $i = $aArraya To $aArray
$sRTXT = $aArray[$i]
If Not StringInStr($sComboTxt1, $sRTXT) Then $sComboTxt1 &= $sRTXT & ','
Next
IniWrite(@ScriptDir & "\test.txt", "快递单号", "分组2", $sComboTxt1)
EndIf
Next
EndIf
#include <Excel.au3>
Global $sFilePath = @ScriptDir & "\_IniLtest.ini"
Local $vara = @ScriptDir & "\test.xlsx"
$oExcel = ObjCreate("excel.application")
$oExcel.visible = 0;True
$oWorkbook = $oExcel.workbooks.open($vara)
Local $iRowsA = $oWorkbook.ActiveSheet.UsedRange.Rows.Count; ‘当前工作表中已使用的行数
MsgBox(0, "", "行数" & $iRowsA)
Local $Z = 0
For $i = 1 To $iRowsA
Local $sResult = _Excel_RangeRead($oWorkbook, Default, "B" & $i)
IniWrite($sFilePath, "B", $Z, $sResult)
$Z += 1
Next
_Excel_Close($oWorkbook)
_Excel_Close($oExcel)
chzj589 发表于 2019-11-21 09:10
谢谢帮助,但是您的方法只是把数据提取出来了,并没有分组,生成快递单信息.txt文件。 风过无痕 发表于 2019-11-21 09:56
谢谢帮助,但是您的方法只是把数据提取出来了,并没有分组,生成快递单信息.txt文件。
可以直接写入
#include <Excel.au3>
Global $sFilePath = @ScriptDir & "\_IniLtest.ini"
Local $vara = @ScriptDir & "\test.xlsx"
$oExcel = ObjCreate("excel.application")
$oExcel.visible = 0;True
$oWorkbook = $oExcel.workbooks.open($vara)
Local $iRowsA = $oWorkbook.ActiveSheet.UsedRange.Rows.Count; ‘当前工作表中已使用的行数
MsgBox(0, "", "行数" & $iRowsA)
Local $sComboTxt = '', $sComboTxt1 = ''
For $i = 2 To 12;$iRowsA
Local $sResult = _Excel_RangeRead($oWorkbook, Default, "B" & $i)
If Not StringInStr($sComboTxt, $sResult) Then $sComboTxt &= $sResult & ','
Next
IniWrite(@ScriptDir & "\test.txt", "快递单号", "分组1", $sComboTxt)
For $i = 13 To $iRowsA
Local $sResult = _Excel_RangeRead($oWorkbook, Default, "B" & $i)
If Not StringInStr($sComboTxt1, $sResult) Then $sComboTxt1 &= $sResult & ','
Next
IniWrite(@ScriptDir & "\test.txt", "快递单号", "分组2", $sComboTxt1)
_Excel_Close($oWorkbook)
_Excel_Close($oExcel)
guland 发表于 2019-11-21 10:45
把楼上的稍微改了一下
版本不一样,无法运行!
>运行 AU3Check (3.3.14.2) 检查代码.参数: D:\AutoIt3au3 文件: D:\AU3调试\Excel中图表\Excel_Chart\test\Excel读取INI.au3
"D:\AU3调试\Excel中图表\Excel_Chart\test\Excel读取INI.au3"(14,52) : 错误: _ExcelReadCell(): 未定义函数 chzj589 发表于 2019-11-21 11:05
版本不一样,无法运行!
>运行 AU3Check (3.3.14.2) 检查代码.参数: D:\AutoIt3au3 文件: D:\AU3调 ...
用这个就行了。
guland 发表于 2019-11-21 10:45
把楼上的稍微改了一下
谢谢帮助,我再自己想想办法把分组最后一个数字后面的“,”去掉 风过无痕 发表于 2019-11-21 13:37
用这个就行了。
版本:autoit3_x64.exe(3.3.14.2)
环境:WIN7 64位
#include <Excel.au3>
Global $sFilePath = @ScriptDir & "\test.txt";@ScriptDir & "\_IniLtest.ini"
Local $vara = @ScriptDir & "\test.xlsx"
$oExcel = ObjCreate("excel.application")
$oExcel.visible = 0;True
$oWorkbook = $oExcel.workbooks.open($vara)
Local $iRowsA = $oWorkbook.ActiveSheet.UsedRange.Rows.Count; ‘当前工作表中已使用的行数
Dim $a = 1, $b = 1, $c
For $i = 2 To $iRowsA
;$sResult = _ExcelReadCell($oWorkbook, $i, 2)
$sResulta = _Excel_RangeRead($oWorkbook, Default, "B" & 1)
$sResult = _Excel_RangeRead($oWorkbook, Default, "B" & $i)
$c &= $sResult & ","
If $a = 10 Then
IniWrite($sFilePath, $sResulta, "分组" & $b, $c)
$a = 1
$b += 1
$c = ""
EndIf
If $i = $iRowsA Then IniWrite($sFilePath, $sResulta, "分组" & $b, $c)
$a += 1
Next
MsgBox(0, "", "行数" & $iRowsA&@CRLF & $sResulta)
_Excel_Close($oExcel)
风过无痕 发表于 2019-11-21 13:38
谢谢帮助,我再自己想想办法把分组最后一个数字后面的“,”去掉
把分组最后一个数字后面的“,”去掉
#include <Excel.au3>
Global $sFilePath = @ScriptDir & "\test.txt";@ScriptDir & "\_IniLtest.ini"
Local $vara = @ScriptDir & "\test.xlsx"
$oExcel = ObjCreate("excel.application")
$oExcel.visible = 0;True
$oWorkbook = $oExcel.workbooks.open($vara)
Local $iRowsA = $oWorkbook.ActiveSheet.UsedRange.Rows.Count; ‘当前工作表中已使用的行数
Dim $a = 1, $b = 1, $c
For $i = 2 To $iRowsA
;$sResult = _ExcelReadCell($oWorkbook, $i, 2)
$sResulta = _Excel_RangeRead($oWorkbook, Default, "B" & 1)
$sResult = _Excel_RangeRead($oWorkbook, Default, "B" & $i)
$c &= $sResult & ","
Local $sString = StringTrimRight($c, 1) ; 删除字符串右起 1个字符.
If $a = 10 Then
IniWrite($sFilePath, $sResulta, "分组" & $b, $sString)
$a = 1
$b += 1
$c = ""
EndIf
If $i = $iRowsA Then IniWrite($sFilePath, $sResulta, "分组" & $b, $sString)
$a += 1
Next
MsgBox(0, $iRowsA, "写入完成" ,1)
_Excel_Close($oExcel)
chzj589 发表于 2019-11-21 14:08
把分组最后一个数字后面的“,”去掉
谢谢,谢谢,万分感谢,问题完美解决! 风过无痕 发表于 2019-11-21 14:13
谢谢,谢谢,万分感谢,问题完美解决!
我这几天在整理以前的Excel与ListView列表互导修改,所以就顺手帮到你。
chzj589 发表于 2019-11-21 14:27
我这几天在整理以前的Excel与ListView列表互导修改,所以就顺手帮到你。
看界面好强大的说……………… 不邀自来,我也来强答一波……………… 数组法……………… 借用楼上几位大大的代码和kevinch 大大的犀利代码
页:
[1]
2