我正在从xlx / xlxs文件中检索数据。我实际上是使用ExcelDataReader库使用ExcelDataReader插件将数据保存到DataSet中。
excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
excelDataTable = excelReader.AsDataSet(conf);
现在我正在尝试将System.Data.DataSet转换为强类型数据集。
public DocAdmin.GHDefinitionDataTable ConvertDataTable(DataTable dtOriginal)
{
DocAdmin.GHDefinitionDataTable ghDefiniton = new DocAdmin.GHDefinitionDataTable();
int ExcelRowNumber = 1;
foreach (DataRow row in dtOriginal.Rows)
{
++ExcelRowNumber;
try
{
ghDefinition.ImportRow(row);
}
catch (ArgumentException ex)
{
OperationMessage message = new OperationMessage();
this.ShowMessage(message );
}
}
return ghDefinition;
}
我收到此异常消息:
输入字符串的格式不正确。无法存储 SAHasta专栏。预期类型为十进制。
这是因为我故意在单元格上设置“NULL”值。
我想显示一条消息,指定行号(Excel文件中的单元格编号),我正在使用++ ExcelRowNumber来显示这一点,但我不知道如何从中获取列名和数据类型强类型数据集,它给了我一个例外。 我知道异常为自己指定了这个:无法存储在SAHasta列中,但我必须用西班牙语进行自定义消息。
我想知道是否有办法从异常中获取列名和数据类型。我想向用户指定给出问题的值,以便他可以修改excel文件并再次上传。
提前致谢并抱歉我的英语。
答案 0 :(得分:0)
如此简单的事情怎么样才能得到失败的行?
public DocAdmin.GHDefinitionDataTable ConvertDataTable(DataTable dtOriginal)
{
DocAdmin.GHDefinitionDataTable ghDefiniton = new DocAdmin.GHDefinitionDataTable();
int ExcelRowNumber = 1;
foreach (DataRow row in dtOriginal.Rows)
{
++ExcelRowNumber;
try
{
ghDefinition.ImportRow(row);
}
catch (ArgumentException ex)
{
System.Windows.Forms.MessageBox.Show("Error on line " + ExcelRowNumber)
}
}
return ghDefinition;
}
要了解导入模块失败的确切值,您需要查看DocAdmin.GHDefinitionDataTable定义本身。如果不知道这个位是如何工作的话,很难说清楚。