Форум: "Начинающим";
Текущий архив: 2007.06.17;
Скачать: [xml.tar.bz2];
ВнизОшибка "OLE error 800A03EC" при передаче StringGrid в Excel Найти похожие ветки
← →
Darvin © (2007-05-25 13:46) [0]Здрасвтвуйте!
Передаю данные из StringGrid в Excel таким способом:
function SaveAsExcelFile(AGrid: TStringGrid; ASheetName, AFileName: string): Boolean;
const
xlWBATWorksheet = -4167;
var
Row, Col: Integer;
GridPrevFile, S: string;
XLApp, Sheet, Data: OLEVariant;
i, j: Integer;
D : Double;
function RefToCell(ARow, ACol: Integer): string;
begin
Result := Chr(Ord("A") + ACol - 1) + IntToStr(ARow);
end;
begin
Data := VarArrayCreate([1, AGrid.RowCount, 1, 20{AGrid.ColCount}], varVariant);
for i := 0 to 20{AGrid.ColCount} - 1 do
for j := 0 to AGrid.RowCount - 1 do begin
S := AGrid.Cells[i, j];
// Конвертирование в число
try
D := StrToFloat (S);
Data[J + 1, I + 1] := D;
except
Data[J + 1, I + 1] := S;
end;
end;
Result := False;
XLApp := CreateOleObject("Excel.Application");
try
XLApp.Visible := True;
XLApp.Workbooks.Add(xlWBatWorkSheet);
Sheet := XLApp.Workbooks[1].WorkSheets[1];
Sheet.Name := ASheetName;
Sheet.Range[RefToCell(1, 1),
RefToCell(AGrid.RowCount, 20{AGrid.ColCount})].Value := Data;
finally
end;
end;
Так вот, для небольших таблиц, например 20 x 15, все работает, а для таблиц 61 x 15 выдается ошибка OLE error 800A03EC в строке:
Sheet.Range[RefToCell(1, 1),
RefToCell(AGrid.RowCount, 20{AGrid.ColCount})].Value := Data;
Как можно такое победить?
← →
Darvin © (2007-05-25 13:48) [1]Прошу прощения, для возникновения ошибки комментарии {AGrid.ColCount} надо раскрыть, а 20, стоящую перед ними удалить. Если этого не сделать, ошибки не возникнет.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.06.17;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.043 c