netcore通用npoi导入excel

此篇博客介绍了如何使用C#编程语言通过IFormFile接口从Excel文件中读取数据,并转换为指定类型T的列表。它涵盖了异常处理和不同Excel文件格式的支持。

        /// <summary>
        /// 获取excel文件内类容并转换成列表
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="file"></param>
        /// <returns></returns>
        public List<T> ImportExcel<T>(IFormFile file) where T : new()
        {
            List<T> _xlist = new List<T>();
            Type _xtype = typeof(T);
            var _xproperties = _xtype.GetProperties();
            try
            {
                string _xfile = Path.GetExtension(file.FileName).ToLower();
                MemoryStream _ms = new MemoryStream();
                file.CopyTo(_ms);
                _ms.Seek(0, SeekOrigin.Begin);
                IWorkbook _xbook;
                if (_xfile == ".xlsx")
                {
                    _xbook = new XSSFWorkbook(_ms);
                }
                else if (_xfile == ".xls")
                {
                    _xbook = new HSSFWorkbook(_ms);
                }
                else
                {
                    _xbook = null;
                }
                ISheet _xsheet = _xbook.GetSheetAt(0);

                int _xCountRow = _xsheet.LastRowNum + 1;//获取总行数

                if (_xCountRow - 1 == 0)
                {
                    return _xlist;
                }

                for (int i = 1; i < _xCountRow; i++)
                {
                    //获取第i行的数据
                    var _xrow = _xsheet.GetRow(i);
                    if (_xrow != null)
                    {
                        T xmodel = Activator.CreateInstance<T>();
                        //循环的验证单元格中的数据
                        for (int j = 0; j < _xproperties.Length; j++)
                        {
                            var _xproperty = _xproperties[j];
                            _xproperty.SetValue(xmodel, _xrow.GetCell(j) != null ? _xrow.GetCell(j).ToString() : string.Empty, null);
                        }
                        _xlist.Add(xmodel);
                    }
                }
                return _xlist;
            }
            catch (Exception e)
            {
                return _xlist;
            }
        }

使用C#结合NPOI库读取Excel文件中图片,可参考以下步骤和代码示例。 首先,在`.NetCore`环境下,可以通过以下代码获取Excel中图片数据: ```csharp /// <summary> /// 获取excel中图片数据 /// </summary> /// <param name="path">文件路径</param> /// <returns>list</returns> private List<PictureData> GetDTWithImg(string path) { using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read)) { IWorkbook workbook = null; // 后续还需要完善workbook的初始化,根据文件类型(xls或xlsx)选择合适的实现类 // 例如:如果是xls格式可以使用HSSFWorkbook,如果是xlsx格式可以使用XSSFWorkbook // 这里假设已经正确初始化workbook // 然后可以进一步处理获取图片数据 // 下面是简单示例,实际中可能需要根据图片的存储位置和类型进行具体处理 List<PictureData> pictureDataList = new List<PictureData>(); // 这里需要根据workbook的具体结构和图片存储方式来获取图片 // 例如,对于XSSFWorkbook可能需要通过Sheet的DrawingPatriarch等对象来获取图片 return pictureDataList; } } ``` 另外,有一个将Excel中的图片导出保存至本地的示例代码,其点击事件方法如下,其中也涉及到了从Excel中获取图片相关的逻辑: ```csharp private string exclePath = @"C:\users\lenovo\Desktop\testPic.xls"; private void button2_Click(object sender, EventArgs e) { List<string> listpath = new List<string>{}; string savePath = Path.Combine("E:\\","pic"); if(!Directory.Exists(savePath))//判断是否存在保存文件夹,没有则新建 Directory.CreateDirectory(savePath); bool result = ExcelToImage(exclePath, savePath, ref listpath); if(result) MessageBox.Show("导出成功"); else MessageBox.Show("导出失败"); } ``` 这里的`ExcelToImage`方法需要根据具体需求实现,其核心是从Excel文件中读取图片并保存到指定路径。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值