如何从异常中获取特定信息以将其添加到我自己的消息中?

How can I get specific info from exception to add it in my own message?

我正在从 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;
    }

我收到此异常消息:

Input string was not in a correct format.Couldn't store in SAHasta Column. Expected type is Decimal.

这是因为我故意在单元格上设置 "NULL" 值。

我想显示一条消息,指定行号(Excel 文件上的单元格号),我正在使用 ++ExcelRowNumber 来显示它,但我没有知道如何从强类型数据集中获取列名和数据类型,这给了我异常。 我知道异常会自行指定:无法存储在 SAHasta 列中,但我必须用西班牙语创建自定义消息。

我想知道是否有办法从异常中获取列名和数据类型。我想向用户指定给出问题的值,以便他可以修改 excel 文件并重新上传。

提前致谢,对不起我的英语。

像这样简单的方法来获取失败的行怎么样?

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 定义本身。不知道那个位是如何工作的,很难说清楚。