IT業界のすみっこ暮らし

ふと気がついたときの記録

EPPLUS テンプレートからエクセルファイル作成

using System.IO;
using OfficeOpenXml;

// テンプレートファイルを元にDBから取得した値を指定したセルに設定したい場合、且つbyte[]をエクセルでファイルダウンロードさせる場合
byte[] source;
MemoryStream stream = new MemoryStream();
using (var template = System.IO.File.OpenRead(AppDomain.CurrentDomain.BaseDirectory + "/App_Data/template.xlsx"))
using (var package = new ExcelPackage(stream, template))
{
    ExcelWorksheet worksheet = null;
    worksheet = package.Workbook.Worksheets.Where(s => s.Name == "Sheet1").FirstOrDefault();

    // 設定したい内容を設定
    worksheet.Cells[5, 2].Value = "value1";
    worksheet.Cells[5, 3].Value = "value2";
    worksheet.Cells[5, 4].Value = "value3";
    package.Save();
    
    source = stream.ToArray();
}

補足

ContentTypeの設定

拡張子がXLSXの場合

ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";

拡張子がXLSMの場合

ContentType = "application/vnd.ms-excel.sheet.macroEnabled.12";

※テンプレート読み込みと作成はXLSXと同様