通过linq阅读excel,如何转换列

本文关键字:转换 何转换 linq 阅读 excel 通过 | 更新日期: 2023-09-27 18:10:29

我正在阅读一个excel文件,得到"指定的cast是无效的"我注意到的是excel中的ID和ParentID列有小数,例如1235是1235.0,我相信这是导致问题的原因。我试过投,但没有成功。

var ds = new DataSet();
        adapter.Fill(ds, "ErrorCodesExcel");
        System.Data.DataTable data = ds.Tables["ErrorCodesExcel"];
        var dataParsed = ds.Tables["ErrorCodesExcel"].AsEnumerable();

  var query = dataParsed.Select(x =>
                new ErrorCode
                {
           ID = x.Field<int>("ID"),
           ErrorDescription = x.Field<string>("ErrorDescription"),
           ErrorDescriptionWithParent = x.Field<string>("ErrorDescriptionWithParent"),
            ParentID = x.Field<int>("ParentID"),
    });

通过linq阅读excel,如何转换列

在Excel中,单元格值是stringdouble,而DataReader不会为您进行转换,因此您必须从阅读器中读取double并转换为int(转换是一种方式):

ID = (int)x.Field<double>("ID"),
ErrorDescription = x.Field<string>("ErrorDescription"),
ErrorDescriptionWithParent = x.Field<string>("ErrorDescriptionWithParent"),
ParentID = (int)x.Field<double>("ParentID"),