【发布时间】: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”是什么?