diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorksheet.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorksheet.cs index 1c95938..b8018fa 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorksheet.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorksheet.cs @@ -561,12 +561,10 @@ public IXLWorksheet CopyTo(XLWorkbook workbook, String newSheetName, Int32 position) { var targetSheet = (XLWorksheet)workbook.WorksheetsInternal.Add(newSheetName, position); - + Internals.ColumnsCollection.ForEach(kp => targetSheet.Internals.ColumnsCollection.Add(kp.Key, new XLColumn(kp.Value))); + Internals.RowsCollection.ForEach(kp => targetSheet.Internals.RowsCollection.Add(kp.Key, new XLRow(kp.Value))); Internals.CellsCollection.GetCells().ForEach(c => targetSheet.Cell(c.Address).CopyFrom(c, false)); DataValidations.ForEach(dv => targetSheet.DataValidations.Add(new XLDataValidation(dv))); - Internals.ColumnsCollection.ForEach( - kp => targetSheet.Internals.ColumnsCollection.Add(kp.Key, new XLColumn(kp.Value))); - Internals.RowsCollection.ForEach(kp => targetSheet.Internals.RowsCollection.Add(kp.Key, new XLRow(kp.Value))); targetSheet.Visibility = Visibility; targetSheet.ColumnWidth = ColumnWidth; targetSheet.ColumnWidthChanged = ColumnWidthChanged; diff --git a/ClosedXML/ClosedXML/ClosedXML_Sandbox/Program.cs b/ClosedXML/ClosedXML/ClosedXML_Sandbox/Program.cs index 7f57f17..a209a19 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Sandbox/Program.cs +++ b/ClosedXML/ClosedXML/ClosedXML_Sandbox/Program.cs @@ -15,46 +15,20 @@ { private static void Main(string[] args) { - var wb = new XLWorkbook(); + var wbSource = new XLWorkbook(@"c:\temp\original.xlsm"); + var wbTarget = new XLWorkbook(); - var sheet = wb.Worksheets.Add("orderlines"); + foreach (var ws in wbSource.Worksheets) + { + wbTarget.AddWorksheet(ws); + } - int row = 1; + foreach (var r in wbSource.NamedRanges) + { + wbTarget.NamedRanges.Add(r.Name, r.Ranges); + } - int column = 1; - sheet.Cell(row, column++).Value = "Date"; - sheet.Cell(row, column++).Value = "Quantity"; - sheet.Cell(row, column++).Value = "Category"; - sheet.Cell(row, column++).Value = "Item"; - sheet.Cell(row, column++).Value = "Unit price"; - sheet.Cell(row, column++).Value = "Total price"; - - // Sample data row - row++; - column = 1; - sheet.Cell(row, column++).Value = new DateTime(2014, 6, 21); - sheet.Cell(row, column++).Value = 1; - sheet.Cell(row, column++).Value = "Widgets"; - sheet.Cell(row, column++).Value = "Pro widget"; - sheet.Cell(row, column++).Value = "1.23"; - sheet.Cell(row, column++).Value = "1.23"; - - var dataRange = sheet.RangeUsed(); - - // Add a new sheet for our pivot table - var pivotTableSheet = wb.Worksheets.Add("PivotTable"); - - // Create the pivot table, using the data from the "PastrySalesData" table - var pt = pivotTableSheet.PivotTables.AddNew("PivotTable", pivotTableSheet.Cell(1, 1), dataRange); - - // The rows in our pivot table will be the names of the categories - pt.RowLabels.Add("Item"); - pt.RowLabels.Add("Category"); - - - pt.Values.Add("Total price"); - - wb.SaveAs(@"c:\temp\saved3.xlsx"); + wbTarget.SaveAs(@"c:\temp\saved.xlsm"); Console.WriteLine("Done"); //Console.ReadLine(); }