Делаю следующее:
Код: Выделить всё
var i,j: integer;
FData: Variant;
Sheet,Range: Variant;
.....
FData:=VarArrayCreate([1,dm1.DBInfo.RecordCount,1,dm1.DBInfo.FieldCount],varVariant);
//заполняем массив данными из ADO таблицы
for i:=1 to VarArrayHighBound(FData,1) do
begin
for j:=1 to VarArrayHighBound(FData,2) do
begin
FData[i,j]:=dm1.DBInfo.Fields.Fields[j-1].Value;
If (dm1.DBInfo.Fields.Fields[j-1].DataType=ftString) or (dm1.DBInfo.Fields.Fields[j-1].DataType=ftWideString) then // проверяю что поле текстовое
FData[i,j]:=' '+dm1.DBInfo.Fields.Fields[j-1].Text; // добавляю символ пробела к началу значения
If dm1.DBInfo.Fields.Fields[j-1].DataType=ftBoolean then // проверяю тип поля
begin
If dm1.DBInfo.Fields.Fields[j-1].Value=true then FData[i,j]:='Да'; //заменяю значение
If dm1.DBInfo.Fields.Fields[j-1].Value=false then FData[i,j]:='Нет';
end;
end;
dm1.DBInfo.Next;
end;
//активируем
Sheet:=ExcelApp.ActiveWorkBook.Sheets[1];
Sheet.Activate;
for i:=0 to DM1.DBInfo.FieldCount-1 do
sheet.cells[1,i+1]:=DM1.DBInfo.Fields.Fields[i].DisplayName; //Вставляю заголовки колонок таблицы
//выделяем диапазон для вставки данных
Range:=Sheet.Range[Sheet.Cells[2,1],Sheet.Cells[VarArrayHighBound(FData,1)+1,VarArrayHighBound(FData,2)]];
Range.Value:=FData; // вставляю данные
т.е. счет имеет вид 43534534534534534534 а вставляется в Excel 43534534534534500000
Пробовал метод
FData[i,j]:=dm1.DBInfo.Fields.Fields[j-1].AsString; - не канает...
Где собака зарыта? в массиве или в Excel? Забыл сказать еще - перед номером нет пробела который я упорно пишу к значению....