C# 或 .NetCore 如何使用 NPOI 導出圖片到 Excel 文件

????????今天在本文中,我們將嘗試使用NPOI庫將圖像插入到 Excel 文件的特定位置。請將以下邏輯添加到您的寫作方法中,在 Excel 文件中添加圖像(JPEG、PNG),我已經有一個示例 jpeg 文件 - Read-write-excel-npoi.jpg ,我們將嘗試將其插入索引 (5,5),即第 5 行和第 5 列。

在第 5 行和第 5 列,將以編程方式插入上述圖像,代碼如下:

????????????????byte[] data = File.ReadAllBytes("Read-write-excel-npoi.jpg");//根據自己路徑讀取圖片

? ? ? ? ? ? ? ? int pictureIndex = workbook.AddPicture(data, PictureType.JPEG);

? ? ? ? ? ? ? ? ICreationHelper helper = workbook.GetCreationHelper();

? ? ? ? ? ? ? ? IDrawing drawing = excelSheet.CreateDrawingPatriarch();

? ? ? ? ? ? ? ? IClientAnchor anchor = helper.CreateClientAnchor();

? ? ? ? ? ? ? ? anchor.Col1 = 5;

? ? ? ? ? ? ? ? anchor.Row1 = 5;

? ? ? ? ? ? ? ? IPicture picture = drawing.CreatePicture(anchor, pictureIndex);

? ? ? ? ? ? ? ? picture.Resize();?

用圖像寫入 EXCEL
下面是一個 POC 完整代碼示例,如下所示:?

static void WriteExcel()
? ? ? ?{
? ? ? ? ? ?List<UserDetails> persons = new List<UserDetails>()
? ? ? ? ? ?{

? ? ? ? ? ? ? ?new UserDetails() {ID="1001", Name="ABCD", City ="City1", Country="USA"},

? ? ? ? ? ? ? ?new UserDetails() {ID="1002", Name="PQRS", City ="City2", Country="INDIA"},

? ? ? ? ? ? ? ?new UserDetails() {ID="1003", Name="XYZZ", City ="City3", Country="CHINA"},

? ? ? ? ? ? ? ?new UserDetails() {ID="1004", Name="LMNO", City ="City4", Country="UK"},
? ? ? ? ? };
?
? ? ? ? ? ?// Lets converts our object data to Datatable for a simplified logic.
? ? ? ? ? ?// Datatable is most easy way to deal with complex datatypes for easy reading and formatting.?
? ? ? ? ? ?DataTable table = (DataTable)JsonConvert.DeserializeObject(JsonConvert.SerializeObject(persons), (typeof(DataTable)));
?
?
? ? ? ? ? ?var memoryStream = new MemoryStream();
?
? ? ? ? ? ?using (var fs = new FileStream("Result.xlsx", FileMode.OpenOrCreate, FileAccess.Write))
? ? ? ? ? ?{
? ? ? ? ? ? ? ?IWorkbook workbook = new XSSFWorkbook();
? ? ? ? ? ? ? ?ISheet excelSheet = workbook.CreateSheet("TestSheet1");
?
? ? ? ? ? ? ? ?List<String> columns = new List<string>();
? ? ? ? ? ? ? ?IRow row = excelSheet.CreateRow(0);
? ? ? ? ? ? ? ?int columnIndex = 0;
?
? ? ? ? ? ? ? ?foreach (System.Data.DataColumn column in table.Columns)
? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ?columns.Add(column.ColumnName);
? ? ? ? ? ? ? ? ? ?row.CreateCell(columnIndex).SetCellValue(column.ColumnName);
? ? ? ? ? ? ? ? ? ?columnIndex++;
? ? ? ? ? ? ? ?}
?
? ? ? ? ? ? ? ?int rowIndex = 1;
? ? ? ? ? ? ? ?foreach (DataRow dsrow in table.Rows)
? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ?row = excelSheet.CreateRow(rowIndex);
? ? ? ? ? ? ? ? ? ?int cellIndex = 0;
? ? ? ? ? ? ? ? ? ?foreach (String col in columns)
? ? ? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ? ? ?row.CreateCell(cellIndex).SetCellValue(dsrow[col].ToString());
? ? ? ? ? ? ? ? ? ? ? ?cellIndex++;
? ? ? ? ? ? ? ? ? ?}
?
? ? ? ? ? ? ? ? ? ?rowIndex++;
? ? ? ? ? ? ? ?}
?
? ? ? ? ? ? ? ?byte[] data = File.ReadAllBytes("Read-write-excel-npoi.jpg");

? ? ? ? ? ? ? ?int pictureIndex = workbook.AddPicture(data, PictureType.JPEG);

?? ??? ??? ? ? ICreationHelper helper = workbook.GetCreationHelper();

