使用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.pswp.cn/web/84549.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/84549.shtml
英文地址,請注明出處:http://en.pswp.cn/web/84549.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【AGI】突破感知-決策邊界:VLA-具身智能2.0

突破感知-決策邊界&#xff1a;VLA-具身智能2.0 &#xff08;一&#xff09;技術架構核心&#xff08;二&#xff09;OpenVLA&#xff1a;開源先鋒與性能標桿&#xff08;三&#xff09;應用場景&#xff1a;從實驗室走向真實世界&#xff08;四&#xff09;挑戰與未來方向&…

消融實驗視角下基于混合神經網絡模型的銀行股價預測研究

鏈接: 項目鏈接_link 結果 模型消融&#xff1a; 特征消融&#xff1a; 中國銀行_不同模型預測結果和模型評估可視化 招商銀行_不同模型預測結果和模型評估可視化 模型評估可視化

MySQL存儲引擎與架構

MySQL存儲引擎與架構 1.1詳細了解數據庫類型 1.1.1關系型數據庫 常見產品&#xff1a;MySQL&#xff08;免費&#xff09;、Oracle 關系型數據庫模型是把復雜的數據結構歸結為簡單二維表格形式。通常該表第一行為字段名稱&#xff0c;描述該字段的作用&#xff0c;下面是具體…

將浮點數轉換為分數

原理 double 由以下部分組成&#xff1a; 符號位指數部分尾數部分 符號位的含義&#xff1a;為 0 表示正數&#xff0c;為 1 表示負數。指數部分的含義&#xff1a;在規格化數中&#xff0c;指數部分的整型值減去 1023 就是實際的指數值。在非規格化數中&#xff0c;指數恒為…

前端實現截圖的幾種方法

前端實現截圖的幾種方法 前端實現截圖功能有多種方式&#xff0c;下面我將介紹幾種常用的方法及其實現方案。 1. 使用 html2canvas 庫 html2canvas 是最流行的前端截圖解決方案之一&#xff0c;它可以將 DOM 元素轉換為 canvas。 基本用法 import html2canvas from html2c…

TDengine 與開源可視化編程工具 Node-RED 集成

簡介 Node-RED 是由 IBM 開發的基于 Node.js 的開源可視化編程工具&#xff0c;通過圖形化界面組裝連接各種節點&#xff0c;實現物聯網設備、API 及在線服務的連接。同時支持多協議、跨平臺&#xff0c;社區活躍&#xff0c;適用于智能家居、工業自動化等場景的事件驅動應用開…

OpenCV——圖像形態學

圖像形態學 一、像素的距離二、像素的鄰域三、膨脹與腐蝕3.1、結構元素3.2、腐蝕3.3、膨脹 四、形態學操作4.1、開運算和閉運算4.2、頂帽和黑帽4.3、形態學梯度4.4、擊中擊不中 一、像素的距離 圖像中像素之間的距離有多種度量方式&#xff0c;其中常用的有歐式距離、棋盤距離…

在Django中把Base64字符串保存為ImageField

