2013-07-08 89 views
1

我無法解決了以下問題:DataGridView的列值顯示問題

  • 連接到Excel(OLEDB連接)
  • 所有數據取到datagridview

示例源從Excel中獲取(Col1到Col3 Excel屬性是「常規」,Col4是日期特定的):

Col1 Col2 Col3 Col4 
Text1 1.5 288.77 3/1/2013 
Text2 1.3 352.47 3/1/2013 
Text3 1a 206.93 3/1/2013 
Text4 1 206.93 3/1/2013 
Text5 1 206.93 3/1/2013 
  • 一旦數據是在datagridviewDataGridView.AutoGenerateColumns=True),似乎理所當然 該Col2僅包含整數和不顯示 細胞值不是整數。

例從DataGridView牽強:

Col1 Col2 Col3 Col4 
    Text1 1.5 288.77 3/1/2013 
    Text2 1.3 352.47 3/1/2013 
    Text3  206.93 3/1/2013 
    Text4 1 206.93 3/1/2013 
    Text5 1 206.93 3/1/2013 
  • 實際的問題是,我在DataGridView 對XML文件驗證數據和我證明日誌這給用戶ROWID 和實際的來源值。我似乎無法獲得datagridview的相同值 。
  • 我目前找到的唯一部分解決方案是明確地將所有Excel字段轉換爲文本,但是顯然會混淆字段的一些 (例如:日期字段)。

如何獲取datagridview中的所有SOURCE FILE值,然後執行所有後續的數據驗證任務?

+1

甚至不能讀取此內容。格式化一點。 – Bit

+0

格式問題的道歉 - 現在應該修復。 – UncleDo

回答

0

它看起來像只是試圖將Excel原始數據(因爲它在Excel工作表中格式化)提取到datagridview中用於顯示目的,然後執行其他數據驗證。 我建議使用下面的混合列連接字符串示例(IMEX):

strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" + 
             "Data Source=" + strFilePath + ";Jet OLEDB:Engine Type=5;Extended Properties='Excel 12.0;HDR=NO;IMEX=1'"; 
+0

謝謝,這正是我所需要的 - 按原樣獲取數據,然後繼續進行所需的驗證。 – UncleDo

0

我會建議創建一個具有所需類型的數據列的DataTable,然後將數據獲取到DataTable中。最後,將DataTable綁定到DataGridview。

+0

感謝塔裏克,這裏有一個更進一步的說明 - 我將它用於不同類型的數據,所以它應該是動態的。我無法設置確切的列數和類型,因爲這些數據可能因來源不同而有所不同。 – UncleDo

+0

你有什麼辦法提前確定列數據類型嗎? – Tarik

+0

我的意思是,您可以在運行時從Excel讀取數據時確定列類型嗎? – Tarik