Вниз
Скачать: CL | DM;

Изменение порядка значений при экспорте в 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.028 c
3-1163395467
pavel_guzhanov
2006-11-13 08:24
2007.02.04
Как в Interbase вставлять в поле текущую дату?


2-1168871380
pound
2007-01-15 17:29
2007.02.04
сделать перетаскиваемую форму за любое место


15-1168379903
Bogdan1024
2007-01-10 00:58
2007.02.04
hlp-файлы


2-1169181823
FIL-23
2007-01-19 07:43
2007.02.04
проблемы с совместимостью


4-1158830774
2ded
2006-09-21 13:26
2007.02.04
JOB_INFO_1 PagesPrinted




   Наверх