EPPlusはOpen XMLの仕様を元にExcelのデータ操作を行う為の.NET Framework向けのオープンソースライブラリです。
このEPPlusにてExcelのテンプレートファイルを使用する場合には、以下のようにExcelPackageオブジェクトの初期化時に、コンストラクタの引数として、作成するExcelファイルのFileInfoオブジェクト、使用するExcelテンプレートのオブジェクトを渡します。テンプレートを開くためにパスワードが必要な場合は3番目の引数としてString型のパスワード文字列を渡します。
この時使用するExcelのテンプレートファイルは、拡張子がxltxとなるOpenXML形式のテンプレートのみ使用でき、旧来のテンプレートファイルは使用できませんので、注意してください。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Drawing;
using OfficeOpenXml;
using OfficeOpenXml.Style;
namespace EPplusSample
{
/// <summary>
/// EPPlusでテンプレートを使用する場合のサンプル
/// </summary>
class Program
{
/// <summary>
/// Entry Point.
/// </summary>
/// <param name="args">コマンドライン引数</param>
static void Main(string[] args)
{
// テンプレートのFileInfo
var template = new FileInfo(@"Test.xltx");
// ExcelファイルのFileInfo
var newFile = new FileInfo(@"sample.xlsx");
// テンプレートファイルを使用してExcelファイルを作成する。
// テンプレートを開くのにパスワードが必要な場合は ExcelPackage(newFile, template, password)
// と3番目の引数にString型のパスワード身時列を与える必要がある。
// また、テンプレートはOpenXml形式のものでないとだめです。
using (var package = new ExcelPackage(newFile, template))
{
ExcelWorksheet worksheet = null;
// WorkSheetオブジェクトの取得。FirstOrDefault()しているので、本来後段でnullチェックしたほうがよい。
worksheet = package.Workbook.Worksheets.Where(s => s.Name == "Sheet1").FirstOrDefault();
// セルを二次元配列で指定する場合1次元目がY方向、2次元目がX方向となります。
worksheet.Cells[2, 2].Value = "テンプレートのサンプル";
worksheet.Cells[2, 2].Style.Font.Color.SetColor(Color.Red);
for (int i = 0; i < 14; i++)
{
worksheet.Cells[4 + i, 2].Value = DateTime.Now.Hour;
worksheet.Cells[4 + i, 3].Value = DateTime.Now.Minute;
worksheet.Cells[4 + i, 4].Value = DateTime.Now.Second;
worksheet.Cells[4 + i, 5].Value = DateTime.Now.Millisecond;
}
// Excelファイルのセーブ
package.Save();
}
}
}
}