这是我的问题:
我正在从 .NET MVC 应用程序上的 Excel 文件中读取数据,我正在做的是从 excel 中读取所有数据,然后遍历每条记录,将记录中包含的数据插入到我的业务模型中。
一切都完美无缺。但是,我发现有时从 excel 中检索一个字段时会返回一个空字符串。奇怪的是,这个字段可以包含一个简单的字符串或一个将被视为数组的字符串(它可以包含“|”字符来构建数组)在某些 excel 文件中,当“|”字段返回空时 char 存在,而其他不存在时,这种行为在该文件中是一致的。
还有其他字段可以接收分隔符并且总是可以正常工作。这两个字段之间的唯一区别是,工作的是纯字符串,而失败的是一串数字,可能是“|” 将它们分开。
我尝试更改分隔符(我尝试使用 '#' 得到相同的结果)并将单元格专门格式化为文本,但没有任何成功。
这是从excel中提取数据的方法
private DataSet queryData(OleDbConnection objConn) {
string strConString = "SELECT * FROM [Hoja1$] WHERE NUMACCION <> ''";
OleDbCommand objCmdSelect = new OleDbCommand(strConString, objConn);
OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
objAdapter1.SelectCommand = objCmdSelect;
DataSet objDataset = new DataSet();
objAdapter1.Fill(objDataset, "ExcelData");
return objDataset;
}
我首先检查 excel 中的字段:
fieldsDictionary.Add("Hours", table.Columns["HOURS"].Ordinal);
后来,在循环数据集时,我使用以下方法提取数据:
string hourString = row.ItemArray[fieldsDictionary["Hours"]].ToString();
这个 hourString 在某些记录中是空的。在某些 Excel 文件中,当记录包含“|”时为空,而在其他 Excel 文件中不包含时为空。我还没有找到一个文件,它在两个类的记录上都返回空。
我对此感到很困惑。我很确定它必须与字段数据的数字性质有关,但无法理解为什么当我将 excel 文件上的单元格强制为“文本”时它不能解决
任何帮助都将受到欢迎。