LoginSignup
5
5

More than 5 years have passed since last update.

EPPlusでExcelテンプレートを使用する

Posted at

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();
            }
        }
    }
}

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5