前回に引き続き、Excelを操作できるC#ライブラリ「NPOI」を使い方を解説していきます。今回はExcelファイルの新規作成、セルの書式設定について扱います。
Excelファイルの新規作成
まずは以下のソースコードを見てください。
// 空のExcelファイルを新規作成
static void CreateBlankExcelFile()
{
// ファイルの出力パス(今回は実行環境のカレントディレクトリを指定)
// C直下などを指定した場合は、WindowsのUAC(User Account Control)の関係で
// ファイルが出力できないことがあるので注意
var filePath = System.Environment.CurrentDirectory + "\\OutputTest.xlsx";
// Excelファイル(book)の作成
var book = new XSSFWorkbook();
// Excelファイル(book)のシートを作成
var sheet = book.CreateSheet("test");
//Excelファイル(book)を出力
using (var fs = new FileStream(filePath, FileMode.Create))
{
book.Write(fs);
}
}
Excelファイルの新規作成をするだけならこれだけです。この関数を実行すると実行ファイル(.exe)と同じディレクトリにOutputTest.xlsxという名前でExcelファイルが出力されていると思います。(※実行ファイルの場所: bin -> Release -> netcoreapp3.1-> ***.exe)
セルの値を設定
次はこのファイルに値を出力してみようと思います。以下のコードを追加します。
// Excelファイル(book)のシートを作成
var sheet = book.CreateSheet("test");
// 1行目に行を作る var row = sheet.CreateRow(0);// 1行目・1列目に行を作る
var cell = row.CreateCell(0);
// 値を
設定cell.SetCellValue(100)
;
このようにCreateRow(行番号)で、指定した行に行を作って、その行に対し、CreateCell(列番号)をすることで任意の行・列のセルを作成することができます。ただし、いずれも番号が0始まりなので気を付けてください。(例:Excelの1行目=番号0)以下のように自分で変換する関数を作ってもいいかもしれません。値を設定する場合はSetCellValue(値)で設定できます。
static ICell MyCreateCell(ISheet sheet, int rowIndex, int columnIndex)
{
ICell ret = null;
// 内部的に変換しておく
rowIndex--;
columnIndex--;
var row = sheet.GetRow(rowIndex);
if (row == null)
{
var newRow = sheet.CreateRow(rowIndex);
ret = newRow.CreateCell(columnIndex);
}
else
{
var cell = row.GetCell(columnIndex);
if (cell == null)
{
ret = row.CreateCell(columnIndex);
}
else
{
ret = cell;
}
}
return ret;
}
セルの書式設定
以下によく使う書式設定を紹介します。using NPOI.HSSF.Utilを追加します。
- 列の幅を変更する
// 1列目を10文字分の幅に変更
sheet.SetColumnWidth(0, 256 * 10);
- 背景色を設定する
var style = book.CreateCellStyle();
style.FillBackgroundColor = HSSFColor.SkyBlue.Index;
cell.CellStyle = style;
- 太字、イタリック体にする
var style = book.CreateCellStyle();
var font = book.CreateFont();
font.IsBold = true; // 太字
font.IsItalic = true; // イタリック
style.SetFont(font);
cell.CellStyle = style;
- 罫線をかける
var style = book.CreateCellStyle();
style.BorderTop = BorderStyle.Thin;
style.BorderRight = BorderStyle.Thin;
style.BorderLeft = BorderStyle.Thin;
style.BorderBottom = BorderStyle.Thin;
cell.CellStyle = style;
その他の設定
上記以外で使う設定機能をいくつか紹介して終わりにします。自分で使うものが増えたら追記してきます。
HSSF/XSSFWorkbook
シートの複製 : Isheet CloneSheet(int sheetIndex)
// Excelファイル(book)の作成 var book = new XSSFWorkbook(); // Excelファイル(book)のシートを作成 var src = book.CreateSheet("source"); var target = book.CreateSheet("target"); // シートの複製 int sheetIndex = book.GetSheetIndex("source"); target = book.CloneSheet(sheetIndex);
コメント