[C#] 透過NPOI 產生 Excel 檔案 (*.xls)
2013-02-20
之前已經玩過了,但是因為碰到好像API有點改變,所以撞了一下牆
寫一下筆記,給有需要的人..
首先你得先引入NPOI的Library 當然你可以透過 NUGET 去安裝
安裝畫面:
接下來就是 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 就是設定 欄位的寬度,至於為什麼有那公式
是因為我看他的文件是寫
我就按照文件上面寫得乖乖去設定公式
程式碼很簡單,就不贅述..
輸出結果:
範例下載: