我正在努力解决这个问题,我有一个excel电子表格,必须导入我的SQL Server数据库。我按如下方式迭代它:
Microsoft.Office.Interop.Excel.Range xlRange = xlWorksheet.Range["A1", "D6867"];
int num = 4;
// String test = "";
foreach (Microsoft.Office.Interop.Excel.Range row in xlRange.Rows)
{
if ((int)xlWorksheet.Cells[num, 1].Font.Size == 14)
{
ProductCategory category = new ProductCategory();
category.Category = xlWorksheet.Cells[num, 1].Value.ToString();
db.ProductCategories.Add(category);
}
num++;
//System.Diagnostics.Debug.WriteLine(test);
} db.SaveChanges();
xlWorkbook.Close(true, Missing.Value, Missing.Value);
xlApp.Quit();
我得到的错误是
无法将System.DBNull转换为int
在这一行:
if ((int)xlWorksheet.Cells[num, 1].Font.Size == 14)
我不知道这个错误意味着什么,并且我正在访问的单元格中没有空值。请指教?
答案 0 :(得分:3)
在至少一个单元格中,字体大小为System.DBNull。
你必须在投射之前检查尺寸类型:
if(Convert.IsDBNull(xlWorksheet.Cells[num, 1].Font.Size))
{
}
else if((int)xlWorksheet.Cells[num, 1].Font.Size == 14)
{
// do Something....
}