WinForm 使用 NPOI 2.2.1從datatable導出Excel

来源:http://www.cnblogs.com/Aaxuan/archive/2017/05/24/6899961.html
-Advertisement-
Play Games

最新的NOPI應該是2.3了,但在官網上還是2.2.1。 也是第一次使用NPOI來導出Excel文件。 在寫的時候搜不到2.2.1的教程,搜了一個2.2.0的教程。 不過也沒什麼問題,NPOI是真的方便簡單。 不多說,放代碼 因為我的第一列是一個內碼值,要將他屏蔽掉, 所以在迴圈填充數據的時候,初始 ...


最新的NOPI應該是2.3了,但在官網上還是2.2.1。

也是第一次使用NPOI來導出Excel文件。

在寫的時候搜不到2.2.1的教程,搜了一個2.2.0的教程。

不過也沒什麼問題,NPOI是真的方便簡單。

 

不多說,放代碼

            IWorkbook excel = new HSSFWorkbook();//創建.xls文件
            ISheet sheet = excel.CreateSheet("sheet1"); //創建sheet

            DataTable datatable = (DataTable)dataGridView.DataSource;//獲取數據源datatable

            IRow row = sheet.CreateRow(0);//創建行對象,填充表頭
            foreach (DataColumn column in datatable.Columns)
            {
                row.CreateCell(0).SetCellValue("供應商編號");
                row.CreateCell(1).SetCellValue("供應商名稱");
                row.CreateCell(2).SetCellValue("供應商聯繫方式");
                row.CreateCell(3).SetCellValue("供應商地址");
                row.CreateCell(4).SetCellValue("供應商稅號");
                row.CreateCell(5).SetCellValue("供應商初期應付款");
                row.CreateCell(6).SetCellValue("供應商分類");
                row.CreateCell(7).SetCellValue("供應商分類編號");
            }

            //填充內容,j從1開始,屏蔽掉第一列,迴圈讀取
            for (int i = 0; i < datatable.Rows.Count; i++)
            {
                row = sheet.CreateRow(i + 1);
                for (int j = 1; j < datatable.Columns.Count; j++)
                {
                    row.CreateCell(j-1).SetCellValue(datatable.Rows[i][j].ToString());
                    sheet.AutoSizeColumn(j);
                }
            }

            //寫入文件
            string DesktopPath = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
            FileStream xlsfile = new FileStream(DesktopPath + @"\供應商信息Excel" + DateTime.Now.ToString("yyyy-MM-dd") + ".xls", FileMode.Create);
            excel.Write(xlsfile);
            xlsfile.Close();

            MessageBox.Show("Excel文件已導出到桌面","提示");

因為我的第一列是一個內碼值,要將他屏蔽掉,

所以在迴圈填充數據的時候,初始化 j=1,但在之後的列數中,這樣會導致空出一列,所以再使用j-1。

其實也可以通過操作 datatable 來屏蔽掉這一列。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 首先看一下什麼是GTID: GTID(Global Transaction ID)是對於一個已提交事務的編號,並且是一個全局唯一的編號。 GTID實際上是由UUID+TID組成的。其中UUID是一個MySQL實例的唯一標識。TID代表了該實例上已經提交的事務數量,並且隨著事務提交單調遞增。根據GTI ...
  • Neo4j使用Cypher查詢圖形數據,Cypher是描述性的圖形查詢語言,語法簡單,功能強大,由於Neo4j在圖形資料庫家族中處於絕對領先的地位,擁有眾多的用戶基數,使得Cypher成為圖形查詢語言的事實上的標準。本文作為入門級的教程,我不會試圖分析Cypher語言的全部內容,本文的目標是循序漸進 ...
  • " 1、同義詞 " " 2、Flashback 技術 " " 3、連接字元串的寫法 " " 4、轉義字元 & 特殊運算符 " " 5、文件類型 " " 6、查看參數 & 修改參數 " " 7、AWR 工具 " " 8、學習方法 & 學習資料 " 1、同義詞 概念 同義詞是資料庫對象的一個別名,常用於 ...
  • ———————————————————————————————————————————— 直流電動機應用實例 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ...
  • Java中這個類庫叫POI,C#中叫NPOI,很多從Java一直到.Net平臺的類庫為了區別大部分都是在前面加個N,比如Hibernate和NHibernate。 npoi下載地址 一、使用NPOI下載大致分以下步驟: 1、創建workbook 2、創建sheet 3、創建row和cell 4、填充 ...
  • 一、查看外網是否通暢 配置網路yum源(需要保證外網開通,我這裡是使用網易163提供開源鏡像站) 二、下載repo文件 三. 備份並替換系統的repo文件 備份原來的.repo配置文件 複製網易下載的.repo並修改文件名稱 四、執行yum源更新 清除以前使用yum的緩存 建立一個緩存,以後方便在緩 ...
  • 在後臺編寫Linq查詢的時候,有時我們寫的查詢語句,系統會給出一個警告:possible multiple enumeration of ienumerable. 出現這個警告的原因是: 如果該查詢是對資料庫的查詢,那麼該查詢語句會從資料庫執行兩次及以上,我們可以對這個查詢進行優化,優化的方法是 將 ...
  • 首先從資料庫讀取數據到DataTable,這我就不提了,大家都明白。下麵直接介紹如何從DataTable高效率導出數據到Excel中的方法,代碼如下: 說明: 1)上述方法中,將DataTable單元格內容寫入數組後一次性賦值給Excel的Range,效率非常高,比之迴圈DataTable單元格逐個 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...