diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Load.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Load.cs index 0d19b03..e8c07b7 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Load.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Load.cs @@ -76,8 +76,11 @@ var ws = (XLWorksheet)Worksheets.Add(sheetName); var sheetFormatProperties = (SheetFormatProperties)worksheetPart.Worksheet.Descendants().First(); - ws.RowHeight = sheetFormatProperties.DefaultRowHeight; - ws.ColumnWidth = sheetFormatProperties.DefaultColumnWidth; + if (sheetFormatProperties.DefaultRowHeight != null) + ws.RowHeight = sheetFormatProperties.DefaultRowHeight; + + if (sheetFormatProperties.DefaultColumnWidth != null) + ws.ColumnWidth = sheetFormatProperties.DefaultColumnWidth; foreach (var mCell in worksheetPart.Worksheet.Descendants()) { @@ -85,13 +88,14 @@ ws.Range(mergeCell.Reference).Merge(); } + Column wsDefaultColumn = null; + var defaultColumns = worksheetPart.Worksheet.Descendants().Where(c => c.Max == XLWorksheet.MaxNumberOfColumns); + if (defaultColumns.Count() > 0) + wsDefaultColumn = defaultColumns.Single(); - var wsDefaultColumn = worksheetPart.Worksheet.Descendants().Where( - c => c.Max == XLWorksheet.MaxNumberOfColumns).Single(); + if (wsDefaultColumn != null && wsDefaultColumn.Width != null) ws.ColumnWidth = wsDefaultColumn.Width; - if (wsDefaultColumn.Width != null) ws.ColumnWidth = wsDefaultColumn.Width; - - Int32 styleIndexDefault = wsDefaultColumn.Style != null ? Int32.Parse(wsDefaultColumn.Style.InnerText) : -1; + Int32 styleIndexDefault = wsDefaultColumn != null && wsDefaultColumn.Style != null ? Int32.Parse(wsDefaultColumn.Style.InnerText) : -1; if (styleIndexDefault >= 0) { ApplyStyle(ws, styleIndexDefault, s, fills, borders, fonts, numberingFormats); @@ -214,39 +218,51 @@ } } - var printOptions = (PrintOptions)worksheetPart.Worksheet.Descendants().First(); - ws.PageSetup.ShowGridlines = printOptions.GridLines; - ws.PageSetup.CenterHorizontally = printOptions.HorizontalCentered; - ws.PageSetup.CenterVertically = printOptions.VerticalCentered; - ws.PageSetup.ShowRowAndColumnHeadings = printOptions.Headings; - - var pageMargins = (PageMargins)worksheetPart.Worksheet.Descendants().First(); - ws.PageSetup.Margins.Bottom = pageMargins.Bottom; - ws.PageSetup.Margins.Footer = pageMargins.Footer; - ws.PageSetup.Margins.Header = pageMargins.Header; - ws.PageSetup.Margins.Left = pageMargins.Left; - ws.PageSetup.Margins.Right = pageMargins.Right; - ws.PageSetup.Margins.Top = pageMargins.Top; - - var pageSetup = (PageSetup)worksheetPart.Worksheet.Descendants().First(); - ws.PageSetup.PaperSize = (XLPaperSize)Int32.Parse(pageSetup.PaperSize.InnerText); - if (pageSetup.Scale != null) + var printOptionsQuery = worksheetPart.Worksheet.Descendants(); + if (printOptionsQuery.Count() > 1) { - ws.PageSetup.Scale = Int32.Parse(pageSetup.Scale.InnerText); + var printOptions = (PrintOptions)printOptionsQuery.First(); + ws.PageSetup.ShowGridlines = printOptions.GridLines; + ws.PageSetup.CenterHorizontally = printOptions.HorizontalCentered; + ws.PageSetup.CenterVertically = printOptions.VerticalCentered; + ws.PageSetup.ShowRowAndColumnHeadings = printOptions.Headings; } - else + + var pageMarginsQuery = worksheetPart.Worksheet.Descendants(); + if (pageMarginsQuery.Count() > 0) { - ws.PageSetup.FitToPages(Int32.Parse(pageSetup.FitToWidth.InnerText), Int32.Parse(pageSetup.FitToHeight.InnerText)); + var pageMargins = (PageMargins)pageMarginsQuery.First(); + ws.PageSetup.Margins.Bottom = pageMargins.Bottom; + ws.PageSetup.Margins.Footer = pageMargins.Footer; + ws.PageSetup.Margins.Header = pageMargins.Header; + ws.PageSetup.Margins.Left = pageMargins.Left; + ws.PageSetup.Margins.Right = pageMargins.Right; + ws.PageSetup.Margins.Top = pageMargins.Top; } - ws.PageSetup.PageOrder = pageOrderValues.Single(p => p.Value == pageSetup.PageOrder).Key; - ws.PageSetup.PageOrientation = pageOrientationValues.Single(p => p.Value == pageSetup.Orientation).Key; - ws.PageSetup.BlackAndWhite = pageSetup.BlackAndWhite; - ws.PageSetup.DraftQuality = pageSetup.Draft; - ws.PageSetup.ShowComments = showCommentsValues.Single(sc => sc.Value == pageSetup.CellComments).Key; - ws.PageSetup.PrintErrorValue = printErrorValues.Single(p => p.Value == pageSetup.Errors).Key; - if (pageSetup.HorizontalDpi != null) ws.PageSetup.HorizontalDpi = Int32.Parse(pageSetup.HorizontalDpi.InnerText); - if (pageSetup.VerticalDpi != null) ws.PageSetup.VerticalDpi = Int32.Parse(pageSetup.VerticalDpi.InnerText); - if (pageSetup.FirstPageNumber != null) ws.PageSetup.FirstPageNumber = Int32.Parse(pageSetup.FirstPageNumber.InnerText); + + var pageSetupQuery = worksheetPart.Worksheet.Descendants(); + if (pageSetupQuery.Count() > 0) + { + var pageSetup = (PageSetup)pageSetupQuery.First(); + ws.PageSetup.PaperSize = (XLPaperSize)Int32.Parse(pageSetup.PaperSize.InnerText); + if (pageSetup.Scale != null) + { + ws.PageSetup.Scale = Int32.Parse(pageSetup.Scale.InnerText); + } + else + { + ws.PageSetup.FitToPages(Int32.Parse(pageSetup.FitToWidth.InnerText), Int32.Parse(pageSetup.FitToHeight.InnerText)); + } + ws.PageSetup.PageOrder = pageOrderValues.Single(p => p.Value == pageSetup.PageOrder).Key; + ws.PageSetup.PageOrientation = pageOrientationValues.Single(p => p.Value == pageSetup.Orientation).Key; + ws.PageSetup.BlackAndWhite = pageSetup.BlackAndWhite; + ws.PageSetup.DraftQuality = pageSetup.Draft; + ws.PageSetup.ShowComments = showCommentsValues.Single(sc => sc.Value == pageSetup.CellComments).Key; + ws.PageSetup.PrintErrorValue = printErrorValues.Single(p => p.Value == pageSetup.Errors).Key; + if (pageSetup.HorizontalDpi != null) ws.PageSetup.HorizontalDpi = Int32.Parse(pageSetup.HorizontalDpi.InnerText); + if (pageSetup.VerticalDpi != null) ws.PageSetup.VerticalDpi = Int32.Parse(pageSetup.VerticalDpi.InnerText); + if (pageSetup.FirstPageNumber != null) ws.PageSetup.FirstPageNumber = Int32.Parse(pageSetup.FirstPageNumber.InnerText); + } var headerFooters = worksheetPart.Worksheet.Descendants(); if (headerFooters.Count() > 0) @@ -271,6 +287,7 @@ var firstHeader = (FirstHeader)headerFooter.FirstHeader; xlHeader.SetInnerText(XLHFOccurrence.FirstPage, firstHeader.Text); } + var sheetProperties = worksheetPart.Worksheet.Descendants(); if (sheetProperties.Count() > 0) { diff --git a/ClosedXML/ClosedXML/ClosedXML_Examples/Misc/Collections.cs b/ClosedXML/ClosedXML/ClosedXML_Examples/Misc/Collections.cs index fc271e7..4296d5f 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Examples/Misc/Collections.cs +++ b/ClosedXML/ClosedXML/ClosedXML_Examples/Misc/Collections.cs @@ -89,7 +89,8 @@ ws.Cell(6, 6).Value = "Query"; ws.Cell(6, 6).Style.Fill.BackgroundColor = Color.Cyan; ws.Range(6, 6, 6, 8).Merge(); - ws.Cell(7, 6).Value = people.AsEnumerable(); + ws.Cell(7, 6).Value = people.AsEnumerable(); // Very Important to call the AsEnumerable method + // otherwise it won't be copied. ws.Columns().AdjustToContents(); diff --git a/ClosedXML/ClosedXML/ClosedXML_Sandbox/Program.cs b/ClosedXML/ClosedXML/ClosedXML_Sandbox/Program.cs index e98d334..4b62699 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Sandbox/Program.cs +++ b/ClosedXML/ClosedXML/ClosedXML_Sandbox/Program.cs @@ -12,16 +12,11 @@ { static void Main(string[] args) { - var wb = new XLWorkbook(); - var ws = wb.Worksheets.Add("Test"); + var wb = new XLWorkbook(@"C:\Excel Files\ForTesting\Blank.xlsx"); + var ws = wb.Worksheets.Worksheet("Sheet1"); - var lst = new List(); - lst.Add(new Person(){ Name = "Manuel", Age = 33}); - lst.Add(new Person() { Name = "Carlos", Age = 32 }); - - ws.Cell(1, 1).Value = lst; - - //wb.Load(@"c:\Initial.xlsx"); + ws.Cell(1, 1).Value = "something"; + wb.SaveAs(@"C:\Excel Files\ForTesting\Sandbox.xlsx"); //Console.ReadKey(); } @@ -33,7 +28,5 @@ } // Save defaults to a .config file - - // Add/Copy/Paste (maybe another name?) rows, columns, ranges into an area. } }