Форум: "Базы";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];
ВнизИзменение порядка значений при экспорте в Excel Найти похожие ветки
← →
petrovskyi (2006-11-16 13:49) [0]Фигня какая-то получается. Есть ADODataSet полученный из хранимой процедуры. В EhDbGrid (EhLib v.4.1, недавно установил) вся информация отображается правильно. А вот при выбросе информации в Excel в некоторых полях (на первый взгляд абсолютно без системы, потому что все числовые поля в Delphi имеют тип BCDField) значение учеличивается на 4 порядка. Причем это только во вновь разрабатываемом модуле. В старых модулях все нормально. Есть, правда еще один ньюанс: на днях переустанавливал ПО на компьютере и вместо MS Office 2000 установил MS Office 2003, а в Delphi используется модуль Excel2000.
Кто что может объяснить?
← →
Vadim.Spb (2006-11-16 13:58) [1]Чтобы не попадать на такие и прочие ошибки - проще один раз освоить экспорт в Excel не через компоненты, а своим кодом.
← →
Petrovskyi (2006-11-16 14:12) [2]В том то и дело, что работаю не через компоненты, а аналогичный код в других модулях, написанных ранее, рабатает нормально.
← →
ANB © (2006-11-16 14:45) [3]
> Petrovskyi (16.11.06 14:12) [2]
преобразуй в строку и не мучайся. а в экселе сделай формат ячейки числовой
← →
Vadim.Spb (2006-11-16 15:25) [4]Petrovskyi [2]
Так покажи код!
← →
Petrovskyi (2006-11-16 15:38) [5]>ANB [3]
Так преобразовываю и форматирую
> Vadim.Spb [4]
вот код
...
ISheet.Range["B7:B12", EmptyParam].NumberFormat := "# ### ##0";
ISheet.Range["C6:C12", EmptyParam].NumberFormat := "# ### ##0";
ISheet.Range["D6:D12", EmptyParam].NumberFormat := "# ### ##0";
ISheet.Range["E6:E12", EmptyParam].NumberFormat := "# ##0"+DecimalSeparator+"00";
MngApprArray := VarArrayCreate([0,5,0,4], varVariant);
with ADODataSet02 do begin
first;
i := 0;
while not eof do begin
MngApprArray[i,0] := FieldByName("Field1").asString;
MngApprArray[i,1] := CurrToStr(FieldByName("Field2").AsCurrency);
MngApprArray[i,2] := CurrToStr(FieldByName("Field3").AsCurrency);
MngApprArray[i,3] := CurrToStr(FieldByName("Field4").AsCurrency);
MngApprArray[i,4] := FloatToStr(FieldByName("Field5").Value);
i := i + 1;
next;
end;
end;
IRange.Value := MngApprArray;
← →
ANB © (2006-11-16 16:31) [6]
> Petrovskyi (16.11.06 15:38) [5]
Убрать формат попробуй
← →
Petrovskyi (2006-11-16 16:51) [7]> Vadim.Spb [6]
Попробовал - не помогло.
А помогло - вывод самих полей без преобразования в строку.
Почему так - не понимаю. Но вопрос закрыт.
Всем спасибо за помощь.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.045 c