简体   繁体   English

如何从Excel ListObject表填充数据表

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

My main problem is getting the information from my list object in the excel spreadsheet. 我的主要问题是从excel电子表格中的列表对象获取信息。 For some reason it wont convert the string to int see where I have commented. 由于某种原因,它不会将字符串转换为int,看看我在哪里评论。 Any help would be greatly appreciated. 任何帮助将不胜感激。

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;

}
 
 

Thanks in advance. 提前致谢。

You are trying to cast a string into an integer, which will raise an exception. 您正在尝试将字符串转换为整数,这将引发异常。 You should use 你应该用

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

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

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