1

在使用 linq-to-excel 时,我注意到以下几点:

我正在尝试从电子表格导入房间。

我有一个简单的课程

   public class Room
    {
        public int BuildingID { get; set; }
        public string RoomNumber { get; set; }
        public double SQM { get; set; }
        public string Notes { get; set; }
    }

电子表格中的房间号要么是简单的数字,例如 101、102、34 等,要么具有字符前缀,例如 AV1、LH2 等

如果我的工作表中的第一行以字母数字房间号(例如 LH1)开头,那么一切都很好,并且 RoomNumber 列被视为字符串数据。

在另一张纸上,前几行是数字。当我的循环到达第一个字母数字房间号时,该类有一个 null 而不是例如 AV1,即使该行的其余部分在那里。这几乎就像 linq-to-excel 已经查看了前几行并决定列数据类型应该是数字。

有没有办法可以强制我的班级使用字符串数据类型?

4

1 回答 1

2

该问题与 LinqToExcel 使用的 OLEDB 提供程序有关。

这是一个解释该问题的堆栈溢出问题:Excel cell-values are truncated by OLEDB-provider

文章解释说添加 HDR=YES 有助于解决问题,并且 LinqToExcel 已经设置了该属性。

所以基本上你需要在前 8 行或 16 行中有一个字母数字的房间号。否则 OLEDB 将该列中的所有值视为数字而不是字符串。

于 2014-02-12T21:52:50.863 回答