-
Привет народ! Кто знает че за нафиг? Кидаю данные с таблицы Экселича в прогу таким макаром:
procedure TForm1.BitBtnFromExcelOnClick(Sender: TObject); var WorkBk : _WorkBook; WorkSheet : _WorkSheet; K, R, X, Y : Integer; IIndex : OleVariant; RangeMatrix : Variant; NomFich : WideString; begin NomFich := 'C:\MyDirectory\NameOfFile.xls'; IIndex := 1; XLApp.Connect; // Открываем файл Excel XLApp.WorkBooks.Open(NomFich,EmptyParam,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam, EmptyParam,EmptyParam,0); WorkBk := XLApp.WorkBooks.Item[IIndex]; WorkSheet := WorkBk.WorkSheets.Get_Item(1) as _WorkSheet; // Чтобы знать размер листа (WorkSheet), т.е. количество строк и количество // столбцов, мы активируем его последнюю непустую ячейку WorkSheet.Cells.SpecialCells(xlCellTypeLastCell,EmptyParam).Activate; // Получаем значение последней строки X := XLApp.ActiveCell.Row; // Получаем значение последней колонки Y := XLApp.ActiveCell.Column; // Определяем количество колонок в TStringGrid GenericStringGrid.ColCount := Y; // Сопоставляем матрицу WorkSheet с нашей Delphi матрицей RangeMatrix := XLApp.Range['A1',XLApp.Cells.Item[X,Y]].Value; // Выходим из Excel и отсоединяемся от сервера XLApp.Quit; XLApp.Disconnect; // Определяем цикл для заполнения TStringGrid K := 1; repeat for R := 1 to Y do GenericStringGrid.Cells[(R - 1),(K - 1)] := RangeMatrix[K,R]; Inc(K,1); GenericStringGrid.RowCount := K + 1; until K > X; // Unassign the Delphi Variant Matrix RangeMatrix := Unassigned; end;
На строке RangeMatrix := XLApp.Range['A1',XLApp.Cells.Item[X,Y]].Value; импорт обрывается с мессагой нехватки памяти блин.. (( в таблице всего 10000 строк Как разрулить?
-
После того как поменял Y := XLApp.ActiveCell.Column; на Y := 4; //кол.колонок моей таблицы импорт пошел, ошибка не появилась до его завершения. Кто знает как работает эта команда: XLApp.ActiveCell.Column ? Если определяет кол.активных столбцов с данными то я не уверен что она это правильно делает.. ))
-
все что выше удалить.
открыть книгу через адо и сделать select * from [лист1]
-
>rrrrrrr юзаю огнептиц и IBQuery ))
-
открыть книгу через адо и сделать select * from [лист1]
|