4
複数のExcelファイルをC#でEPPlusとマージしたい。C#EPPlus Excelファイルをマージする
using (MemoryStream protocolStream = new MemoryStream())
{
ExcelPackage pck = new ExcelPackage();
HashSet<string> wsNames = new HashSet<string>();
foreach (var file in files)
{
ExcelPackage copyPck = new ExcelPackage(new FileInfo(file));
foreach (var ws in copyPck.Workbook.Worksheets)
{
string name = ws.Name;
int i = 1;
while (!wsNames.Add(ws.Name))
name = ws.Name + i++;
ws.Name = name;
var copiedws = pck.Workbook.Worksheets.Add(name);
copiedws.WorksheetXml.LoadXml(ws.WorksheetXml.DocumentElement.OuterXml);
}
}
pck.SaveAs(protocolStream);
protocolStream.Position = 0;
using (FileStream fs = new FileStream(resultFile, FileMode.Create))
protocolStream.CopyTo(fs);
}
しかし、私はpck.SaveAs(protocolStream)
に次のエラーを取得:
私は次のことをやった System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument 引数である
System.ArgumentOutOfRangeExceptionが
をExceptionResourceリソース)in System.Collections.Generic.List
1.get_Item(Int32 index) in OfficeOpenXml.ExcelStyleCollection
1.get_Item(のInt32 PositionID)
私もWorksheet.Copy方法でそれを試してみましたが、私はそれでスタイリングを失います。
どのラインで発生するのですか? – Rob
質問を編集しました。エラーは 'pck.SaveAs(protocolStream)'で発生します。 – Tony
ライブラリに欠けている可能性がある機能/バグのようです。手動で行うとスタイルがコピーされ、組み込みのCopyメソッドもスタイルを失うため、クラッシュするように見えます。 – Rob