当前位置: 首页 > 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));}}}}

相关文章:

  • 【跨界新视野】信号处理遇上VR/AR:下一代沉浸体验的核心技术与您的发表蓝海
  • STUN (Session Traversal Utilities for NAT) 服务器是一种网络协议
  • Linux 上 Ollama 部署为系统服务
  • 飞算JavaAI编程助手在IDEA中的安装教程:本地安装、离线安装、在线安装方法大全
  • 【Redis】Redis核心探秘:数据类型的编码实现与高速访问之道
  • 114. 二叉树展开为链表 --- 头插法(js)
  • SQL关键字三分钟入门: 表结构管理与分区设计。(ALTER、MODIFY、CHANGE、DEFAULT、VALUES、LESS THAN、RANGE)
  • 湖北理元理律师事务所:法律框架下的债务优化与生活重建双轨支持
  • 量子级网络通信系统:超维架构下的开发与星际级交互实现,突破传统边界的异构网络通信矩阵系统设计
  • Telerik生态整合:Kendo UI for Angular组件在WinForms应用中的深度嵌入(二)
  • 【算力网络】算网安全
  • 工程师生活:清除电热水壶(锅)水垢方法
  • 记一次jdk版本引起的生产问题
  • 详解鸿蒙Next仓颉开发语言中的全屏模式
  • 【技巧】使用frpc安全地内网穿透ssh访问内网机器
  • AWS数据库迁移实战:本地MySQL零停机上云方案
  • DL___线性神经网络
  • 处理器特性有哪些?
  • 【HarmonyOS Next之旅】DevEco Studio使用指南(三十五) -> 配置构建(二)
  • C语言笔记(鹏哥)上课板书+课件汇总(KMP算法的动态规划简易处理+字符函数和字符串函数)
  • 个人如何在企业网站做实名认证/百度一下就知道官方网站
  • 网站做一样没有侵权吧/互联网营销是什么意思
  • 网站备案证明/淘宝店怎么运营和推广
  • 陕西做网站的/2345网址导航安装
  • 昆山做网站的公司/百度关键词如何优化
  • 网站制作费用/今日新闻联播