我正在使用Delphi 7从COM端口获取的数据生成CSV文件。现在,这似乎工作正常,因为任何其他电子表格软件正确读取生成的文件(例如,Open Office和Libre Office spreadshhet软件)。 Excel 2007执行以下操作。而不是这两个列值:
1.976139e-2<TAB>22.98027
我得到了这两个列值:
1.98E+04<TAB>2.298.027
请注意,在任何文本编辑器(例如Notepad ++)中打开的生成文件都具有正确的值。 这可能是什么问题?
谢谢,
约瑟普布罗兹
答案 0 :(得分:3)
如果Delphi中的设置不符合您的需求,您可以在加载CSV之前更改它们。但是你应该确保之后重置它们。
var
Excel, WorkBook: Variant;
KeepDecimalSeparator, KeepThousandsSeparator: String;
KeepUseSystem: Boolean;
begin
Excel := CreateOleObject('Excel.Application');
Excel.Visible := true;
try
KeepDecimalSeparator := Excel.DecimalSeparator;
KeepThousandsSeparator := Excel.ThousandsSeparator;
KeepUseSystem := Excel.UseSystemSeparators;
Excel.DecimalSeparator := '.';
Excel.ThousandsSeparator := ',';
Excel.UseSystemSeparators := false;
WorkBook := Excel.WorkBooks.Open('C:\Temp\1.csv');
finally
Excel.DecimalSeparator := KeepDecimalSeparator;
Excel.ThousandsSeparator := KeepThousandsSeparator;
Excel.UseSystemSeparators := KeepUseSystem;
end;
end;
答案 1 :(得分:-2)
尝试使用引号。
"1.976139e-2"<TAB>"22.98027"