При импорте из Delphi не передаются запятые
Добавлено: 26 май 2009, 22:06
Ситуация такая: есть программа на Delphi, в ней есть стринггрид, определенная процедура переносит данные из стринггрида в Эксель. Код такой:
Проблема в том, что, например, перенося строку "11,2345764242", Эксель теряет в ней запятую, в итоге в ячейке оказывается 112345764242. Формат ячеек при этом автоматом выставляется в "Числовой". Как можно с этим бороться?
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Проблема решилась. Надо было вместо
XLApp.Workbooks.Add(xlWBatWorkSheet);
использовать
XLApp.Workbooks.open(filename);
а в выходном файле везде поставить текстовый формат ячеек.
Код: Выделить всё
function SaveAsExcelFile(stringGrid: TstringGrid; FileName: string): Boolean;
const
xlWBATWorksheet = -4167;
var
Row, Col: Integer;
GridPrevFile: string;
XLApp, Sheet: OLEVariant;
begin
Result := False;
XLApp := CreateOleObject('Excel.Application');
try
XLApp.Visible := False;
XLApp.Workbooks.Add(xlWBatWorkSheet);
Sheet := XLApp.Workbooks[1].WorkSheets[1];
Sheet.Name := 'My Sheet Name';
for col := 0 to stringGrid.ColCount - 1 do
for row := 0 to stringGrid.RowCount - 1 do
begin
Sheet.Cells[row + 1, col + 1] := stringGrid.Cells[col, row];
//showmessage(stringgrid.Cells[col, row]);
end;
try
XLApp.Workbooks[1].SaveAs(FileName);
Result := True;
except
// Error ?
end;
finally
if not VarIsEmpty(XLApp) then
begin
XLApp.DisplayAlerts := False;
XLApp.Quit;
XLAPP := Unassigned;
Sheet := Unassigned;
end;
end;
end;
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Проблема решилась. Надо было вместо
XLApp.Workbooks.Add(xlWBatWorkSheet);
использовать
XLApp.Workbooks.open(filename);
а в выходном файле везде поставить текстовый формат ячеек.