2013-10-14 51 views
0

我使用Delphi 7從COM端口獲取的數據生成CSV文件。現在,這似乎工作正常,因爲任何其他電子表格軟件正確讀取生成的文件(例如Open Office和Libre Office軟件)。 Excel 2007執行以下操作。相反,這兩個列中的值:Excel 2007獲取CSV文件錯誤?

1.976139e-2<TAB>22.98027 

我得到了這兩個列值:生成在任何文本編輯器中打開(記事本++爲例)文件具有正確的價值觀

1.98E+04<TAB>2.298.027 

注意。 這裏有什麼問題?

感謝,

約瑟普

+1

像小數點分隔符這樣的樂趣與千位分隔符混在一起。 –

+0

Excel與十進制/千位分隔符有嚴重問題 –

+0

謝謝。我會在Windows中檢查我的「區域」設置。可能有一些問題,但這並不能解釋爲什麼其他軟件正在讀取它。 –

回答

-2

嘗試使用引號。

"1.976139e-2"<TAB>"22.98027" 
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; 
+0

感謝您的代碼,我會嘗試並重新獲得結果。 :) –