? ? ? ? ? ? ? ?IDrawing drawing = excelSheet.CreateDrawingPatriarch();

? ? ? ? ? ? ? ?IClientAnchor anchor = helper.CreateClientAnchor();

? ? ? ? ? ? ? ?anchor.Col1 = 5;

? ? ? ? ? ? ? ?anchor.Row1 = 5;

? ? ? ? ? ? ? ?IPicture picture = drawing.CreatePicture(anchor, pictureIndex);

? ? ? ? ? ? ? ?picture.Resize();
?
? ? ? ? ? ? ? ?workbook.Write(fs);
? ? ? ? ? ?}
? ? ? ?}?

????????我將圖像文件保存在同一個項目目錄中,以便 Excel API 可以使用它并將其加載到 Excel 中的正確位置。最后圖像將成功輸入到所需位置:

如果您喜歡此文章,請收藏、點贊、評論,謝謝,祝您快樂每一天。

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

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

相關文章

【學習筆記】理解深度學習的基礎:機器學習

1. 機器學習基礎 1.1 機器學習的定義與重要性 定義&#xff1a;深度學習是機器學習的一種特定形式。為了深入理解深度學習&#xff0c;必須牢固掌握機器學習的基本原理。機器學習算法是一種能夠從數據中學習的算法&#xff0c;通過經驗E在任務T上提高性能度量P&#xff08;Mi…

Observability:將 OpenTelemetry 添加到你的 Flask 應用程序

作者&#xff1a;來自 Elastic jessgarson 待辦事項列表可以幫助管理與假期計劃相關的所有購物和任務。使用 Flask&#xff0c;你可以輕松創建待辦事項列表應用程序&#xff0c;并使用 Elastic 作為遙測后端&#xff0c;通過 OpenTelemetry 對其進行監控。 Flask 是一個輕量級…

使用Matplotlib顯示中文的方法

1 問題提出 使用圖1所示的代碼進行matplotlib繪圖時&#xff0c;因為其默認不支持中文&#xff0c;此時無法顯示正確內容&#xff0c;如圖2所示。 圖1 matplotlib繪圖繪圖代碼 圖2 matplotlib無法顯示中文 2 問題解決 2.1 設置全局字體 在圖1所示的代碼中&#xff0c;第13…

詳解opencv resize之INTER_LINEAR和INTER_AREA

一。先簡單介紹一下resize的用法 src&#xff1a;輸入圖&#xff0c; dst&#xff1a;輸出圖 dsize&#xff1a;輸出圖的寬高&#xff0c;如果dsize不為空&#xff08;即寬高都不是0&#xff09;&#xff0c;則以dsize為準進行resize。 fx, fy是放大縮小的比例&#xff0c;是…

UnityDemo-TheBrave-制作筆記

這是我跟著b站up主MStudio的視頻學習制作的&#xff0c;大體上沒有去做一些更新的東西&#xff0c;這里只是一個總的總結。在文章的最后&#xff0c;我會放上可以游玩該游戲的鏈接和exe可執行文件&#xff0c;不過沒有對游戲內容進行什么加工&#xff0c;只有基本的功能實現罷了…

使用LSTM預測股票收盤價

在金融數據預測中&#xff0c;LSTM&#xff08;長短期記憶網絡&#xff09;憑借其在時間序列數據建模中的優勢&#xff0c;成為了分析股票價格趨勢的熱門選擇。本篇博客將以完整的代碼實現為例&#xff0c;展示如何利用LSTM網絡對股票收盤價進行預測&#xff0c;并從數據處理到…

模擬SpringIOCAOP

一、IOC容器 Ioc負責創建&#xff0c;管理實例&#xff0c;向使用者提供實例&#xff0c;ioc就像一個工廠一樣&#xff0c;稱之為Bean工廠 1.1 Bean工廠的作用 先分析一下Bean工廠應具備的行為 1、需要一個獲取實例的方法&#xff0c;根據一個參數獲取對應的實例 getBean(…

預編譯SQL

預編譯SQL 預編譯SQL是指在數據庫應用程序中&#xff0c;SQL語句在執行之前已經通過某種機制&#xff08;如預編譯器&#xff09;進行了解析、優化和準備&#xff0c;使得實際執行時可以直接使用優化后的執行計劃&#xff0c;而不需要每次都重新解析和編譯。這么說可能有一些抽…

Centos9 + Docker 安裝 MySQL8.4.0 + 定時備份數據庫到本地

Centos9 + Docker 安裝 MySQL8.4.0 + 定時備份數據庫到本地 創建目錄,創建配置文件啟動容器命令定時備份MySQL執行腳本Linux每日定時任務命令文件內參數其他時間參數AT一次性定時任務創建目錄,創建配置文件 $ mkdir -p /opt/mysql/conf$ vim /opt/mysql/conf/my.cnf[mysql] #…

