如何从excel listobject表中填充数据表

时间:2014-08-06 06:19:33

标签: c# excel

我的主要问题是从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;

}
 
 

提前致谢。

1 个答案:

答案 0 :(得分:1)

您正在尝试将字符串转换为整数,这将引发异常。你应该使用

int.Parse((row.Range.Cells[1, 1]).ToString())