从excel文件读取错误
问题描述:
我想从Excel文件读取一行。
由于某些原因,当我尝试读取整数值(ID列)时出现错误。从excel文件读取错误
代码的功能是从Excel文件 中读取信息并随后进行存储。
在UserInfo
实现为数组。
(Excel File Image)
它抛出这个错误:ErrorImage
class UserInfo
{
public int ID { get; set; }
public string firstName { get; set; }
public string lastName { get; set; }
public string IDNumber { get; set; }
public string email { get; set; }
}
private void openExcelFile(string excelFile)
{
UserInfo[] user = new UserInfo[2];
label1.Text += "Initalize Excel Application And Reading Data";
///Read From Excel File And Store in array
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
Workbook xlWorkbook = xlApp.Workbooks.Open(excelFile);
_Worksheet xlWorksheet = xlWorkbook.Sheets[1];
Range xlRange = xlWorksheet.UsedRange;
int rowCount = xlRange.Rows.Count;
//Start to read from row 2
for (int i = 2; i <= rowCount; i++)
{
user[i - 2] = new UserInfo();
Range range1 = xlWorksheet.Rows[i];
user[i - 2].firstName = range1.Cells[i, 1].Value2;
user[i - 2].lastName = range1.Cells[i, 2].Value2;
user[i - 2].ID = range1.Cells[i, 3].Value2; //Error
user[i - 2].email = range1.Cells[i, 4].Value2;
}
label1.Text += "Done!\nStart Sql Process:\n";
//Cleaning GC,Dealing memory
GC.Collect();
GC.WaitForPendingFinalizers();
//close and release
xlWorkbook.Close();
Marshal.ReleaseComObject(xlWorkbook);
//quit and release
xlApp.Quit();
}
}
答
我遇到过是它可能是特定的单元格的数据类型的错误不是INT所以它不能转换的,该数据单元格为int。 您可以尝试使用下面的示例作为解决方法:
Range r = activeWorksheet.get_Range("A3","F3");
int d;
if (r.Cells[3, 5].Value2 != null)
{
var c = r.Cells[3, 5].Value2.ToString();
d = Convert.ToInt32(c);
}
else
{
d = 0;
}
您的Excel文件中是否有任何空的** ID **列?它看起来像你试图将一个空的单元格值转换为int –
否如果你不相信我(: – user200544
值是否从excel表格到范围对象? –