軟件測試預備知識⑥—搭建Web服務器

在軟件測試的廣闊領域中&#xff0c;搭建Web服務器是一項極為關鍵的技能。它不僅有助于模擬真實的應用環境&#xff0c;方便我們對Web應用進行全面且深入的測試&#xff0c;還能讓測試人員更好地掌控測試場景&#xff0c;提升測試效率與質量。接下來&#xff0c;讓我們一同深入…

計算機視覺算法實戰——打電話行為檢測

?個人主頁歡迎您的訪問 ?期待您的三連 ? ?個人主頁歡迎您的訪問 ?期待您的三連 ? ?個人主頁歡迎您的訪問 ?期待您的三連? ??????? ??????????????? ?????? ? 1. 引言?? 隨著智能手機的普及&#xff0c;打電話行為檢測成為了計算機視…

事務的隔離級別和MDL

文章目錄 說明不同隔離級別可能發生的現象關鍵現象解釋MDL&#xff08;元數據鎖&#xff0c;Metadata Lock&#xff09;MDL 的作用MDL 的工作原理MDL 鎖的常見場景如何避免 MDL 阻塞 說明 本文章由大模型對話整理而來&#xff0c;如果有錯誤之處&#xff0c;請在評論區留言指正…

Linux第二課:LinuxC高級 學習記錄day01

0、大綱 0.1、Linux 軟件安裝&#xff0c;用戶管理&#xff0c;進程管理&#xff0c;shell 命令&#xff0c;硬鏈接和軟連接&#xff0c;解壓和壓縮&#xff0c;功能性語句&#xff0c;結構性語句&#xff0c;分文件&#xff0c;make工具&#xff0c;shell腳本 0.2、C高級 …

單片機存儲與計算機存儲:從微小到龐大的數據世界

單片機存儲與計算機存儲&#xff1a;從微小到龐大的數據世界 在現代電子設備中&#xff0c;存儲是至關重要的組成部分。無論是小巧的單片機&#xff0c;還是功能強大的計算機&#xff0c;存儲都扮演著不可或缺的角色。然而&#xff0c;單片機和計算機的存儲架構卻有著天壤之別…

ISP流程--去馬賽克詳解

前言 本期我們將深入討論ISP流程中的去馬賽克處理。我們熟知&#xff0c;彩色圖像由一個個像元組成&#xff0c;每個像元又由紅、綠、藍&#xff08;RGB&#xff09;三通道構成。而相機傳感器只能感知光的強度&#xff0c;無法直接感知光譜信息&#xff0c;即只有亮暗而沒有顏色…

阿里云-通義靈碼:在 PyCharm 中的強大助力(下)

目錄 六.通義靈碼在 PyCharm 中的優勢與不足 1.優勢 (1).提高開發效率 (2).提升代碼質量 (3).易于使用 (4).不斷學習和改進 2.不足 (1).依賴網絡 (2).準確性有待提高 (3).局限性 七.未來發展展望 1.提高準確性和可靠性 2.與其他工具的集成 3.智能化程度的提升 八…

開源項目stable-diffusion-webui部署及生成照片

參考鏈接 https://www.freedidi.com/13133.html 基礎環境部署 python 官網鏈接 Python Release Python 3.10.6 | Python.org 下載 Python 3.10.6 版本安裝包 下載好后雙擊 點擊安裝&#xff0c;這里需要選擇一下&#xff0c;把環境變量加上。&#xff08;這里是默認安裝到C盤…

【芯片封測學習專欄 -- 單 Die 與 多Die(Chiplet)介紹】

請閱讀【嵌入式開發學習必備專欄 Cache | MMU | AMBA BUS | CoreSight | Trace32 | CoreLink | ARM GCC | CSH】 文章目錄 Overview單個Die&#xff08;Monolithic Die&#xff09;多個Die&#xff08;Chiplet Architecture or Heterogeneous SoC&#xff09;如何判斷一個SoC是…

Windows 安裝 Docker 和 Docker Compose

&#x1f680; 作者主頁&#xff1a; 有來技術 &#x1f525; 開源項目&#xff1a; youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template &#x1f33a; 倉庫主頁&#xff1a; GitCode︱ Gitee ︱ Github &#x1f496; 歡迎點贊 &#x1f44d; 收藏 ?評論 …

java_將數據存入elasticsearch進行高效搜索

使用技術簡介&#xff1a; (1) 使用Nginx實現反向代理&#xff0c;使前端可以調用多個微服務 (2) 使用nacos將多個服務管理關聯起來 (3) 將數據存入elasticsearch進行高效搜索 (4) 使用消息隊列rabbitmq進行消息的傳遞 (5) 使用 openfeign 進行多個服務之間的api調用 參…