【问题标题】:Read data from Excel从 Excel 读取数据
【发布时间】:2011-03-22 03:40:48
【问题描述】:

我一直在尝试从 Excel 文件中读取数据。它已经成功了,但我遇到了一个问题。每当单元格的格式与单元格中输入的数据不匹配时,我就会得到空数据


例如

如果数据单元格格式为日期 - dd/mm/yyyy,并且用户输入 13/17/2011,则日期格式和输入的日期是矛盾的,因此 excel 给我的单元格完全是空的。只有当单元格格式是文本时,我才会得到输入的数据。

如果输入的日期格式不符合设置的单元格格式,为什么excel文件给我空单元格?

这是读取excel数据的代码

if(fileEXT.Equals(".xls"))
{
   oledbConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("../Portal_Docs/UploadDocs/"+filename+"")+";Extended Properties=Excel 8.0");
}
else if(fileEXT.Equals(".xlsx"))
{
   oledbConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+Server.MapPath("../Portal_Docs/UploadDocs/"+filename+"")+";Extended Properties=\"Excel 12.0;HDR=YES;\"");
}
else if(fileEXT.Equals(".xlsm"))
{
   oledbConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+Server.MapPath("../Portal_Docs/UploadDocs/"+filename+"")+";Extended Properties=Excel 12.0 Macro");
}

oledbConn.Open();
OleDbCommand cmd = new OleDbCommand("SELECT * FROM [Sheet1$]", oledbConn);
OleDbDataAdapter oleda = new OleDbDataAdapter();
oleda.SelectCommand = cmd;
DataSet ds = new DataSet();
oleda.Fill(ds,"LocationDetails");

【问题讨论】:

  • 一些关于您如何实际阅读单元格的代码摘录将有助于发现问题。
  • 这是读取excel数据的代码
  • 如何访问ds.Tables[0].Rows[0].Cells[0]
  • 这是使用 OleDbConnection 阅读的限制。因为它总是返回基于列格式的强类型对象,如果您想以文本形式读取数据,请检查此stackoverflow.com/questions/657131/… 问题。
  • 这里的“LocationDetails”是什么?

标签: c# .net excel date format


【解决方案1】:

您可以将连接字符串更改为

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("../Portal_Docs/UploadDocs/"+filename+"")+";Extended Properties=Excel 8.0;HDR=Yes;IMEX=1"

HDR=是;IMEX=1

告诉 OldDb 驱动程序列中的数据格式不同。

【讨论】:

  • 实际上,IMEX=1 是这样做的(它将所有列视为文本,afaik)。 HDR=Yes 是不相关的:它声明工作表的第一行包含列标题而不是数据。
【解决方案2】:

我建议不要使用 OLEDB,而是使用 EPPLus 库来处理您的 excel 文件。它非常简单和全面。 Nuget 包也可用于相同的。 http://nuget.org/packages/EPPlus

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多