永恒V之星 2023-03-10 16:59 采纳率: 33.3%
浏览 14
已结题

C# NPOI读取复杂Excel转对象类

Excel数据格式如图,需要用C# NPOI库读取并将其转换成 C#类。

img

当前excel的数据读取只需要第4列,数据可以读到,但怎样将他转换成对象不知道如何操作?

 IWorkbook workbook = null;
            FileStream fileStream = File.OpenRead(fileName);
            string suffix = Path.GetExtension(fileName);
            if (suffix.Equals(".xls"))
            {
                workbook = new HSSFWorkbook(fileStream);
            }
            else if (suffix.Equals(".xlsx"))
            {
                workbook = new XSSFWorkbook(fileStream);
            }
            if (workbook != null)
            {
                ISheet sheet = workbook.GetSheetAt(0);
                IRow row = sheet.GetRow(0);  //读取当前行数据
                for (int i = 0; i <= sheet.LastRowNum; i++)
                {
                    row = sheet.GetRow(i);  //读取当前行数据
                    if (row != null)
                    {
                        //LastCellNum 是当前行的总列数
                        //  for (int j = 0; j < row.LastCellNum; j++)
                        //  {
                        //读取该行的第j列数据
                        string value = row.GetCell(4).ToString();
                        Debug.WriteLine(value.ToString());
                        //  }
                    }
                }
            }

数据对象类部分属性:

  /*制动初速度*/
        [Column(4)]
        public float edNoLoadBrakeSpeed { get; set; }
        /*制动距离*/
        [Column(4)]
        public float edNoLoadBrakeDistance { get; set; }
        [Column(4)]
        public float edNoLoadMFDD { get; set; }
        /*制动力*/
        [Column(4)]
        public float edNoLoadBrakeForce { get; set; }
        /*发动机脱开 - 满载*/
        /*制动初速度*/
        [Column(4)]
        public float edLoadBrakeSpeed { get; set; }
        /*制动距离*/
        [Column(4)]
        public float edLoadBrakeDistance { get; set; }
        [Column(4)]
        public float edLoadMFDD { get; set; }
        /*制动力*/
        [Column(4)]
        public float edLoadBrakeForce { get; set; }

网上找了个博客是转换成List的,试了下不符合需求。请教下有没有相关的例子可以参考,谢谢

  • 写回答

3条回答 默认 最新

  • threenewbee 2023-03-10 17:03
    关注

    可以自己构造一个对象,把字段填入。也可以用dynamicObject

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月21日
  • 创建了问题 3月10日

悬赏问题

  • ¥15 怎么改成循环输入删除(语言-c语言)
  • ¥15 安卓C读取/dev/fastpipe屏幕像素数据
  • ¥15 pyqt5tools安装失败
  • ¥15 mmdetection
  • ¥15 nginx代理报502的错误
  • ¥100 当AWR1843发送完设置的固定帧后,如何使其再发送第一次的帧
  • ¥15 图示五个参数的模型校正是用什么方法做出来的。如何建立其他模型
  • ¥100 描述一下元器件的基本功能,pcba板的基本原理
  • ¥15 STM32无法向设备写入固件
  • ¥15 使用ESP8266连接阿里云出现问题