我正在開發一個應用程序來讀取xlsx文件,做一些驗證並插入數據庫。不幸的是,當我嘗試閱讀標記爲數字的列(fe與EAN-13代碼)時,我得到了int的最小值。 用戶沒有看到這個,因爲Excel正確顯示它。強制EPPLUS讀取爲文本
我怎樣才能讓它讀取文件爲純文本?我知道我可以使用OLEBD,但我也需要動態編輯文件,所以epplus ExcelPackage是最佳選擇。
下面是使用代碼IM:
FileInfo file = new FileInfo(path);
MainExcel = new OfficeOpenXml.ExcelPackage(file);
{
var ws = MainExcel.Workbook.Worksheets.First();
DataTable tbl = new DataTable();
for (var rowNum = 1; rowNum <= ws.Dimension.End.Row; rowNum++) //currently loading all file
{
var wsRow = ws.Cells[rowNum, 1, rowNum, ws.Dimension.End.Column];
var row = tbl.NewRow();
foreach (var cell in wsRow)
{
row[cell.Start.Column - 1] = cell.Text;
}
tbl.Rows.Add(row);
}
}
,這就是我如何枚舉列
foreach (var firstRowCell in ws.Cells[3, 1, 3, ws.Dimension.End.Column])
{
System.Type typeString = System.Type.GetType("System.String") ;
tbl.Columns.Add(firstRowCell.Text , typeString);
}
對他們來說可能關注的人,這裏是文件(作品也非谷歌用戶): https://drive.google.com/open?id=0B3kIzUcpOx-iMC1iY0VoLS1kU3M&authuser=0
我注意到ExcelRange.value屬性是一個包含所有未格式化對象的數組。但是,一旦您遍歷ExcelRange中的單元格並請求cell.Text屬性,它已經被處理。嘗試修改ExcelRange中的ConditionalFormatting和DataValidation沒有幫助(fe AddContainsText()) - @EDIT - >對於整個工作表都沒有幫助:-(
我不希望將ExcelRange.Value轉換爲Array,它很醜非常有條件的。
請問請問如何將列標記爲數字? – SharpCoder 2015-04-06 08:34:21
我編輯的問題,仍然不知道如何正確地做到這一點。 – Luntri 2015-04-08 12:05:00
它在哪裏讀取以「int.MinValue」形式出現的單元格?我看到一行你有'row [...] cell.Text',但是'Text'屬性應該是一個字符串。我不記得它是一個對象。 – krillgar 2015-04-08 12:09:53