Что нового

Манипуляции с массивом из excel

fgejtred

Новичок
Сообщения
3
Репутация
0
Добрый день

Я новичок поэтому не понимаю почему следующий код вызывает ошибку:
Код:
#include <Excel.au3>
#include <Array.au3>

$oExcel = _ExcelBookOpen("Книга1.xls")
_ExcelSheetActivate($oExcel,"Лист1")
$result=_ExcelReadSheetToArray($oExcel)
_ExcelBookClose($oExcel)
_ArrayDisplay($result)
Dim $one
$one = $result[1]

Ошибка возникает на последней строке, когда я пытаюсь извлечь одномерный массив из двухмерного.

Используйте для AutoIt кода тег [autoit]
autoit.gif

madmasles.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
fgejtred [?]
Ошибка возникает на последней строке, когда я пытаюсь извлечь одномерный массив из двухмерного.
Что Вы хотите получить в итоге?
Если, например, это двухмерный массив:
Код:
1|11|111
2|22|222
3|33|333
Какой одномерный массив из него Вы хотите получить?
 
Автор
F

fgejtred

Новичок
Сообщения
3
Репутация
0
madmasles сказал(а):
fgejtred [?]
Ошибка возникает на последней строке, когда я пытаюсь извлечь одномерный массив из двухмерного.
Что Вы хотите получить в итоге?
Если, например, это двухмерный массив:
Код:
1|11|111
2|22|222
3|33|333
Какой одномерный массив из него Вы хотите получить?
Мне нужно извлечь строки excel таблицы последовательно.
То есть 2, 22, 222
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
fgejtred
Можно примерно так сделать.
Код:
#include <Array.au3>

Opt('MustDeclareVars', 1)

Global $a2D[3][3] = [[1, 11, 111],[2, 22, 222],[3, 33, 333]], $a1D

_ArrayDisplay($a2D, '2D_Array')
ConsoleWrite(' ' & Chr(166) & ' |0| 1| 2 |' & @LF & ' ' & Chr(166) & ' ' & StringReplace(StringFormat('%010d', '0'), '0', Chr(151), 0, 2) & @LF)
For $i = 0 To 2
	ConsoleWrite($i & Chr(166) & ' |')
	For $j = 0 To 2
		ConsoleWrite($a2D[$i][$j] & '|')
	Next
	ConsoleWrite(@LF)
Next

For $i = 0 To 2
	$a1D = _Array_Extract_1D_from_2D($a2D, $i)
	_ArrayDisplay($a1D, 'Column = ' & $i)
Next
For $i = 0 To 2
	$a1D = _Array_Extract_1D_from_2D($a2D, $i, 0)
	_ArrayDisplay($a1D, 'Row = ' & $i)
Next

Func _Array_Extract_1D_from_2D($a_2D_Array, $i_Num, $i_Column = 1)
	If UBound($a_2D_Array, 0) <> 2 Then Return SetError(1, 0, -1)

	Local $i_Ub

	If $i_Column Then
		$i_Ub = UBound($a_2D_Array, 1)
	Else
		$i_Ub = UBound($a_2D_Array, 2)
	EndIf
	If $i_Num > $i_Ub - 1 Then Return SetError(2, 0, -1)
	Local $a_Return[$i_Ub]
	If $i_Column Then
		For $i = 0 To $i_Ub - 1
			$a_Return[$i] = $a_2D_Array[$i][$i_Num]
		Next
	Else
		For $i = 0 To $i_Ub - 1
			$a_Return[$i] = $a_2D_Array[$i_Num][$i]
		Next
	EndIf
	Return $a_Return
EndFunc   ;==>_Array_Extract_1D_from_2D
 
Верх