我的问题是我有一个电子表格要导入(在azure上,所以我不能使用excel连接器)但是在工作表的顶部有两行 . 我需要删除的第一个因为第二行有列名 . 其余行是数据 .
DataTable dt = new DataTable();
FileStream stream = File.Open(path, FileMode.Open, FileAccess.Read);
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
excelReader.IsFirstRowAsColumnNames = true;
DataSet result = excelReader.AsDataSet();
dt = result.Tables[0];
if (dt.Rows[0].ItemArray[0].ToString() == "Category Info") { dt.Rows[0].Delete(); dt.AcceptChanges(); }
数据导入数据表但后来我需要删除第一行,因为有人认为最好有两行 Headers . :(
当我包含“if”语句时,我收到导致导入时缺少列的错误 .
我试图解决的挑战是允许用户将特定格式的excel文件导入到AZURE上运行的Web应用程序中,据我所知,Azure库上没有Excel库...因此,批量复制 .
我也尝试过:
DataSet result = excelReader.AsDataSet();
if (result.Tables[0].Rows[0].ItemArray[0].ToString() == "Category Info") { result.Tables[0].Rows[0].Delete(); result.AcceptChanges(); }
dt = result.Tables[0];
仍然得到结果“列'DataPointX'不属于表Sheet . ”
2 回答
如果使用
dt.Rows[RowIndex]["DataPointX"]
检索行的单元格,但DataTable不包含列 DataPointX ,这将抛出上述错误消息 . 请调试代码以检查变量dt
并通过 DataSet Visualizer 查看dt的内容以确保列 DataPointX 存在 .此外,我使用您提供的代码从我这边的下面的Excel文件中读取数据,如果它是 number ,我发现DataPointX将丢失 .
GridView输出数据
如果您的Excel文件中的数据列DataPointX已填充数字,请尝试将单元格格式更改为 text 并测试是否可以解决问题 .
我的测试Excel文件(DataPointX字段的数据是数字,DataPointY字段的数据是文本)
我把它解决了,这是可以接受的: