2014-02-19 28 views
0

我有問題讀取值從Excel中,我當地的時間設置爲MM/dd/YYYY,而我想讀取爲dd/MM/YYYY,因爲它是在Excel中。 Unfortunally莫名其妙應用正在改變從Excel值到我的本地時間,我試圖用這個文化背景,月份恢復爲天

Thread.CurrentThread.CurrentCulture = new CultureInfo("pl-PL"); 

雖然波蘭文化是dd/MM/YYYY但它並沒有幫助,我能做些什麼?

來讀取Excel我用interoop這樣的:

var application = new Application(); 
var workbooks = application.Workbooks; 
var workbook = workbooks.Open(file); 

然後另存爲CVS和讀取CSV更快地讀取它

var tempFile = file.Substring(0, file.Length - 4) + ".csv"; 

workbook.SaveAs(tempFile, XlFileFormat.xlCSVWindows); 

var reader = new StreamReader(File.OpenRead(tempFile)); 
reader.ReadLine(); 

while (!reader.EndOfStream) 

,問題是,隨着與語言環境我得到了2/25/2013,如果我設置爲PL,我得到了25/2/2013,我會始終擁有第二個價值。

+0

你是如何檢索從Excel的價值觀?您是直接與Excel交互,還是隻是從CSV或XLS讀取?請顯示您讀取數據的方式。 –

+0

看到導致問題的代碼行會很有用。您是否使用DateTime.Parse()函數來執行此操作或其他操作? –

回答

1

如果您從Excel以MM/dd/yyyy的形式獲取Date as String,則可以將其轉換爲dd/MM/yyyy

您需要解析從Excel中使用如下方法DateTime.ParseExact()日期字符串:

試試這個:

 String date = "02/21/2014"; 
     DateTime dt = DateTime.ParseExact(date, "MM/dd/yyyy", CultureInfo.InvariantCulture); 
     date=dt.ToString("dd/MM/yyyy"); 
+0

在最後一行中,您不會再將'CultureInfo.InvariantCulture'傳遞給'ToString'方法。你也不會「逃避」斜槓'/'字符。這意味着斜線將被替換爲任何字符串是當前'CultureInfo'的日期分隔符。這是打算嗎? –