Функция _ExcelReadSheetToArray

         Описание функции


_ExcelReadSheetToArray

Возвращает двумерный массив заполненный данными из указанного количества строк и столбцов активного листа открытой рабочей книги Excel

#include <Excel.au3>
_ExcelReadSheetToArray($oExcel [, $iStartRow = 1 [, $iStartColumn = 1 [, $iRowCnt = 0 [, $iColCnt = 0 [, $iColShift = False]]]]])

Параметры

$oExcel Ссылка на COM-объект "Excel.Application" полученная ранее вызванными _ExcelBookOpen(), _ExcelBookNew(), или _ExcelBookAttach()
$iStartRow [необязательный] Целевая строка, с которой начнется выборка данных в массив (по умолчанию = 1)
$iStartColumn [необязательный] Целевой столбец, с которого начнется выборка данных в массив (по умолчанию = 1)
$iRowCnt [необязательный] Количество вбираемых в возвращаемый массив строк вниз относительно целевой строки (по умолчанию = 0(все))
$iColCnt [необязательный] Количество вбираемых в возвращаемый массив столбцов вправо относительно целевой строки (по умолчанию = 0(все))
$iColShift [необязательный] Флаг, определяющий нижнюю границу индексов создаваемого массива (Option Base) (True = 0, False = 1) (по умолчанию = False)

Возвращаемое значение

Успех:Возвращает двухмерный массив заполненный данными из указанного количества строк и столбцов активного листа открытой рабочей книги Excel
Ошибка:Возвращает 0, Устанавливает значение флага ошибки @error:
@error:0 - Скрипт завершил работу без ошибок
1 - Ошибка OLE/COM ($oExcel), возможно указанный объект не существует
2 - Недопустимое значение параметра(ов) определяющих целевую строку/столбец ($iStartRow, $iStartColumn)
3 - Недопустимое значение параметра(ов) определяющих количество вбираемых в массив строк/столбцов ($iColCnt, $iRowCnt)
@extended:0 - Ошибка в значении строки
1 - Ошибка в значении столбца

Примечания

Для того чтобы индексы возвращаемого двухмерного массива соответствовали формату адресов ячеек R1C1(номер строки/номер столбца),
"Option Base"($iColShift) возвращаемого массива должен быть определен = False (по умолчанию).
----------------------------------------------------------------------------------------
Внимание!!! документы разных форматов MS Office имеют различные ограничения по количеству столбцов и строк:
*.xls (формат xlExcel8, стандартный для MS Office 2003,97,95) имеет ограничения в 255 столбцов 65 535 строк
*.xlsx,*.xlsb,*.xlsm (XML-форматы MS Office 2007-2010) имеют ограничения в 16 384 столбца и 1 048 576 строк

Пример

; ***************************************
; Пример 1 - Возвращает двухмерный массив $aArray заполненный данными из активного листа открытой рабочей книги Excel, несколько комбинаций
; ***************************************

#include <Excel.au3>
#include <Array.au3>

Local $oExcel = _ExcelBookNew() ; Создаем новую рабочую книгу

; Циклически заполняем диапазон ячеек случайными числами
For $y = 1 To 10
    For $x = 1 To 15
        _ExcelWriteCell($oExcel, Round(Random(1000, 10000), 0), $x, $y) ; Записываем в ячейку целое случайное число из диапазона от 1000 до 10000
    Next
Next

$aArray = _ExcelReadSheetToArray($oExcel)
_ArrayDisplay($aArray, "Использовались параметры 'по умолчанию'")

$aArray = _ExcelReadSheetToArray($oExcel, 2)
_ArrayDisplay($aArray, "Начиная со второй строки")

$aArray = _ExcelReadSheetToArray($oExcel, 1, 2)
_ArrayDisplay($aArray, "Начиная со второго столбца")

$aArray = _ExcelReadSheetToArray($oExcel, 1, 1, 5)
_ArrayDisplay($aArray, "Считывание 5 строк")

$aArray = _ExcelReadSheetToArray($oExcel, 1, 1, 0, 2)
_ArrayDisplay($aArray, "Считывание 2 столбцов")

$aArray = _ExcelReadSheetToArray($oExcel, 2, 3, 4, 5)
_ArrayDisplay($aArray, "Начинает считывание с 2 строки и 3 столбца, захватывает 4 строки и 5 столбцов")

$aArray = _ExcelReadSheetToArray($oExcel, 1, 1, 0, 0, True) ; Нижняя граница индексов создаваемого массива (Option Base) выбрана равной 0 (True)
_ArrayDisplay($aArray, "Индексы массива не совпадают с адресами R1C1 из-за Option Base = 0")

MsgBox(4096, "_ExcelReadSheetToArray | Пример 1", "Демонстрация завершена, нажмите ОК")
_ExcelBookSaveAs($oExcel, @TempDir & "\Temp.xls", "xls", 0, 1) ; Сохраняем файл в директории временных файлов, перезаписывая если необходимо.
_ExcelBookClose($oExcel) ; Закрываем рабочую книгу