c# excel导入后处理不固定列数据

在VS2019项目中,面对由其他系统导出的复杂Excel,其表头固定但存在无效列,无法预知有效列位置。通过上传Excel到服务器,使用NPOI库读取文件,遍历所有行,解析并记录单元格数据到对象,然后将有效对象插入数据库。定义字典A存储表头名和对象字段映射,同时创建字段B记录有效列索引。
摘要由CSDN通过智能技术生成

开发工具: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_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值