【ClosedXML】テンプレートからExcelを量産するプログラムの素

2021-05-11

完全に自分用めも。

プログラミングでExcelを作成するときに書体とかセルの書式とかいちいち設定するの面倒くさいから、テンプレート作ってそれをコピー量産していけばいいじゃんと気が付いてしまった。

最初はVBAで作ろうと思ったけど構文思い出せなさ過ぎて挫折。powershellでExcel修正するのもちょっと興味あるから今度実験してみようかな。

コード

using ClosedXML.Excel;

namespace ConsoleApp10
{
    class Program
    {
        static void Main(string[] args)
        {
            // 事前に必要な下拵え:::temp.xlsxにテンプレート作っておく
            using (XLWorkbook workbook = new XLWorkbook(@"C:\exceltemp\temp.xlsx"))
            {
                //テンプレートシートコピー
                IXLWorksheet worksheet = workbook.Worksheet(1).CopyTo("newsheet");

                //メインの処理を記入

                //名前を変えて保存
                workbook.SaveAs(@"C:\exceltemp\copy.xlsx");
            }
        }
    }
}

//メインの処理を記入
↑の部分に処理を追加するとシート独自のヘッダとか色々独自設定できて量産が楽になると思われる。

今回はシートコピーで作ったけど、ブックコピーも同じような要領でできる。
その場合は保存先の名前を変数化すればいいかな。

注意事項

ClosedXMLの仕様っぽいけど、テンプレートにしたいワークシート中に画像を含んでいるとエラーになる。
画像を使用することが前提なら他のライブラリを使用した方がよさそう。