2011-10-24 42 views
-1

在C#。我的工作需要閱讀然後excel文件需要檢查所有行datas.To解決這個問題,我做的後續步驟檢查Excel行的列

1)Read the excel file. 
2)put the excel file information in DataTable. 

Order Produ price  quan Discount 
10248 11  14.0000 12  0 
10248 42  9.8000 10  0 
10248 72  34.8000 5  0 
10249 14  18.6000 9  0 
10249 51  42.4000 40  0 

假設上面是我Excel格式我需要閱讀它。我已經完成了步驟1和步驟2.我需要幫助來檢查excel行值,假設我的excel Discount列的一行包含ProductName.Than該怎麼辦?我該如何檢查這種類型的錯誤以及如何避免這種類型的錯誤。我使用bellow語法來讀取excel文件

OpenFileDialog oOpenFileDialog = new OpenFileDialog(); 
if (oOpenFileDialog.ShowDialog() == DialogResult.OK) 
{ 
    txtFilePath.Text = oOpenFileDialog.FileName; 
} 
FileStream stream = File.Open(txtFilePath.Text, FileMode.Open, FileAccess.Read); 


IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); 

excelReader.IsFirstRowAsColumnNames = true; 
DataSet result = excelReader.AsDataSet(); 
+0

從技術上說,這是以下,這意味着你可能要手動檢查每個值邏輯上的錯誤,除非有是有些區別,如產品名稱只能是字母數字和折扣只能是數字,或者即使折扣是在某些範圍內的數字和產品名稱是在不同的範圍內。然後你可以有一些自動化測試,但否則我會認爲手動每個 – nbz

+0

nEm感謝reply.but這個過程並不能解決我的問題。 – shamim

回答

0

一種方法可以使用Excel的OLEDB提供程序。你也不需要在服務器上安裝excel。 在這個選項中,如果您遍歷所檢索的表的行,然後檢查讀取的數據的類型,您最終將得到數據集,您應該能夠確定數據讀取格式是否正確。 TryParse類的函數可能有幫助。

普拉薩德Pimparkar

+0

謝謝reply.Will你PLZ顯示一些語法 – shamim

0
foreach (datarow item in DataTable.Rows) 
    { 

波紋管語法給出了細胞的數據類型。 現在用cxcel row cell檢查這個類型。如果Type不匹配,那麼這個單元格內容不是無效的。 假設你行第一列是詮釋。如果一個單元包含的數據類型的字符串,你的內容又是什麼無效

//item[index].GetType() 
}