.net開發:NPOI生成excel文件到磁盤

源碼實測可用

使用.net工具包NPOI,生成excel文件到本地磁盤。

實際項目中可以指定路徑到服務器,把生成的文件存放到服務器指定目錄。

controller層

        [HttpPost("ExportExcel")]public void ExportExcel(){_TestService.ExportToExcel();}

service層

        public void ExportToExcel() {String FileName = "D:\\learning\\yxl\\chinese\\2024年7月10日星期三.xlsx";var chineseWordList = this.WrapChineseWord();ExportExcelToDiskUtils<ChineseWord>.ExportToExcel(chineseWordList, FileName);}

NPOI工具類

using Newtonsoft.Json;
using NPOI.HPSF;
using NPOI.SS.Formula.Functions;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.Reflection;namespace Learning.Dotnet
{public class ExportExcelToDiskUtils<T>{public static void ExportToExcel(List<T> list, String FileName){var workbook = new XSSFWorkbook();var sheet = workbook.CreateSheet("Sheet1");IRow row1 = sheet.CreateRow(0);Type t = typeof(T);int cell = 0;var properties = t.GetProperties().Where(p => p.GetCustomAttribute<JsonPropertyAttribute>() != null).Select(p => p).ToList();foreach (var pro in properties){row1.CreateCell(cell).SetCellValue(pro.GetCustomAttribute<JsonPropertyAttribute>().PropertyName);cell++;}int row = 1;foreach (var item in list){cell = 0;IRow newRow = sheet.CreateRow(row);foreach (var pro in properties){var value = list[row - 1];newRow.CreateCell(cell).SetCellValue(Convert.ToString(pro.GetValue(value, null)));cell++;}row++;}// 導出到文件using (FileStream file = new FileStream(FileName, FileMode.Create, FileAccess.Write)){workbook.Write(file);}// 釋放資源workbook.Close();}}
}

業務對象Model

using Newtonsoft.Json;namespace Learning.Models.Chinese
{public class ChineseWord{[JsonProperty(PropertyName = "field1")]public string field1 { get; set; }[JsonProperty(PropertyName = "field2")]public string field2 { get; set; }[JsonProperty(PropertyName = "field3")]public string field3 { get; set; }[JsonProperty(PropertyName = "field4")]public string field4 { get; set; }[JsonProperty(PropertyName = "field5")]public string field5 { get; set; }[JsonProperty(PropertyName = "field6")]public string field6 { get; set; }[JsonProperty(PropertyName = "field7")]public string field7 { get; set; }[JsonProperty(PropertyName = "field8")]public string field8 { get; set; }[JsonProperty(PropertyName = "field9")]public string field9 { get; set; }[JsonProperty(PropertyName = "field10")]public string field10 { get; set; }}
}

數據封裝

這里演示,直接mock數據,實際項目中,替換成自己的數據源即可。

        private List<ChineseWord> WrapChineseWord(){var chineseWord = new ChineseWord();chineseWord.field1 = "field1";chineseWord.field2 = "field2";chineseWord.field3 = "field3";chineseWord.field4 = "field4";chineseWord.field5 = "field5";chineseWord.field6 = "field6";chineseWord.field7 = "field7";chineseWord.field8 = "field8";chineseWord.field9 = "field9";chineseWord.field10 = "field10";var chineseWord2 = new ChineseWord();chineseWord2.field1 = "field1";chineseWord2.field2 = "field2";chineseWord2.field3 = "field3";chineseWord2.field4 = "field4";chineseWord2.field5 = "field5";chineseWord2.field6 = "field6";chineseWord2.field7 = "field7";chineseWord2.field8 = "field8";chineseWord2.field9 = "field9";chineseWord2.field10 = "field10";var chineseWordList = new List<ChineseWord>();chineseWordList.Add(chineseWord);chineseWordList.Add(chineseWord2);_Logger.LogInformation("chineseWordList:{}", JsonConvert.SerializeObject(chineseWordList));return chineseWordList;}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/43021.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/43021.shtml
英文地址,請注明出處:http://en.pswp.cn/web/43021.shtml

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

相關文章

redis中的事務和mysql中的事務有什么區別?

Redis和MySQL的事務在概念和特性上存在一些顯著的區別&#xff1a; 1. 原子性&#xff08;Atomicity&#xff09;: - MySQL&#xff1a;事務具有原子性&#xff0c;即事務中的所有操作要么全部成功&#xff0c;要么全部失敗&#xff0c;如果中途出現錯誤&#xff0c;整個事…

Linux內核 -- 虛擬化之virtqueue結構

Linux Kernel中的Virtqueue Virtqueue是Linux Kernel中用于實現Virtio設備的一個關鍵數據結構。Virtio是一種虛擬I/O設備標準&#xff0c;旨在簡化虛擬化環境中虛擬設備與虛擬機之間的通信。Virtqueue則是實現這種通信的核心機制。以下是Virtqueue的一些關鍵點&#xff1a; V…

主流I/O模型總結(Linux Windows)

I/O復用模型(EPOLL) 模型思想&#xff1a;向內核注冊需要監聽的文件描述符&#xff0c;操作系統負責保存監視對象文件描述符&#xff0c;當有事件發生時,epoll_wait僅返回有事件發生的文件描述符數組 優點&#xff1a; 1.無需編寫以監視狀態為目的的針對所有文件描述符的循環語…

案例|水上水下一體化測量,為九寨溝精準把脈

? 九寨溝&#xff0c;被譽為“人間仙境”&#xff0c;其湖群以獨特的地理位置和優美的自然景觀吸引著世界各地的游客&#xff0c;更是九寨溝生態系統中不可或缺的重要組成部分。因此&#xff0c;精準地掌握湖群的地形數據、水體分布及變化情況&#xff0c;能夠揭示水下生態系…

【數據結構與算法基礎】算法復雜度

歡迎光顧我的homepage 前言 算法就是定義良好的計算過程&#xff0c;它取一個活一組的值輸入&#xff0c;并產生出一個或一組值作為輸出。簡單來說&#xff0c;算法就是一系列的計算步驟&#xff0c;用來將輸入數據轉化成輸出結果。 一、算法效率 如何去衡量一個算法的好壞&am…

[C++]——同步異步日志系統(3)

同步異步日志系統 一、日志系統框架設計1.1模塊劃分1.1.1 日志等級模塊1.1.2 日志消息模塊1.1.3 日志消息格式化模塊1.1.4 日志落地模塊&#xff08;日志落地的方向是工廠模式&#xff09;1.1.5 日志器模塊&#xff08;日志器的生成是建造者模式&#xff09;1.1.6 異步線程模塊…

Android12上實現雙以太網卡共存同時訪問外網

具體實現如下&#xff1a; 修改main 表優先級到9999&#xff0c; 作用&#xff1a;eth0 eth1 訪問 不去teardown 低分數網線 diff --git a/service/src/com/android/server/ConnectivityService.java b/service/src/com/android/server/ConnectivityService.java index 418e…

Ubuntu 22.04 設置swap交換空間

經常爆內存&#xff0c;導致很多應用沒有辦法一直正常運行&#xff0c;可以通過設置swap來緩解一下&#xff0c;雖然和內存的速度無法媲美&#xff0c;但是能一定程度緩解一下問題。 一、查看當前分區 查看當前系統的swap大小 free -m 二、關閉現有的swap分區 將/etc/fstab…

CUDA Kernel調試與優化--背景知識掃盲(LLM生成)

CUDA Kernel調試與優化–背景知識掃盲(LLM生成) 對于使用CUDA進行調試與性能優化&#xff0c;官方提供了豐富的參考資料和工具。以下是一些關鍵資源&#xff0c;可以幫助你更好地調試和優化CUDA代碼&#xff1a; 官方文檔和指南 CUDA Toolkit Documentation URL: CUDA Toolk…

強化學習總結(有具體代碼實現)

文章目錄 第一部分 強化學習基礎第1章 強化學習概述1.1 強化學習概念1.2 強化學習的環境1.3 強化學習的目標1.4 強化學習的數據 第2章 多臂老虎機問題&#xff08;MAB問題&#xff09;2.1 問題描述2.1.1 問題定義2.1.2 形式化描述2.1.3 累積懊悔2.1.4 估計期望獎勵 2.2 解決方法…

CSS 【詳解】CSS 函數(含 calc,min,max,clamp,cubic-bezier,env,steps 等)

函數描述CSS 版本attr()返回選擇元素的屬性值。2calc()允許計算 CSS 的屬性值&#xff0c;比如動態計算長度值。3cubic-bezier()定義了一個貝塞爾曲線(Cubic Bezier)。3hsl()使用色相、飽和度、亮度來定義顏色。3hsla()使用色相、飽和度、亮度、透明度來定義顏色。3linear-grad…

Bert 變種, T5模型

NLP-預訓練模型-2019-NLU&#xff1a;DistilBERT【 BERT模型壓縮】【模型大小減小了40%&#xff08;66M&#xff09;&#xff0c;推斷速度提升了60%&#xff0c;但性能只降低了約3%】_distillbert-CSDN博客 https://zhuanlan.zhihu.com/p/673535548 大語言模型系列-T5_t5模型…

【機器學習】必會數學知識:一文掌握數據科學核心數學知識點(上),值得收藏~

核心數學知識點 1、引言2、數據科學必會數學知識2.1 線性代數2.2 微積分2.3 概率論2.4 數理統計2.5 隨機過程2.6 數據分布2.7 貝葉斯統計2.8 線性回歸2.9 邏輯回歸2.10 矩陣分解2.11 主成分分析&#xff08;PCA&#xff09;2.12 奇異值分解&#xff08;SVD&#xff09; 3、總結…

【Git 入門】初始化配置與新建倉庫

文章目錄 前言配置git新建倉庫倉庫的概念創建倉庫命令總結前言 在現代軟件開發中,版本控制系統已經成為了不可或缺的工具。其中,Git 是最為廣泛使用的版本控制系統之一。Git 不僅可以幫助我們管理和跟蹤代碼的變化,還可以方便地與他人協作。本文將介紹 Git 的基礎知識,包括…

【人工智能大語言模型技術發展研究報告 2024】

文末?有福利&#xff01; 人工智能作為引領新一輪科技產業革命的戰略性技術和新質生產力重要驅動力&#xff0c;正在引發經濟、社會、文化等領域的變革和重塑&#xff0c;2023 年以來&#xff0c;以 ChatGPT、GPT-4 為代表的大模型技術的出臺&#xff0c;因其強大的內容生成及…

提升教師健康,聚焦智慧校園人事系統的職工體檢功能

智慧校園人事管理系統內置的職工體檢管理&#xff0c;是專為教職員工設計的一項健康管理創新實踐&#xff0c;巧妙融合先進信息技術&#xff0c;致力于為教職工提供更加便捷、易懂且持續性的健康檢查與管理支持。該服務從多個維度出發&#xff0c;全面呵護教職工的身心健康。 該…

給你的博客加上評論區

一個網站如果有評論功能&#xff0c;可以更好的和讀者互動。VuePress 也有很多評論插件&#xff0c;這里簡單介紹下&#xff0c;最后介紹本站所使用的 Twikoo。 大部分評論插件都是使用的 Github 或 Gitee 的 issue 功能&#xff0c;也就是用 issue 去存儲評論&#xff1b;而 …

自然語言處理(NLP)與大語言模型(LLM) 主要差異

一、簡述 NLP 和 LLM 技術是大規模分析和生成人類語言的核心。隨著它們的日益普及&#xff0c;區分 LLM 與 NLP 變得越來越重要。 NLP 包含一套用于理解、操縱和生成人類語言的算法。自 20 世紀 50 年代誕生以來&#xff0c;NLP 已發展到分析文本關系的階段。它使用詞性標注、命…

腳本實現保留文本中特定字符之后的字符串

#目的背景 原始txt文本如下圖 目的是為了去除序號&#xff0c;每行只單獨呈現域名 手工刪除漫長又麻煩&#xff0c;使用腳本快捷些 代碼實現邏輯&#xff1a; 1.使用open函數打開文本&#xff0c;之后用變量lines存儲文本的所有行&#xff0c;使用for循環&#xff0c;讓變量te…

暑假學習計劃怎么做 用待辦計劃軟件安排更科學

暑期來臨&#xff0c;無論是學生還是老師&#xff0c;做好暑期計劃都至關重要。記得去年暑假&#xff0c;我給自己定下了閱讀十本書的目標&#xff0c;卻因為缺乏明確的計劃&#xff0c;最后只草草讀完了兩本。而今年&#xff0c;我決定嘗試一種新的方式——使用待辦計劃軟件來…