NPOI Library(C#Excel操作)
NPOIライブラリ
NPOIライブラリは http://npoi.codeplex.com でダウンロードして、現在のバージョンは1.2.1で、.NET 1.1と.NET 2.0以上のバージョンの2種類に分けられて、主要なPOIの専案が提供する機能をサポートして、しかし専案の中のサンプルのプログラムコードはすべてExcelを標的にして、原因はExcelがサーバー側の処理がWordとPowerPointなどのファイルよりはるかに多すぎるためで、そこで筆者はこの記事でもExcelファイルを主な説明の対象としています.
NPOIライブラリファイルは7つあり、それぞれ:
NPOI.DLL:NPOIコア関数ライブラリ.
NPOI.DDF.DLL:NPOIプロット領域読み書きライブラリ.
NPOI.HPSF.DLL:NPOIファイル概要情報読み書き式ライブラリ.
NPOI.HSSF.DLL:NPOI Excel BIFFファイル読み書き式ライブラリ.
NPOI.Util.DLL:NPOIツールライブラリ.
NPOI.POIFS.DLL:NPOI OLE形式アクセスレターライブラリ.
ICSharpCode.SharpZipLib.DLL:ファイル圧縮関数ライブラリ.
一般的にExcel 97-2003形式(.xls)のファイルにアクセスする必要がある場合は、NPOI、NPOI.HSSF、NPOI.POIFSとNPOI.Util函式ライブラリを使用する必要があるため、この4つのDLLを参照し、ファイル要約情報を一括してアクセスする場合は、NPOI.HPSF.DLLファイルも参照し、必要なカテゴリ宣言を取得する.開発者は通常、NPOI.HSSF.UserModelネーミングスペースに集中すればよく、Excel資料を制御する様々なカテゴリのアイテムを開発者が利用できるようにしています.
NPOIライブラリは http://npoi.codeplex.com でダウンロードして、現在のバージョンは1.2.1で、.NET 1.1と.NET 2.0以上のバージョンの2種類に分けられて、主要なPOIの専案が提供する機能をサポートして、しかし専案の中のサンプルのプログラムコードはすべてExcelを標的にして、原因はExcelがサーバー側の処理がWordとPowerPointなどのファイルよりはるかに多すぎるためで、そこで筆者はこの記事でもExcelファイルを主な説明の対象としています.
NPOIライブラリファイルは7つあり、それぞれ:
NPOI.DLL:NPOIコア関数ライブラリ.
NPOI.DDF.DLL:NPOIプロット領域読み書きライブラリ.
NPOI.HPSF.DLL:NPOIファイル概要情報読み書き式ライブラリ.
NPOI.HSSF.DLL:NPOI Excel BIFFファイル読み書き式ライブラリ.
NPOI.Util.DLL:NPOIツールライブラリ.
NPOI.POIFS.DLL:NPOI OLE形式アクセスレターライブラリ.
ICSharpCode.SharpZipLib.DLL:ファイル圧縮関数ライブラリ.
一般的にExcel 97-2003形式(.xls)のファイルにアクセスする必要がある場合は、NPOI、NPOI.HSSF、NPOI.POIFSとNPOI.Util函式ライブラリを使用する必要があるため、この4つのDLLを参照し、ファイル要約情報を一括してアクセスする場合は、NPOI.HPSF.DLLファイルも参照し、必要なカテゴリ宣言を取得する.開発者は通常、NPOI.HSSF.UserModelネーミングスペースに集中すればよく、Excel資料を制御する様々なカテゴリのアイテムを開発者が利用できるようにしています.
Excel , , Excel 。 , ,HSSFSheet SetColumnWidth, : ( 0 ), 。
B , :
HSSFWorkbook hssfworkbook = new HSSFWorkbook();
HSSFSheet sheet1 = hssfworkbook.CreateSheet("Sheet1");
sheet1.SetColumnWidth(1, 100 * 256);
ここで い を します.SetColumnWidthの2 のパラメータに256を じます.これはどういうことですか. は、このパラメータの は1/256 です.つまり、ここではB の を100 に します.さっき ったのはどのように して、それではどのように1つの の を みますか?GetColumnWidthメソッドを します.このメソッドには、カラムのインデックス というパラメータが1つしかありません. のようになります.int col1width = sheet1.GetColumnWidth(1);
といっても さは、Excelでは の さも することが されるので、セルの さを することは、 は の さを することになるので、 する もHSSFRow にあるべきで、それはHSSFRow.HeightとHeightInPointsで、この2つの の いはHeightInPointsの が で、Heightの が1/20 で、だからHeightの は にHeightInPointsの20 です. の の さを するには、 のコードを します.sheet1.CreateRow(0).Height = 200*20;
またはsheet1.CreateRow(0).HeightInPoints = 200;
ローのローの さを する は、HSSFRow.Heightプロパティの り を できます. 1 1 に の さを したり、 の を したりするのは だと うかもしれませんが、HSSFSheet.DefaultColumnWidth、HSSFSheet.DefaultRowHeight、HSSFSheet.DefaultRowHeightInPointsプロパティを することも えられます.これらのアトリビュートを すると、 または に が されていない は、デフォルトの または さが されます.コードは のとおりです.sheet1.DefaultColumnWidth=100*256;
sheet1.DefaultRowHeight=30*20;
//create a entry of DocumentSummaryInformation DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation(); dsi.Company = "NPOI Team"; hssfworkbook.DocumentSummaryInformation = dsi; //create a entry of SummaryInformation SummaryInformation si = PropertySetFactory.CreateSummaryInformation(); si.Subject = "NPOI SDK Example"; hssfworkbook.SummaryInformation = si; using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using NPOI;
using NPOI.HPSF;
using NPOI.HSSF;
using NPOI.HSSF.UserModel;
using NPOI.POIFS;
using NPOI.Util;
public partial class excel : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
HSSFWorkbook workbook = new HSSFWorkbook();
MemoryStream ms = new MemoryStream();
// 。
HSSFSheet sheet = workbook.CreateSheet("My Sheet") as HSSFSheet;
// 。
HSSFCellStyle style1 = workbook.CreateCellStyle() as HSSFCellStyle;
style1.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.BLUE.index2;
style1.FillPattern = NPOI.SS.UserModel.FillPatternType.SOLID_FOREGROUND;
HSSFCellStyle style2 = workbook.CreateCellStyle() as HSSFCellStyle;
style2.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.YELLOW.index2;
style2.FillPattern = NPOI.SS.UserModel.FillPatternType.BIG_SPOTS;
for (int i = 0; i < 10; i++)
{
HSSFRow row = sheet.CreateRow(i) as HSSFRow;
for (int j = 0; j < 5; j++)
{
HSSFCell cell = row.CreateCell(j) as HSSFCell;
cell.SetCellValue(i.ToString() + "+" + j.ToString() + DateTime.Now.Ticks.ToString());
if (j % 2 == 0)
cell.CellStyle = style1;
}
}
workbook.Write(ms);
Response.AddHeader("Content-Disposition", string.Format("attachment; filename=EmptyWorkbook.xls"));
Response.BinaryWrite(ms.ToArray());
workbook = null;
ms.Close();
ms.Dispose();
}
}