我的主要问题是从excel电子表格中的列表对象获取信息。由于某种原因,它不会将字符串转换为int,请参阅我评论的位置。任何帮助将不胜感激。
public static DataTable excelDerivedAssembliesDT(string excelDir, int jobID)
{
DataTable dt = new DataTable();
var excelApp = new Excel.Application();
try
{
excelApp.Visible = false;
excelApp.Workbooks.Open(excelDir);
Excel.ListObject vstoListObject = excelApp.Worksheets[1].ListObjects[1];
DataColumn assemblyID = new DataColumn();
assemblyID.DataType = System.Type.GetType("System.Int32");
assemblyID.ColumnName = "assemblyID";
assemblyID.AutoIncrement = true;
dt.Columns.Add(assemblyID);
DataColumn assemblyNo = new DataColumn();
assemblyNo.DataType = System.Type.GetType("System.Int32");
assemblyNo.ColumnName = "assemblyNo";
dt.Columns.Add(assemblyNo);
DataColumn job = new DataColumn();
job.DataType = System.Type.GetType("System.Int32");
job.ColumnName = "jobID";
dt.Columns.Add(job);
DataColumn assemQTY = new DataColumn();
assemQTY.DataType = System.Type.GetType("System.Int32");
assemQTY.ColumnName = "assemblyQty";
dt.Columns.Add(assemQTY);
DataRow dataRow = dt.NewRow();
foreach (Excel.ListRow row in vstoListObject.ListRows)
{
//This is the part i cant seem to get to work i just cant see why it shouldn't
dataRow["assemblyNo"] = (int)(row.Range.Cells[1, 1]).ToString());
dataRow["assemblyQty"] = (int)(row.Range.Cells[1, 2]).ToString());
dataRow["jobID"] = (int)(row.Range.Cells[1, 3]).ToString());
dt.Rows.Add(dataRow);
dataRow = dt.NewRow();
}
dt.AcceptChanges();
}
catch(exception e)
{
MessageBox.Show(e.ToString());
}
return dt;
}
提前致谢。
答案 0 :(得分:1)
您正在尝试将字符串转换为整数,这将引发异常。你应该使用
int.Parse((row.Range.Cells[1, 1]).ToString())