-
Здравствуйте! Делаю экспорт в Excel след. образом: procedure TForm.BitBtn6Click(Sender: TObject);
var
XL, XArr: Variant;
i: Integer;
j: Integer;
begin
XArr:=VarArrayCreate([1,DM.ADOQuery1.FieldCount],varVariant);
XL:=CreateOLEObject('Excel.Application'); XL.WorkBooks.add;
XL.visible:=true;
j := 1;
DM.ADOQuery1.First;
while not DM.ADOQuery1.Eof do
begin
i:=1;
while i<=DM.ADOQuery1.FieldCount do
begin
XArr[i] := DM.ADOQuery1.Fields[i-1].Value;
i := i+1;
end;
XL.Range['A'+IntToStr(j),CHR(64+DM.ADOQuery1.FieldCount)+IntToStr(j)].Value := XArr;
DM.ADOQuery1.Next;
j:=j+1;
end;
XL.Range['A1',CHR(64+DM.ADOQuery1.FieldCount)+IntToStr(j)].select;
XL.Selection.Font.Name:='Arial';
XL.Selection.Font.Size:=10;
XL.selection.Columns.AutoFit;
XL.Selection.HorizontalAlignment:=2;
XL.Selection.Borders.LineStyle:=2;
end; В таблице формирую 25 полей. При нажатии кнопки открывается Excel и вылетает ошибка OLE Error 800A03EC и показывает ошибку на строке: XL.Range['A1',CHR(64+DM.ADOQuery1.FieldCount)+IntToStr(j)].select; Если формирую 24 поля и меньше, то проходит все нормально. Подскажите в чем проблема.
-
А сколько в английском языке букаф? :)
-
Для обращения к диазону ячеек рабочего листа вовсе не обязательны все эти прыжки с бубном вокруг имен строк и колонок.
with XL do Range[Cells[left, top], Cells[right, bottom]].Select
где left, top, right, bottom - целочисленные индексы колонок и строк верхней левой и нижней правой ячеет диапазона
-
> Ega23 (28.04.2008 09:39:01) [1]
К сожалению мало.
-
> вовсе не обязательны все эти прыжки с бубном вокруг имен строк и колонок. также как необязательны и вариантные массивы, циклы и остальное. для экспорта. у ячейки есть метод LoadFromRecordset... к range же следует обращается только для настройки формата отображения, но не копирования самих данных.
-
Спасибо, разобрался. CHR(64) диапазона мало было..)
-
> у ячейки есть метод LoadFromRecordset... к range же следует > обращается только для настройки формата отображения, но > не копирования самих данных.
Что-то мне не удалось найти такого метода у объектов Excel-я. Он точно так называется?
-
Тоже искал LoadFromRecordset, метод на самом деле называется CopyFromRecordset и работает с DAO. Есть еще QueryTable для OLEDB и ODBC.
-
var
ExcelApp, Workbook, Range, Cell1, Cell2, ArrayData : Variant;
TemplateFile : String;
BeginCol, BeginRow, i, j : integer;
RowCount, ColCount : integer;
begin
BeginCol := 1;
BeginRow := 5;
RowCount := 100;
ColCount := 50;
ExcelApp := CreateOleObject('Excel.Application');
ExcelApp.Application.EnableEvents := false;
Workbook := ExcelApp.WorkBooks.Add;
ArrayData := VarArrayCreate([1, RowCount, 1, ColCount], varVariant);
for I := 1 to RowCount do
for J := 1 to ColCount do
ArrayData[I, J] := J * 10 + I;
Cell1 := WorkBook.WorkSheets[1].Cells[BeginRow, BeginCol];
Cell2 := WorkBook.WorkSheets[1].Cells[BeginRow + RowCount - 1, BeginCol +
ColCount - 1];
Range := WorkBook.WorkSheets[1].Range[Cell1, Cell2];
Range.Value := ArrayData;
ExcelApp.Visible := true;
-
Помогите пожалуйста.В программе http://narod.ru/disk/26785708000/Avon косметика.rar.html при открытии общего файла в EXCEL выдает ошибку OLE error 800A03EC. Пытался связаться с разработчиком, но по тел. он не отвечает, а ссылка на его сайт не рабочая. Если кто разбирается, помогите решить эту проблему. БОЛЬШОЕ СПАСИБО. e-mail: sergeymk@yandex.ru
|