Ich möchte mehrere Excel-Dateien mit EPPlus in C# zusammenführen.C# EPPlus Excel-Dateien zusammenführen
Ich habe die folgenden:
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);
}
Aber ich bekomme die folgende Fehlermeldung in pck.SaveAs(protocolStream)
:
System.ArgumentOutOfRangeException
in System.ThrowHelper.ThrowArgumentOutOfRangeException (ExceptionArgument Argument, ExceptionResource-Ressource) in System.Collections.Generic.List
1.get_Item(Int32 index) in OfficeOpenXml.ExcelStyleCollection
1.get_Item (Int32 PositionID)
Ich versuchte es auch mit der Worksheet.Copy Methode, aber ich verliere das Styling mit ihm.
In welchen Zeilen tritt es auf? – Rob
Ich habe die Frage bearbeitet. Der Fehler tritt in 'pck.SaveAs (ProtokollStream) 'auf. – Tony
Sieht aus wie ein mögliches fehlendes Feature/Bug in der Bibliothek. Es scheint abzustürzen, da die Stile kopiert werden, wenn Sie es manuell tun, und ihre integrierte Kopiermethode verliert ebenfalls Stile. – Rob