目前正在嘗試讀取上傳的Excel內容,但不管我的Excel欄位,其格式使用通用格式並輸入int值,或是直接定義此格式為整數值,但程式抓取到的型態都為Double型態,請問此部分是Excel本身的關係嗎?然後,因為丟到資料庫的欄位中必須是int型態,想詢問此部分我可以怎麼調整呢?
[Controller]
using(var reader = ExcelReaderFactory.CreateOpenXmlReader(file.InputStream)) {
for(var i=0; reader.Read(); i++) {
//原本想使用以下語法抓取表格上中的內容,會報例外狀況的錯誤
//var bbb = reader.GetInt16(1);
//抓取表格型態,發現為Double型態
var aaa = reader.GetFieldType(1);
//以下有嘗試兩種寫法:
//1. 假設Excel欄位內容為1,則在此會抓取1.0,但希望是抓到1就好
//var ccc = reader.GetValue(1);
//2. 轉換為Int失敗
//var ddd = Convert.ToInt16(aaa);
}
}
[抓取表格型態,發現為Double型態]
[Excel]
[轉換為Int失敗]
請嘗試看看以下語法
int myInt = (int)reader.GetValue(1);
建議您,如果上傳檔案的Excel版本都是Excel 2007以後
的話,可以考慮用另一個Assembly >> ClosedXML
YoChen,這個方法還是會跳出例外,後來調整成小魚提供的方法可行,謝謝您~
Convert.ToInt32(reader.GetValue(1))
了解,是我搞錯了~XDDD
我以為他會回傳Double
,但實際上是回傳Object
,那就必須用小魚大提供的方法~