首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

ASP.NET 專案中透過 NuGet 快速引用 NPOI 導出 Excel

     編輯:程式設計綜合問答

最簡單、標準的做法:Visual Studio 內建 NuGet 套件管理器

無需手動下載 DLL、無需設定相對路徑、無需擔心版本衝突。Visual Studio 內建的 NuGet 會自動處理下載、解壓、引用、packages.config/PackageReference 記錄、甚至 web.config 繫結重導向。

操作步驟 (圖文並茂)

  1. 在「方案總管」中,右鍵點擊**專案節點** (非方案)。
  2. 選擇 **「管理 NuGet 套件...」 (Manage NuGet Packages...)**。
  3. 切換到 **「瀏覽」 (Browse)** 標籤。
  4. 搜尋框輸入 NPOI。
  5. 找到由 NPOI Team 發布的 NPOI 套件 (圖示通常是藍色圓形)。
  6. 點擊 **「安裝」 (Install)**,預覽變更視窗點「確定」,接受授權點「我接受」。

安裝完成後自動發生的事

  • DLL (NPOI.dll, NPOI.OOXML.dll, NPOI.OpenXml4Net.dll 等) 已複製到專案 packages\NPOI.x.x.x\lib\netXX 並**自動添加參考**。
  • 專案檔 (.csproj) 新增 PackageReference Include="NPOI" Version="x.x.x" /> (新版 VS) 或 packages.config (舊版)。
  • 相依套件 SharpZipLib 也會一併安裝好。

立即可用的最小導出程式碼片段

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel; // .xlsx
using NPOI.HSSF.UserModel; // .xls
using System.IO;
using System.Data;

public byte[] ExportDataTableToExcel(DataTable dt, string sheetName = "Sheet1", bool isXlsx = true) {
    IWorkbook workbook = isXlsx ? (IWorkbook)new XSSFWorkbook() : new HSSFWorkbook();
    ISheet sheet = workbook.CreateSheet(sheetName);

    // 標題行
    IRow headerRow = sheet.CreateRow(0);
    for (int i = 0; i < dt.Columns.Count; i++) {
        headerRow.CreateCell(i).SetCellValue(dt.Columns[i].ColumnName);
        // 可選:設定標題樣式 (粗體、背景色)
        // ICellStyle style = workbook.CreateCellStyle(); ...
    }

    // 數據行
    for (int i = 0; i < dt.Rows.Count; i++) {
        IRow row = sheet.CreateRow(i + 1);
        for (int j = 0; j < dt.Columns.Count; j++) {
            row.CreateCell(j).SetCellValue(dt.Rows[i][j]?.ToString() ?? "");
        }
    }

    // 自動調整欄寬
    for (int i = 0; i < dt.Columns.Count; i++) sheet.AutoSizeColumn(i);

    using (MemoryStream ms = new MemoryStream()) {
        workbook.Write(ms);
        return ms.ToArray();
    }
}

// ASP.NET 下載觸發
public void DownloadExcel() {
    DataTable dt = GetData(); // 你的資料來源
    byte[] file = ExportDataTableToExcel(dt, "報表", true);
    Response.Clear();
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
    Response.AddHeader("Content-Disposition", "attachment;filename=Export_" + DateTime.Now.ToString("yyyyMMddHHmm") + ".xlsx");
    Response.BinaryWrite(file);
    Response.End();
}

常見問題 FAQ

  • Q: 找不到 NPOI? A: 確認 NuGet 套件來源包含 nuget.org (工具 > 選項 > NuGet 套件管理器 > 套件來源)。
  • Q: 專案是 .NET Framework 2.0/3.5? A: NPOI 2.x 版本支援 .NET 2.0+。在 NuGet 安裝介面選擇舊版本即可。
  • Q: 導出大數據量 (10萬行+) 記憶體爆炸? A: 使用 SXSSFWorkbook (僅 .xlsx) 實現串流寫入,只在記憶體保留滑動視窗行數。IWorkbook wb = new SXSSFWorkbook(100); // 保留100行在記憶體

結語

**拒絕手動複製 DLL、拒絕百度搜「NPOI.dll 下載」。** 使用 NuGet 是 .NET 開發者的基本功,一鍵解決引用、版本、相依、升級所有痛點。安裝後直接 using NPOI... 開始寫導出邏輯即可。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved