0

我正在使用 linq 语句通过 mvc 网站导入 excel 表,如下所示

var  members = (from memRec in excelFile.Worksheet(sheetName)
                where memRec["FIRST_NAME"] != null 
                select memRec).ToList();
foreach (var member in members)
{
//save data
}

这里的问题是,假设前两列的特定列“出生日期”是单元格格式 "DATE" and display as dd/MM/yyyy,第三列是单元格格式"Text" and display as dd/MM/yyyy,由于格式不匹配,excel 将认为第三列没有值。

有什么办法可以解决这个问题。

4

2 回答 2

0

尝试声明对象并使用预定义的数据类型,例如:

var q = from memRec in excelFile.Worksheet(sheetName)
        where memRec["FIRST_NAME"] != null 
        select new Person()
        {
            Date = (DateTime)memRec [“Date”],
            FirstName= (string)memRec [“FirstName”],
            Age= (int)memRec [“Age”],
        };
于 2016-06-28T05:10:18.983 回答
0

我找到了解决方案。

在我们的服务器中,它是 Office 2010。

更改注册表项如下

  1. 在 Windows 环境中,选择开始 ► 运行并键入 REGEDIT 以显示注册表编辑器。
  2. 在注册表树中,选择 HKEY_LOCAL_MACHINE ► 软件 ► Microsoft ► Office ► 12.0 ► 访问连接引擎 ► 引擎。
  3. 双击 Excel 节点。
  4. 在右侧面板中,双击 TypeGuessRows 条目。
  5. 将值数据从 8 更改为 0。
  6. 单击确定。
  7. 选择文件 ► 退出退出注册表编辑器窗口。

现在 excel 不会猜测行数据类型,因为我们将值从 8 更改为 0。

于 2016-06-28T06:47:47.593 回答