2015-08-18 29 views
0

我在C#中的函數誰從電子表格如何獲得C#(的OleDbConnection)

public DataSet getXlsData(HttpPostedFileBase file, string path) 
{ 

    var fileName = Path.GetFileName(file.FileName); 

    oledbConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\""); 

    oledbConn.Open(); 
    OleDbCommand cmd = new OleDbCommand(); 
    OleDbDataAdapter oleda = new OleDbDataAdapter(); 

    DataSet ds = new DataSet(); 

    cmd.Connection = oledbConn; 
    cmd.CommandType = CommandType.Text; 
    cmd.CommandText = "SELECT * FROM [Tasks$]"; 

    oleda = new OleDbDataAdapter(cmd); 
    oleda.Fill(ds); 
    oledbConn.Close(); 

    return ds; 

} 

當我要調試,看看有什麼數據集上獲取數據的所有XLS數據,所有的數據都在第一行除外。

任何人都可以幫忙嗎?

感謝

+0

... DataSet中得到了DataTable的列表,並行的數據表OT列表 – MajkeloDev

+0

對不起,沒得到它 !我可以看到我正在調試的數據集上的所有數據,但我看不到第一行。 例如在電子表格中我有: 名稱:|本 姓:| Dupont 而在數據集中,我有表[0]行[0] Col [0] =姓氏不姓名 – aBennouna

+0

如果您使用HDR = Yes,則您的第一行應包含標題名稱,否則會將第一行數據作爲標題名稱和數據從第二行填充行。如果是這種情況,您應該將其設置爲No. – learningNew

回答

0

你的第一行,如果你正在使用HDR應該包含標題名稱=是, 否則它需要你的第一行數據爲標題名稱和數據填充從第二row.If行即是你應該把它設置爲HDR = No。 所以不是,

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"" 

使用此,

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=\"Excel 8.0;HDR=No;IMEX=2\"" 
在第一個表沒有第一行
+0

謝謝,它的工作原理,但我有另一個問題。 在我的電子表格中,我將一些列格式化爲數字,例如當它是1.25時,它在Excel文件和數據表中也變爲1.3。有沒有解決方案來改變列的格式?我的意思是在將數據放到數據集 – aBennouna

+0

之前更改格式,您可以格式化excel列類型,然後通過OLEDB讀取您的excel。有可能是另一種方式,但使用OLEDB我認爲這是不可能的。你可能會發布有關這個問題的單獨問題。 – learningNew