[C#] 透過NPOI 產生 Excel 檔案 (*.xls)

2013-02-20


之前已經玩過了,但是因為碰到好像API有點改變,所以撞了一下牆
寫一下筆記,給有需要的人..

首先你得先引入NPOI的Library 當然你可以透過 NUGET 去安裝

2013-02-20_111245

安裝畫面:
2013-02-20_111258

接下來就是  Code 的部分,我模擬產生一個假資料,為了好懂,範例欄位很少..

using System;
using System.IO;
using NPOI.HSSF.UserModel;

namespace CreateExcel1
{
    public partial class SampleExcel : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }

        protected void btnCreate_Click(object sender, EventArgs e)
        {
            var workbook = new HSSFWorkbook();
            var sheetReportResult = workbook.CreateSheet("報表結果");

           //產生第一個要用CreateRow 
            sheetReportResult.CreateRow(0).CreateCell(0).SetCellValue("姓名");

            //之後的用GetRow 取得在CreateCell
            sheetReportResult.GetRow(0).CreateCell(1).SetCellValue("電話");
            sheetReportResult.GetRow(0).CreateCell(2).SetCellValue("備註");

            //第一Row 已經被Title用掉了 所以從1開始
            for (var i = 1; i <= 20;i++ )
            {
                sheetReportResult.CreateRow(i).CreateCell(0).SetCellValue("用戶"+i );
                sheetReportResult.GetRow(i).CreateCell(1).SetCellValue("091234567"+i);
                sheetReportResult.GetRow(i).CreateCell(2).SetCellValue("我是備註"+i);
            }

            sheetReportResult.SetColumnWidth(0, 20 * 256);
            sheetReportResult.SetColumnWidth(1, 40 * 256);
            sheetReportResult.SetColumnWidth(2, 40 * 256);

            var file = new FileStream(AppDomain.CurrentDomain.BaseDirectory+"sample.xls", FileMode.Create);

            workbook.Write(file);
            file.Close();

        }
    }
}




其中跟以前不同點,要先CreateRow 之後就要用GetRow 不然整個資料出來會錯亂..

有一段  SetColumnWidth 就是設定 欄位的寬度,至於為什麼有那公式

是因為我看他的文件是寫


2013-02-20_112140

我就按照文件上面寫得乖乖去設定公式


程式碼很簡單,就不贅述..

輸出結果:

2013-02-20_112640



範例下載:


當麻許的超技八 2014 | Donma Hsu Design.