繁体   English   中英

如何从Excel ListObject表填充数据表

[英]How can I fill a datatable from an excel listobject table

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

}
 
 

提前致谢。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM