【C#】【JSKExcelWrapper.dll】Excelファイルへデータ転記、テンプレート(ひな形)ファイルを利用した帳票形式出力

C#でのExcel出力が簡単にできるDLLの提供サービスを行っています。
詳細はこちらをご確認ください。
このページでは、その使い方を紹介しています。

//Excel起動
using (var excelWrapper = new JSKExcelWrapper.JSKExcelWrapper())
{
    //テンプレート(ひな形)ファイルパス取得
    var templatePath = Path.Combine(Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath), @"テンプレート\帳票テンプレート.xlsx");

    //◆Excelファイル開く
    excelWrapper.OpenWorkbook(templatePath);

    //◆シート取得
    Worksheet worksheet = excelWrapper.GetWorksheet("template");

    //帳票形式で表示させるためのダミーデータ
    var dummyData = new List<string[]>()
    {
        new string[]{"A001", "部品1", "TEST-A001", "汎用部品1", "メモ1"},
        new string[]{"A002", "部品2", "TEST-A002", "汎用部品2", "メモ2"},
        new string[]{"A003", "部品3", "TEST-A003", "汎用部品3", "メモ3"},
        new string[]{"A004", "部品4", "TEST-A004", "汎用部品4", "メモ4"},
        new string[]{"A005", "部品5", "TEST-A005", "汎用部品5", "メモ5"},
        new string[]{"A006", "部品6", "TEST-A006", "汎用部品6", "メモ6"},
        new string[]{"A001", "部品1", "TEST-A001", "汎用部品1", "メモ1"},
        new string[]{"A002", "部品2", "TEST-A002", "汎用部品2", "メモ2"},
        new string[]{"A003", "部品3", "TEST-A003", "汎用部品3", "メモ3"},
        new string[]{"A004", "部品4", "TEST-A004", "汎用部品4", "メモ4"},
        new string[]{"A005", "部品5", "TEST-A005", "汎用部品5", "メモ5"},
        new string[]{"A006", "部品6", "TEST-A006", "汎用部品6", "メモ6"},
        new string[]{"A001", "部品1", "TEST-A001", "汎用部品1", "メモ1"},
        new string[]{"A002", "部品2", "TEST-A002", "汎用部品2", "メモ2"},
        new string[]{"A003", "部品3", "TEST-A003", "汎用部品3", "メモ3"},
        new string[]{"A004", "部品4", "TEST-A004", "汎用部品4", "メモ4"},
        new string[]{"A005", "部品5", "TEST-A005", "汎用部品5", "メモ5"},
        new string[]{"A006", "部品6", "TEST-A006", "汎用部品6", "メモ6"},
        new string[]{"A001", "部品1", "TEST-A001", "汎用部品1", "メモ1"},
        new string[]{"A002", "部品2", "TEST-A002", "汎用部品2", "メモ2"},
        new string[]{"A003", "部品3", "TEST-A003", "汎用部品3", "メモ3"},
        new string[]{"A004", "部品4", "TEST-A004", "汎用部品4", "メモ4"},
        new string[]{"A005", "部品5", "TEST-A005", "汎用部品5", "メモ5"},
        new string[]{"A006", "部品6", "TEST-A006", "汎用部品6", "メモ6"},
        new string[]{"A001", "部品1", "TEST-A001", "汎用部品1", "メモ1"},
        new string[]{"A002", "部品2", "TEST-A002", "汎用部品2", "メモ2"},
        new string[]{"A003", "部品3", "TEST-A003", "汎用部品3", "メモ3"},
        new string[]{"A004", "部品4", "TEST-A004", "汎用部品4", "メモ4"},
        new string[]{"A005", "部品5", "TEST-A005", "汎用部品5", "メモ5"},
        new string[]{"A006", "部品6", "TEST-A006", "汎用部品6", "メモ6"},
        new string[]{"A001", "部品1", "TEST-A001", "汎用部品1", "メモ1"},
        new string[]{"A002", "部品2", "TEST-A002", "汎用部品2", "メモ2"},
        new string[]{"A003", "部品3", "TEST-A003", "汎用部品3", "メモ3"},
        new string[]{"A004", "部品4", "TEST-A004", "汎用部品4", "メモ4"},
        new string[]{"A005", "部品5", "TEST-A005", "汎用部品5", "メモ5"},
        new string[]{"A006", "部品6", "TEST-A006", "汎用部品6", "メモ6"},
    };

    //◆テンプレートファイルの各セルに設定されたセル名から、転記すするセル番地を取得する
    var indexCode1 = excelWrapper.GetExcelIndexData(worksheet, "コード");
    var indexName1 = excelWrapper.GetExcelIndexData(worksheet, "名称");
    var indexCode2 = excelWrapper.GetExcelIndexData(worksheet, "コード2");
    var indexName2 = excelWrapper.GetExcelIndexData(worksheet, "名称2");
    var indexMemo = excelWrapper.GetExcelIndexData(worksheet, "メモ");

    //◆データ数分、明細行を行コピーする(罫線や書式もコピーされる)
    excelWrapper.CopyRow(worksheet,
        indexCode1.rowIndex/*コピー行の行番号(開始)*/,
        indexCode1.rowIndex/*コピー行の行番号(終了)*/,
        indexCode1.rowIndex + 1/*貼り付ける位置の行番号(開始)  最初の1行はすでに存在しているので、次の行からコピーする*/,
        indexCode1.rowIndex + dummyData.Count - 1/*貼り付ける位置の行番号(終了)  最初の1行はすでに存在しているので、-1する*/);

    //データの行数分回す
    foreach (var data in dummyData)
    {
        //◆転記
        excelWrapper.SetCellValue(worksheet, indexCode1, data[0]);
        excelWrapper.SetCellValue(worksheet, indexName1, data[1]);
        excelWrapper.SetCellValue(worksheet, indexCode2, data[2]);
        excelWrapper.SetCellValue(worksheet, indexName2, data[3]);
        excelWrapper.SetCellValue(worksheet, indexMemo, data[4]);

        //◆記載が終わったので、次の行へインデックスをずらす
        indexCode1.NextRow();
        indexName1.NextRow();
        indexCode2.NextRow();
        indexName2.NextRow();
        indexMemo.NextRow();
    }


    //出力先パス(このEXEと同じフォルダに出力)
    var fileBase = Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath) + @"\サンプル出力⑤_" + DateTime.Now.ToString("yyyyMMddHHmmss");

    //◆ファイル出力
    excelWrapper.SaveExcel(fileBase + ".xlsx");     //Excelファイル出力
    excelWrapper.SavePDF(fileBase + ".pdf");        //PDFファイル出力

    //◆プレビュー表示
    excelWrapper.Preview();
}