使用NPOI组件简单实现导出

Posted on   遥远的博客  阅读(171)  评论(0编辑  收藏  举报
  1. 首先我们在 NuGet程序包管理中下载 NPOI组件 目前版本稳定的是:2.4.1
  2. 这里可以看一下NPOI下载完成后生成的四个引用,其作用
  • 然后废话也不多说了,直接上代码
  1. 然后我们在项目中进行引用

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using NPOI.HSSF.UserModel;

点击查看代码
 /// <summary>
        /// 将 DataTable 导出至 Excel 文件
        /// </summary>
        /// <param name="dt">数据表</param>
        /// <param name="filePath">文件路径(包括文件名和扩展名)</param>
        public static string ExportToExcel(DataTable dt, string filePath, out string err)
        {
           
                // 判断数据表是否为空
                if (dt == null || dt.Rows.Count == 0)
                {
                    throw new Exception("要导出的数据表不能为空!");                   
                }

                // 判断文件路径是否为空
                if (string.IsNullOrWhiteSpace(filePath))
                {
                    throw new Exception("文件路径不能为空!");
                }
                // 获取文件扩展名
                string fileExt = Path.GetExtension(filePath).ToLower();
                // 根据文件扩展名创建工作簿对象
                IWorkbook wb = null;
                switch (fileExt)
                {
                    case ".xlsx":
                        wb = new XSSFWorkbook();
                        break;
                    case ".xls":
                        wb = new HSSFWorkbook();
                        break;
                    case ".csv":
                        wb = new HSSFWorkbook();
                        break;
                    default:
                        throw new Exception("不支持的文件格式!");
                }
                // 创建工作表对象
                ISheet sheet = wb.CreateSheet();
                // 创建表头行,并填充表头内容
                IRow headerRow = sheet.CreateRow(0);
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    headerRow.CreateCell(i).SetCellValue(dt.Columns[i].ColumnName);
                }
                // 填充数据行
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    IRow dataRow = sheet.CreateRow(i + 1);
                    for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        dataRow.CreateCell(j).SetCellValue(dt.Rows[i][j].ToString());
                    }
                    
                }               
                filePath = @"D:\temp\" + filePath;
                // 保存 Excel 文件
                using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
                {
                    wb.Write(fs);
                    // 自动打开生成的文件夹
                    System.Diagnostics.Process.Start("explorer.exe", "文件地址");  
                }
            }
        }
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!

随笔 - 4, 文章 - 0, 评论 - 0, 阅读 - 1541

Copyright © 2025 遥远的博客
Powered by .NET 9.0 on Kubernetes

点击右上角即可分享
微信分享提示