当前位置: 首页 > news >正文

使用NPOI库导出多个Excel并压缩zip包

使用NPOI库导出Excel文件可以按照以下步骤进行:

  1. 添加NPOI库的引用:在项目中添加对NPOI库的引用。

  2. 创建一个新的Excel文件对象:使用NPOI中的HSSFWorkbook(对应.xls格式)或XSSFWorkbook(对应.xlsx格式)来创建一个新的Excel文件对象。

var workbook = new HSSFWorkbook(); // 或者使用 XSSFWorkbook()

  1. 创建一个工作表对象:使用workbook.CreateSheet()方法创建一个新的工作表对象。
var sheet = workbook.CreateSheet("Sheet1");

  1. 创建行和单元格:使用sheet.CreateRow()方法创建新的行对象,然后使用row.CreateCell()方法在行中创建单元格。
var row = sheet.CreateRow(0);
var cell = row.CreateCell(0);

  1. 设置单元格的值:使用cell.SetCellValue()方法设置单元格的值。
cell.SetCellValue("Hello World!");

  1. 保存Excel文件:使用FileStream将Excel文件保存到指定的路径。
using (var fs = new FileStream("path/to/file.xls", FileMode.Create, FileAccess.Write))
{workbook.Write(fs);
}

完整的示例代码如下:

using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using System.IO;class Program
{static void Main(string[] args){var workbook = new HSSFWorkbook();var sheet = workbook.CreateSheet("Sheet1");var row = sheet.CreateRow(0);var cell = row.CreateCell(0);cell.SetCellValue("Hello World!");using (var fs = new FileStream("path/to/file.xls", FileMode.Create, FileAccess.Write)){workbook.Write(fs);}}
}

注意:在使用NPOI库之前,需要将该库添加到项目中,可以通过NuGet包管理器添加NPOI库的引用。

接口示例

  /// <summary>/// 导出/// </summary>/// <param name="ids"></param>/// <returns></returns>[HttpPost]public FileStreamResult ExportExcel(List<IdInDto> ids){string zipPath = @$"{ExcelExporter.GetImportDir()}\{GUIDHelper.NewGuid}.zip";foreach (var item in dic){string filePath = @$"{ExcelExporter.GetImportDir()}\{item.Key}.xlsx";//生成excel逻辑ExcelExporter.AddFileToZip(zipPath, filePath);}FileStream fileStream = new FileStream(zipPath, FileMode.Open, FileAccess.Read);return new FileStreamResult(fileStream, "application/octet-stream") { FileDownloadName = "导出.zip" };}
  public class ExcelExporter{/// <summary>/// 创建目录/// </summary>/// <returns></returns>public static string GetImportDir(){string fileFolder = Path.Combine(AppContext.BaseDirectory, $"Export");fileFolder += "\\" + DateTime.Now.Date.ToString("yyyy-MM-dd");FileHelper.CreateIfNotExists(fileFolder);return fileFolder;}/// <summary>/// 添加文件到zip/// </summary>/// <param name="zipPath"></param>/// <param name="fileToAdd"></param>/// <exception cref="FileNotFoundException"></exception>public static void AddFileToZip(string zipPath, string fileToAdd){// 确保要添加的文件存在if (!File.Exists(fileToAdd)){throw new FileNotFoundException("文件未找到。");}// 确保ZIP文件存在if (!File.Exists(zipPath)){using (ZipArchive zipArchive = ZipFile.Open(zipPath, ZipArchiveMode.Create)){// 添加文件到ZIP文件中zipArchive.CreateEntryFromFile(fileToAdd, Path.GetFileName(fileToAdd));}}else{using (ZipArchive zipArchive = ZipFile.Open(zipPath, ZipArchiveMode.Update)){// 添加文件到ZIP文件中zipArchive.CreateEntryFromFile(fileToAdd, Path.GetFileName(fileToAdd));}}}}

http://www.lqws.cn/news/442711.html

相关文章:

  • Qt 解析复杂对象构成
  • 基于C#的Baumer相机二次开发教程
  • VACM 详解:SNMPv3 的访问控制核心
  • 基于大模型的急性结石性胆囊炎全流程预测与诊疗方案研究
  • 小白畅通Linux之旅-----Rsync+sersync实现数据实时同步
  • 九九乘法表
  • [Data Pipeline] Kafka消息 | Redis缓存 | Docker部署(Lambda架构)
  • 编辑器及脚本案例
  • 2025-05-05-80x86汇编语言环境配置
  • Java中创建线程的几种方式
  • 软考-软件设计师--校验码
  • 矩阵置零C++
  • jmeter学习
  • ABP VNext + MongoDB 数据存储:多模型支持与 NoSQL 扩展
  • HarmonyOS开发利器:ArkTS全解析
  • 深入解析connect函数:阻塞与非阻塞模式下的行为差异
  • 利用DevEco Studio对RK3588的HiHopesOS-4.1.110(OpenHarmony)进行Qt程序编写
  • Linux基本指令篇 —— mkdir指令
  • linux 非root 非sudo 如何安装软件
  • 基于Geotools的两条道路相交并根据交点形成新路线实战-以OSM数据为例
  • 微信小程序传参过来了,但是数据没有获取到
  • 编码规则设计唯一编码
  • 基于Spring Boot+Vue的“暖寓”宿舍管理系统设计与实现(源码及文档)
  • YunParking路内停车源码追缴分成机制设计与技术实现​
  • docker使用技巧之把扩展卷命名变成有意义
  • AWS Security Hub邮件告警设置
  • 计算机网络:(四)物理层的基本概念,数据通信的基础知识,物理层下面的传输媒体
  • 系统思考:结构影响行为
  • 基于 LLM 的网络钓鱼网站检测多代理框架
  • WEB安全--WAF的绕过思路