2012-06-04 49 views
0

這裏是我的代碼來讀取上傳的Excel文件。過去3個月工作非常好。讀取鎖定的Excel(.xlsx)文件,使用C#

var connectionString = GetOleDbConnectionString(file); 

using (var dataAdapter = new OleDbDataAdapter("select * from [Sheet1$]",   connectionString)) 
{ 
    dataAdapter.Fill(ds, tableCount.ToString()); 
} 

private static string GetOleDbConnectionString(string file) 
{ 
    var fileExtension = Path.GetExtension(file); 

    if (fileExtension.EqualsCCIC(".xlsx")) 
    { 
     return @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 12.0;".F(file); 
    } 
} 

問題:上傳Excel文件了 「起始日期」 作爲第一列。但是這個專欄也有員工姓名和日期(我需要閱讀此員工姓名才能處理此工作表)。

我遇到了一個新的Excel文件(Excel2007 .xlsx)。當我上傳新文件(其中包含員工姓名和日期)時,只會從列中讀取日期並忽略員工姓名。我的數據集顯示(在調試時)數據表中的單元格爲空字符串。根據業務邏輯,我需要知道這些日期屬於哪個員工。我刪除了整個工作表的鎖(單元格格式>>保護>>鎖),但仍然沒有用。我怎麼解決這個問題?我沒有線索......

它正在成功讀取舊文件(2007 .xlsx)我不明白它是什麼讓OLEDB在Date列中隱藏字符串?

回答

1

所以你說新的Excel文件是問題?如果是這樣的......

  • 檢查文件中的數據(尤其是在員工的姓名列第8行)
  • 從新文件以已知的文件中的數據複製到工作

Accessing Excel Spreadsheet with C# occasionally returns blank value for some cells 退房ABHI在上面的鏈接(尤其是點1和2)

+0

謝謝,我只是修改我的連接字符串的答案。在擴展屬性中包含HDR =否; IMEX = 1。 – Jayee

相關問題