开发工具:vs2019
项目背景:客户给出的excel是其他系统导出的,复杂表头表头名固定,但包含多个无效列,且无法确定有效列在第几列。
大概的导入思路:
1、上传excel文件到服务器端(这里省略上传逻辑)
2、读取服务器端的excel文件内容(引用、NuGet、安装NPOI)
3、循环excel所有行
4、解析每行中的单元格数据、并记录到对象中
5、将有效的对象插入到数据库中
定义字典A存储:excel表头名对应字段 ;key:有效列的表头名称 value:对象字段。
循环excel所有行时,先读取标题行,并记录有效列的表头名称在当前excel中对应的索引值。即定义字段B存储:excel中有效列索引;key:列索引 value:
using System.Reflection;
using NPOI.SS.UserModel;
/// <summary>
/// excel表头名对应字段
/// </summary>
private static Dictionary<string, string> DicCells = new Dictionary<string, string>
{
{"名称","TName"},
{"状态","TStat"},
{"类型","RType"}
};
public void ExcelToDatatable()
{
try
{
FilePath = Request.PhysicalApplicationPath + FilePath;//绝对路径
IWorkbook workbook = WorkbookFactory.Create(FilePath);
ISheet sheet = workbook.GetSheetAt(0);//获取第一个工作簿
int title_row_index = 2;//标题行索引值
int data_row_