Конференция "Базы" » Экспорт из Oracle в Excel [D7]
 
  • Spot (16.11.11 04:59) [0]
    К Oracle подключаюсь через ADO (OraOLEDB.Oracle.1)
    В ексель создаю новую книгу и вывожу так:

    ArrayData := VarArrayCreate([1, RowCount, 1, ColCount], varVariant);
      Querys.DisableControls;
      Querys.First;
      While Not Querys.eof Do
      Begin
          For J := 1 To Querys.FieldDefs.Count Do
          Begin
              ArrayData[Querys.RecNo, J] :=
               Querys.FieldbyName(Querys.FieldDefs.Items[j - 1].DisplayName).value;
          End;
          Querys.Next;
      End;

      Querys.EnableControls;
      Cell1 := WorkBook.WorkSheets[1].Cells[BeginRow+1, BeginCol];
      Cell2 := WorkBook.WorkSheets[1].Cells[BeginRow + RowCount,
       BeginCol + ColCount - 1];
      Range := WorkBook.WorkSheets[1].Range[Cell1, Cell2];
      Range.Value := ArrayData;


    А в екселе вместо числовых данных выводятся денежный формат.
    Например целый идентификатор 12574 выводится как 12574.00р.
    Типы полей запроса заранее неизвестны.
    В чем проблема: в Ексель, или в OLE Provider for Oracle?
  • OW © (16.11.11 09:40) [1]

    > Типы полей запроса заранее неизвестны.

    а после запроса известны

    затем, что то вроде такого
    procedure FormatSheet(Sheet: Variant; BR, BC, ER, EC: Integer; Formats, FormatsLocal: string);
    var
     Range, C1, C2: Variant;
    begin
     C1 := Sheet.Cells[BR, BC];
     C2 := Sheet.Cells[ER, EC];
     Range := Sheet.Range[C1, C2];
     if Formats <> '' then
       Range.NumberFormat := Formats;
     if FormatsLocal <> '' then
       Range.NumberFormatLocal := FormatsLocal;
    end;
 
Конференция "Базы" » Экспорт из Oracle в Excel [D7]
Есть новые Нет новых   [134431   +10][b:0][p:0.001]