在數據model中使用ImageField來管理avatar。 class User(models.Model):AVATAR_COLORS ((#212736, Black),(#2161FD, Blue),(#36B37E, Green),(#F5121D, Red),(#FE802F, Orange),(#9254DE, Purple),(#EB2F96, Magenta),)def generate_filename(self, filename):url "av…

使用 R 處理圖像

在 R 中進行圖像處理&#xff0c;使用像 imager 這樣的包&#xff0c;可以實現強大的數字圖像分析和處理。本博客將基于"圖像數據分析"文檔的概念&#xff0c;演示使用 imager 包進行的關鍵技術——圖像增強、去噪和直方圖均衡化&#xff0c;并通過可視化結果展示這些…

一命速通Prometheus+Grafana+Consul+VictoriaMetrics

Prometheus業務 搭建及使用 注意&#xff1a;優先看完提供的博客鏈接&#xff0c;可以快速了解該工具的功能及其搭建和使用。 prometheusgrafana 一、PrometheusGrafana普羅米修斯&#xff0c;搭建和使用_普羅米修斯 grafana-CSDN博客 ./prometheus --config.fileprometheus.ym…

螞蟻百寶箱快速創建智能體AI小程序

螞蟻百寶箱官網https://tbox.alipay.com/community?operationSource1006/ 以下是一篇關于螞蟻百寶箱快速創建智能體 AI 小程序的圖文并茂的博客&#xff1a; 標題&#xff1a;螞蟻百寶箱快速創建智能體 AI 小程序&#xff0c;開啟智能應用新體驗 引言 在數字化飛速發展的當…

大模型面試題:RL Scaling Law 中的“過優化”現象及其緩解方法是啥?

更多面試題&#xff0c;請看 大模型面試題總結-CSDN博客 或者 https://gitee.com/lilitom/ai_interview_questions/blob/master/README.md 最好將URL復制到瀏覽器中打開&#xff0c;不然可能無法直接打開 ---------------------------------------------------------------…

Filecoin系列 - IPLD 技術分析

1. 用途 1.1 存儲數據 為了成功地將數據加到 Filecoin 網絡, 需要成功完成以下步驟: 客戶端導入數據生成CAR文件: 數據必須打包成 CAR file (內容可尋址檔案) - CAR是IPLD規范的序列化歸檔文件.存儲交易: 存儲供應商和客戶之間的存儲交易必須由客戶發起, 并由存儲供應商接受…

Apptrace如何幫我精準追蹤移動廣告效果?

開發者視角&#xff1a;Apptrace如何幫我精準追蹤移動廣告效果&#xff1f;?? 作為獨立開發者&#xff0c;我最頭疼的就是?“廣告投放到底有沒有用&#xff1f;”?——錢花出去了&#xff0c;用戶是刷量機器人還是真實用戶&#xff1f;哪個渠道的ROI最高&#xff1f;Apptr…

【MySQL篇07】:redo log日志與buffer pool詳解

文章目錄 1. Buffer Pool 緩沖池2. redo log (重做日志)redo log 的作用&#xff1a;為什么需要 redo log buffer&#xff1f;什么時候刷盤呢&#xff1f; 3. 總結一下 redo log 和 Buffer Pool 在更新數據時的協同工作關鍵組件關系圖刷盤完成后 1. Buffer Pool 緩沖池 首先&a…

Qt Library庫系列----Serial串口

前言 每次寫串口相關的功能時&#xff0c;總是需要重新寫或者復制原來寫過的文件&#xff0c;容易出錯不說&#xff0c;這也不是碼農的風格&#xff0c;所以還是得有一套自己得代碼庫&#xff0c;方便調用&#xff0c;又能保持神秘感。 一、開發需求 1.有個實例類&#xff1b;…

第八節:Vben Admin 最新 v5.0 (vben5) 快速入門 - 用戶管理(下)

Vben5 系列文章目錄 ?? 基礎篇 ? 第一節:Vben Admin 最新 v5.0 (vben5) 快速入門 ? 第二節:Vben Admin 最新 v5.0 (vben5) 快速入門 - Python Flask 后端開發詳解(附源碼) ? 第三節:Vben Admin 最新 v5.0 (vben5) 快速入門 - 對接后端登錄接口(上) ? 第四節:Vben Ad…

Redis 性能瓶頸時如何處理?

當 Redis 遇到性能瓶頸時&#xff0c;需要從多個維度進行排查和優化。以下是系統化的解決方案&#xff0c;涵蓋硬件、配置、數據模型、網絡等關鍵點&#xff1a; 一、硬件資源優化 內存瓶頸 現象&#xff1a;頻繁觸發 OOM 或 used_memory 接近物理內存。解決&#xff1a; 升級服…

多相機三維人臉掃描儀:超寫實數字人模型制作“加速器”

超寫實數字人&#xff0c;又稱“數字分身”&#xff0c;是以真人形象為原型構建的高仿真虛擬形象&#xff0c;按維度可分為2D數字人與3D數字人。這類數字人已廣泛應用于影視制作、游戲交互、品牌直播等場景&#xff0c;其核心價值在于通過技術手段實現真人形象的數字化復刻&…

ceph 自動調整 pg_num

要讓 Ceph 的 pool 自動調整 pg_num(PG 數量),你需要啟用 PG autoscaler。這是從 Ceph Octopus(15.x) 開始引入的功能,能根據池的容量和對象數量自動建議或調整 pg_num,以實現負載均衡。 ? 一步步開啟 Pool 的 pg_num 自動調整 1. 啟用 PG autoscaler 模塊(通常默認啟…