asp.net core导入excel
程序员文章站
2024-01-13 12:25:10
接昨天的 "导出" 导入excel内容 对比昨天导出的内容增加了一行实体属性名称作为标题行,这样到转换为实体的时候才能找到对应的属性。 导入代码 excel文件路径可以通过上传控件上传到服务器再读取。 注意 如果你导入和发现bool类型不能正确读取请修改一下两个文件的两个地方: DataTableE ......
接昨天的
导入excel内容
对比昨天导出的内容增加了一行实体属性名称作为标题行,这样到转换为实体的时候才能找到对应的属性。
导入代码
public iactionresult inportexcel() { var file = "d:\\a.xls"; var excelheper = new excelhelper(); var dt = excelheper.excelimport(file,2); var list = dt.tolist<student>(); return content(""); }
excel文件路径可以通过上传控件上传到服务器再读取。
注意
如果你导入和发现bool类型不能正确读取请修改一下两个文件的两个地方:
datatableextensions的public static ienumerable
else if (p.propertytype == typeof(bool)) { p.setvalue(ob, bool.parse(row[p.name].tostring()), null); }
excelhelper的private datatable readsheettodatatable(int headerrowno, isheet sheet)方法替换为如下代码或增加一个bool类型判断
private datatable readsheettodatatable(int headerrowno, isheet sheet) { var dt = new datatable(); irow headerrow = sheet.getrow(headerrowno); int cellcount = headerrow.lastcellnum; for (int j = 0; j < cellcount; j++) { icell cell = headerrow.getcell(j); dt.columns.add(cell.tostring()); } for (int i = (headerrowno + 1); i <= sheet.lastrownum; i++) { irow row = sheet.getrow(i); datarow datarow = dt.newrow(); for (int j = 0; j < cellcount; j++) { if (row.getcell(j) == null) { continue; } icell cell = row.getcell(j); switch (cell.celltype) { case celltype.unknown: case celltype.error: throw new exception($"第{i + 1}行,列【{dt.columns[j].columnname}】,单元格格式错误"); break; case celltype.numeric: if (dateutil.iscelldateformatted(cell)) { datarow[j] = cell.datecellvalue; } else { datarow[j] = cell.numericcellvalue; } break; case celltype.blank: datarow[j] = ""; break; case celltype.boolean: datarow[j] = cell.booleancellvalue; break; case celltype.formula: datarow[j] = cell.cellformula ; break; case celltype.string: default: datarow[j] = cell.stringcellvalue; break; } //datarow[j] = row.getcell(j).tostring(); } bool existsvalue = false; foreach (datacolumn column in dt.columns) { if (datarow[column.columnname] == null || string.isnullorempty(datarow[column.columnname].tostring())) { continue; } existsvalue = true; break; } if (existsvalue) { dt.rows.add(datarow); } } return dt; }
上一篇: 全新Linux系统安装ssh服务
推荐阅读