Вывод номера счета в ячейку Excel

Тема в разделе "Delphi - Компоненты", создана пользователем semantics, 31 май 2010.

  1. semantics

    semantics Гость

    Проблема - обнуление половины номера счета

    При выводе длинного числа в Excel- 20-значный номер счета (тип переменной ACC - string)
    Ap.Cells[i,7]:=ACC;

    вторая половина номера выдается нулями:
    вместо - 40702810500000000385
    выдается - 40702810500000000000

    Если задать текстовый формат ячейки Excel - в ячейке появляется галочка - признак ошибки преобразования числа
    Более короткие числа выдаются без проблем
     
  2. sinkopa

    sinkopa Well-Known Member

    Регистрация:
    17 июн 2009
    Сообщения:
    344
    Симпатии:
    9
    Добавьте апостроф перед числовой строкой.
    Excel (для ячеек общего формата ) преффиксный апостоф воспринимает как команду отображать данные ячейки в виде строки.
    Сам апостроф при этом в ячейке не отображается.
    Код (Delphi):
    Ap.Cells[i,7] := '''' + ACC;
    Но более правильно все же работать с Экселем через интерфейсы экспортируемые юнитом ExcelXP.pas

    Код (Delphi):
    uses
    ExcelXP, OfficeXP, ActiveX;
    ...
    type
    TForm1 = class(TForm)
    ExcelApplication1: TExcelApplication;
    ExcelWorksheet1: TExcelWorksheet;
    ...

    begin
    ExcelApplication1.Connect;
    ...
    ExcelWorksheet1.ConnectTo(ExcelApplication1.ActiveWorkbook.ActiveSheet as _Worksheet);
    ...
    // вот так
    ExcelWorksheet1.Cells.Item[i,7].Value := '''' + ACC {'40702810500000000385'};
    // или так
    ExcelWorksheet1.Cells.Item[i,7].Text := '''' + ACC {'40702810500000000385'};
    // а еще лучше явно указать формат данных
    ExcelWorksheet1.Cells.Item[i,7].NumberFormat := '@';
    ExcelWorksheet1.Cells.Item[i,7].Value := ACC {'40702810500000000385'};
    ...
    ExcelApplication1.Visible[0] := true;
    ExcelWorksheet1.Disconnect;
    ExcelApplication1.Disconnect;
    end;
     
Загрузка...

Поделиться этой страницей