pchome2000 发表于 2010-11-12 21:14:43

[已解决]可否将数组所有行一次性横向写入excel表??

本帖最后由 pchome2000 于 2010-11-13 14:46 编辑

Local $avArray = [["JPM", "Holger", "Jon", "Larry", "Jeremy"], ["Valik", "Cyberslug", "Nutster", "JdeB", "Tylo"]]
_ArrayDisplay($avArray, "$avArray 为二维数组")
_ArrayDisplay($avArray, "$avArray 为二维数组, 颠倒的", -1, 1)

可否将数组所有行一次性横向写入excel表??

pchome2000 发表于 2010-11-13 14:46:18

本帖最后由 pchome2000 于 2010-11-13 14:47 编辑

;横向写入数组,修改自 _ExcelWriteSheetFromArray 函数。

Func _ExcelWriteSheetRowFromArray($oExcel, ByRef $aArray, $iStartRow = 1, $iStartColumn = 1, $iRowBase = 1, $iColBase = 1)
        ; Test inputs
        If Not IsObj($oExcel) Then Return SetError(1, 0, 0)
        If $iStartRow < 1 Then Return SetError(2, 0, 0)
        If $iStartColumn < 1 Then Return SetError(2, 1, 0)
        If Not IsArray($aArray) Then Return SetError(3, 0, 0)
        Local $iDims = UBound($aArray, 0), $iLastRow = UBound($aArray, 1) - 1, $iLastColumn = UBound($aArray, 2) - 1
        If $iDims <> 2 Then Return SetError(3, 1, 0)
        If $iRowBase > $iLastRow Then Return SetError(4, 0, 0)
        If $iColBase > $iLastColumn Then Return SetError(4, 1, 0)

        Local $iCurrCol
        $iCurrCol = $iStartColumn
        For $r = $iRowBase To $iLastRow
                For $c = $iColBase To $iLastColumn
                        $oExcel.Activesheet.Cells($iStartRow,$iCurrCol).Value = $aArray[$r][$c]
                        $iCurrCol += 1
                Next
                ;$iStartRow += 1
        Next
        Return 1
EndFunc   ;==>_ExcelWriteSheetFromArray

zhuxxpt 发表于 2011-11-1 12:05:41

确实好主意,谢谢您

meteor0330 发表于 2012-10-31 09:37:12

用这个就行了
_ExcelWriteSheetFromArray($oExcel, $aArray, 1, 1, 0, 0)
将一个二维数组一次性写入工作表
后面的4个数字的意思,前两个1是指的单元格的行和列,后面的两个0是数组的参数

yufei8051 发表于 2015-1-18 12:35:12

记上,稍后慢慢学

cross523 发表于 2015-9-21 16:14:25

新手表示看的晕

veve 发表于 2017-3-3 10:56:33

Thanks for your kind sharing!

zxxputian2 发表于 2018-5-31 09:59:01

谢谢楼主修改
页: [1]
查看完整版本: [已解决]可否将数组所有行一次性横向写入excel表??