求助AU3如何对EXCEL某列进行升序排序
比如我要升序排序F列,代码该怎么写 Local $oExcel = ObjCreate("Excel.Application")With $oExcel
.SheetsInNewWorkbook = 1
.Visible = 1
.WorkBooks.Add
.ActiveWorkbook.Worksheets(1).Name = "sheet"
EndWith
Local $array_1 = ["Id","Sort","Sort1","money","Sort3"]
Local $array_2 = ["0001","afan","pusofalse","123435","netegg"]
Local $array_3 = ["0002","haijie1223","lynfr8","98764","Maths"]
Local $array_4 = ["0003","menfan1","menfan1","34522","hzxymkb"]
For $i = 0 To Ubound($array_1) - 1
$oExcel.Activesheet.Cells(1,($i+1)).Value = $array_1[$i]
$oExcel.Activesheet.Cells(2,($i+1)).Value = $array_2[$i]
$oExcel.Activesheet.Cells(3,($i+1)).Value = $array_3[$i]
$oExcel.Activesheet.Cells(4,($i+1)).Value = $array_4[$i]
Next
; 对文件进行升序排序,而不考虑标题行列标题
Local $nb_colonne = $oExcel.ActiveSheet.UsedRange.Columns.Count ; 计算列的数量
Local $nb_ligne = $oExcel.ActiveSheet.UsedRange.Rows.Count ; 计算行数
$oExcel.Range($oExcel.Cells(2,1), $oExcel.Cells($nb_ligne,$nb_colonne)).Sort ($oExcel.Range("D1"),1)
是这意思吧? lpxx 发表于 2018-9-22 23:30
是这意思吧?
谢谢老师,就是这个意思。还有个问题想请教一下。有时候从listview控件读取所有值写入excel会崩溃。需要设置错误返回还是?我把代码贴上Local $ListColumnCount = _GUICtrlListView_GetColumnCount($ListView3)
Local $ListRowCount = _GUICtrlListView_GetItemCount($ListView3)
If $ListRowCount <> 0 Then
Dim $ItemArray[$ListColumnCount]
For $i = 0 To $ListRowCount - 1
$aItem = _GUICtrlListView_GetItemTextString($ListView3, $i)
_ArrayAdd($ItemArray, $aItem, 0)
Next
_ArrayDelete($ItemArray, 0)
Local $oAppl = _Excel_Open()
Local $oWorkbook = _Excel_BookOpen($oAppl, @ScriptDir & "\拣货单.xlsx")
$oWorkbook.activesheet.cells(2, 1).resize($ListRowCount, $ListColumnCount) = $oWorkbook.application.transpose($ItemArray)
$oWorkbook.activesheet.Range("A1:F" & $ListRowCount + 1).Select ;选中区域
$oWorkbook.activesheet.range("A1:F" & $ListRowCount).borders.linestyle = 1 ;设置边框
EndIf 121044246 发表于 2018-9-23 00:01
谢谢老师,就是这个意思。还有个问题想请教一下。有时候从listview控件读取所有值写入excel会崩溃。需要 ...
这样试试
Local $ListColumnCount = _GUICtrlListView_GetColumnCount($ListView3)
Local $ListRowCount = _GUICtrlListView_GetItemCount($ListView3)
If $ListRowCount <> 0 Then
Dim $ItemArray[$ListColumnCount]
For $i = 0 To $ListRowCount - 1
$aItem = _GUICtrlListView_GetItemTextString($ListView3, $i)
_ArrayAdd($ItemArray, $aItem, 0)
Next
_ArrayDelete($ItemArray, 0)
; Local $oAppl = _Excel_Open()
;Local $oWorkbook = _Excel_BookOpen($oAppl, @ScriptDir & "\拣货单.xlsx")
;Local $oAppl = _Excel_Open()
;Local $oWorkbook = _Excel_BookOpen($oAppl, @ScriptDir & "\拣货单.xlsx")
Local $oWorkbook = ObjCreate("Excel.Application") ; 创建Excel对象
$oWorkbook.Visible = 1
$oWorkbook.SheetsInNewWorkbook = 1 ; 设置要创建的工作表数量
Local $oBook = $oWorkbook.Workbooks.Add ; 在Excel对象中创建工作簿对象
Local $oSheet = $oBook.Sheets(1) ; 为工作表1创建工作表对象(名称或索引)
$oSheet.Name = 'Sheet1' ; 更改属性名称
$oWorkbook.activesheet.cells(2, 1).resize($ListRowCount, $ListColumnCount) = $oWorkbook.application.transpose($ItemArray)
$oWorkbook.activesheet.Range("A1:F" & $ListRowCount + 1).Select ;选中区域
$oWorkbook.activesheet.range("A1:F" & $ListRowCount).borders.linestyle = 1 ;设置边框
EndIf
本帖最后由 121044246 于 2018-9-24 23:07 编辑
chzj589 发表于 2018-9-24 11:11
这样试试
好的。就是偶尔会出现错误,今天出现了一次。下面错误代码看不懂哪里出错,直接闪退了.!>11:08:24 AutoIt3.exe 结束.rc:-1073741819
+>11:08:24 AccAu3Wrapper 完成.
>Exit code: 3221225477 Time: 3151
主要是经常要导拣货单。所以我做好模板直接把数据写到模板就可以直接打印了,新建的话每次都要调整单元格宽度,高度,还有页边距什么的. 主界面
拣货单列表
打开设置好的EXCEL模板,从A2开始写入列表数据,自动选中,自动框线有数值区域,自动排序库位
正常情况下是没问题,就是偶尔会出现错误,数据没写入就直接闪退,控制台回显代码如下
!>11:08:24 AutoIt3.exe 结束.rc:-1073741819
+>11:08:24 AccAu3Wrapper 完成.
>Exit code: 3221225477 Time: 3151
本帖最后由 chzj589 于 2018-9-26 18:45 编辑
121044246 发表于 2018-9-24 23:15
主界面
拣货单列表
试试:
Local $ListColumnCount = _GUICtrlListView_GetColumnCount($ListView3)
Local $ListRowCount = _GUICtrlListView_GetItemCount($ListView3)
If $ListRowCount <> 0 Then
Dim $ItemArray[$ListColumnCount]
For $i = 0 To $ListRowCount - 1
$aItem = _GUICtrlListView_GetItemTextString($ListView3, $i)
_ArrayAdd($ItemArray, $aItem, 0)
Next
_ArrayDelete($ItemArray, 0)
Local $oExcel = _Excel_Open()
Local $sWorkbook = @ScriptDir & "\拣货单.xlsx";GUICtrlRead($CA_Inputb29);@ScriptDir & "\Book13.xlsx";"\.xls"
Local $oWorkbook = _Excel_BookOpen($oExcel, $sWorkbook)
$oWorkbook.activesheet.cells(2, 1).resize($ListRowCount, $ListColumnCount) = $oWorkbook.application.transpose($ItemArray)
$oWorkbook.activesheet.Range("A1:F" & $ListRowCount + 1).Select ;选中区域
$oWorkbook.activesheet.range("A1:F" & $ListRowCount).borders.linestyle = 1 ;设置边框
EndIf
_Excel_Close($oExcel)
If @error Then Exit MsgBox(0, "Excel UDF: _Excel_Close 示例 2", "关闭 Excel 应用时出错." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
Sleep(2000)
$aProcesses = ProcessList("Excel.exe")
;MsgBox(0, "Excel UDF: _Excel_Close 示例 2", "函数成功结束." & @CRLF & @CRLF & $aProcesses & " Excel 实例仍在运行.")
chzj589 发表于 2018-9-26 18:42
试试:
现在有时候也会出现$oWorkbook.activesheet.cells(2, 1).resize($ListRowCount, $ListColumnCount) = $oWorkbook.application.transpose($ItemArray)
$oWorkbook.activesheet.cells(2, 1).resize($ListRowCount, $ListColumnCount) = $oWorkbook^ ??
->00:57:13 AutoIt3.exe 执行脚本结束. 退出码: 1
+>00:57:13 AutoIt3Wrapper 完成脚本处理. chzj589 发表于 2018-9-26 18:42
试试:
会不会因为x64系统编译x86应用的问题? 121044246 发表于 2018-9-27 01:02
会不会因为x64系统编译x86应用的问题?
导出的列数与Excel表格的列数是否一样? chzj589 发表于 2018-9-27 09:03
导出的列数与Excel表格的列数是否一样?
刚才试了一下,不行。
闪了一下就退出。
用GUICtrlCreateListView数据导入HTML表格试试
http://www.autoit3.cn/thread-34459-1-1.html chzj589 发表于 2018-9-27 16:17
刚才试了一下,不行。
闪了一下就退出。
用GUICtrlCreateListView数据导入HTML表格试试
好的,我先收藏了.
这几天忙没空.等过几天有空了再研究一下.谢谢了
页:
[1]