【发布时间】:2010-07-09 10:35:18
【问题描述】:
通过 C# 上传电子表格时遇到一个奇怪的问题。
这是我正在使用的电子表格示例:
JournalISSN
-----------
1650327
223956
1651781
9254927
3064530
9209964
924977X <- this is causing an error
3768716
我的上传代码(为简洁起见)
string connectionString = "Provider=Microsoft.Jet.OleDb.4.0; Data Source="
+ Server.MapPath("/admin/journals/upload.xls") + "; Extended Properties=\"Excel 8.0;HDR=YES;\"";
DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb");
using (DbCommand Command = Connection.CreateCommand())
{
Command.CommandText = "SELECT [JournalISSN], JournalTitle, JournalDescription, ImpactFactor, Psychology "
+ "FROM [Sheet1$]";
using (DbDataReader DataReader = Command.ExecuteReader())
{
while (DataReader.Read())
{
Response.Write(string.IsNullOrEmpty(DataReader["JournalISSN"].ToString()) + "<br/>");
}
}
现在发生的情况是,当 DataReader 到达“JournalISSN”列中带有“X”的行时,它返回 True(所以它是 null/空),所有其他列都返回 false。所以问题似乎是,每当一列包含非数字字符时,它不会在上传过程中被拉出。
我尝试过的一些事情:
- 将“X”移动到文本中的不同位置(即 111X111)
- 更改为不同的字母
- 删除单元格并重新开始
- 将 excel 中的格式类型设置为“常规” - 应用于所有行。
如果您能提供任何关于为什么会发生这种情况的帮助/见解,我们将不胜感激。
干杯,肖恩
【问题讨论】:
-
您是否尝试过将单元格格式化为文本?
-
@Stuart Dunkeld - 是的,刚刚尝试过,仍然返回同样的问题。