diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Tables/XLTableRow.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Tables/XLTableRow.cs index 43db4ef..1e7b0f2 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/Tables/XLTableRow.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Tables/XLTableRow.cs @@ -92,12 +92,12 @@ return RowBelow(step); } - public XLTableRow RowBelow() + public new XLTableRow RowBelow() { return RowBelow(1); } - public XLTableRow RowBelow(Int32 step) + public new XLTableRow RowBelow(Int32 step) { return RowShift(step); } diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook.cs index a9af618..4b52bb9 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook.cs @@ -4,6 +4,8 @@ namespace ClosedXML.Excel { + using System.Linq; + public enum XLCalculateMode { Auto, @@ -21,77 +23,94 @@ public enum XLCellSetValueBehavior { - /// Analyze input string and convert value. For avoid analyzing use escape symbol ' + /// + /// Analyze input string and convert value. For avoid analyzing use escape symbol ' + /// Smart = 0, - /// Direct set value. If value has unsupported type - value will be stored as string returned by + + /// + /// Direct set value. If value has unsupported type - value will be stored as string returned by + /// Simple = 1, } + public partial class XLWorkbook { #region Static + private static IXLStyle _defaultStyle; + public static IXLStyle DefaultStyle { get { - if (_defaultStyle == null) - { - _defaultStyle = new XLStyle(null, null) - { - Font = new XLFont(null, null) - { - Bold = false, - Italic = false, - Underline = XLFontUnderlineValues.None, - Strikethrough = false, - VerticalAlignment = XLFontVerticalTextAlignmentValues.Baseline, - FontSize = 11, - FontColor = XLColor.FromArgb(0, 0, 0), - FontName = "Calibri", - FontFamilyNumbering = XLFontFamilyNumberingValues.Swiss - }, - Fill = new XLFill(null) - { - BackgroundColor = XLColor.FromIndex(64), - PatternType = XLFillPatternValues.None, - PatternColor = XLColor.FromIndex(64) - }, - Border = new XLBorder(null, null) - { - BottomBorder = XLBorderStyleValues.None, - DiagonalBorder = XLBorderStyleValues.None, - DiagonalDown = false, - DiagonalUp = false, - LeftBorder = XLBorderStyleValues.None, - RightBorder = XLBorderStyleValues.None, - TopBorder = XLBorderStyleValues.None, - BottomBorderColor = XLColor.Black, - DiagonalBorderColor = XLColor.Black, - LeftBorderColor = XLColor.Black, - RightBorderColor = XLColor.Black, - TopBorderColor = XLColor.Black - }, - NumberFormat = new XLNumberFormat(null, null) {NumberFormatId = 0}, - Alignment = new XLAlignment(null) - { - Indent = 0, - Horizontal = XLAlignmentHorizontalValues.General, - JustifyLastLine = false, - ReadingOrder = XLAlignmentReadingOrderValues.ContextDependent, - RelativeIndent = 0, - ShrinkToFit = false, - TextRotation = 0, - Vertical = XLAlignmentVerticalValues.Bottom, - WrapText = false - }, - Protection = new XLProtection(null) - { - Locked = true, - Hidden = false - } - }; - } - return _defaultStyle; + return _defaultStyle ?? (_defaultStyle = new XLStyle(null) + { + Font = new XLFont(null, null) + { + Bold = false, + Italic = false, + Underline = XLFontUnderlineValues.None, + Strikethrough = false, + VerticalAlignment = + XLFontVerticalTextAlignmentValues. + Baseline, + FontSize = 11, + FontColor = XLColor.FromArgb(0, 0, 0), + FontName = "Calibri", + FontFamilyNumbering = + XLFontFamilyNumberingValues.Swiss + }, + Fill = new XLFill(null) + { + BackgroundColor = XLColor.FromIndex(64), + PatternType = XLFillPatternValues.None, + PatternColor = XLColor.FromIndex(64) + }, + Border = new XLBorder(null, null) + { + BottomBorder = + XLBorderStyleValues.None, + DiagonalBorder = + XLBorderStyleValues.None, + DiagonalDown = false, + DiagonalUp = false, + LeftBorder = XLBorderStyleValues.None, + RightBorder = XLBorderStyleValues.None, + TopBorder = XLBorderStyleValues.None, + BottomBorderColor = XLColor.Black, + DiagonalBorderColor = XLColor.Black, + LeftBorderColor = XLColor.Black, + RightBorderColor = XLColor.Black, + TopBorderColor = XLColor.Black + }, + NumberFormat = + new XLNumberFormat(null, null) {NumberFormatId = 0}, + Alignment = new XLAlignment(null) + { + Indent = 0, + Horizontal = + XLAlignmentHorizontalValues. + General, + JustifyLastLine = false, + ReadingOrder = + XLAlignmentReadingOrderValues. + ContextDependent, + RelativeIndent = 0, + ShrinkToFit = false, + TextRotation = 0, + Vertical = + XLAlignmentVerticalValues. + Bottom, + WrapText = false + }, + Protection = new XLProtection(null) + { + Locked = true, + Hidden = false + } + }); } } @@ -104,22 +123,22 @@ { var defaultPageOptions = new XLPageSetup(null, null) { - PageOrientation = XLPageOrientation.Default, - Scale = 100, - PaperSize = XLPaperSize.LetterPaper, - Margins = new XLMargins - { - Top = 0.75, - Bottom = 0.5, - Left = 0.75, - Right = 0.75, - Header = 0.5, - Footer = 0.75 - }, - ScaleHFWithDocument = true, - AlignHFWithMargins = true, - PrintErrorValue = XLPrintErrorValues.Displayed, - ShowComments = XLShowCommentsValues.None + PageOrientation = XLPageOrientation.Default, + Scale = 100, + PaperSize = XLPaperSize.LetterPaper, + Margins = new XLMargins + { + Top = 0.75, + Bottom = 0.5, + Left = 0.75, + Right = 0.75, + Header = 0.5, + Footer = 0.75 + }, + ScaleHFWithDocument = true, + AlignHFWithMargins = true, + PrintErrorValue = XLPrintErrorValues.Displayed, + ShowComments = XLShowCommentsValues.None }; return defaultPageOptions; } @@ -131,32 +150,165 @@ { return new XLOutline(null) { - SummaryHLocation = XLOutlineSummaryHLocation.Right, - SummaryVLocation = XLOutlineSummaryVLocation.Bottom + SummaryHLocation = XLOutlineSummaryHLocation.Right, + SummaryVLocation = XLOutlineSummaryVLocation.Bottom }; } } -/// - /// Behavior for + + /// + /// Behavior for /// public static XLCellSetValueBehavior CellSetValueBehavior { get; set; } + #endregion + + private readonly Dictionary _unsupportedSheets = + new Dictionary(); + + #region Nested Type: XLLoadSource + + private enum XLLoadSource + { + New, + File, + Stream + }; + + #endregion + + internal XLWorksheets WorksheetsInternal { get; private set; } + + /// + /// Gets an object to manipulate the worksheets. + /// + public IXLWorksheets Worksheets + { + get { return WorksheetsInternal; } + } + + /// + /// Gets an object to manipulate this workbook's named ranges. + /// + public IXLNamedRanges NamedRanges { get; private set; } + + /// + /// Gets an object to manipulate this workbook's theme. + /// + public IXLTheme Theme { get; private set; } + + /// + /// Gets or sets the default style for the workbook. + /// All new worksheets will use this style. + /// + public IXLStyle Style { get; set; } + + /// + /// Gets or sets the default row height for the workbook. + /// All new worksheets will use this row height. + /// + public Double RowHeight { get; set; } + + /// + /// Gets or sets the default column width for the workbook. + /// All new worksheets will use this column width. + /// + public Double ColumnWidth { get; set; } + + /// + /// Gets or sets the default page options for the workbook. + /// All new worksheets will use these page options. + /// + public IXLPageSetup PageOptions { get; set; } + + /// + /// Gets or sets the default outline options for the workbook. + /// All new worksheets will use these outline options. + /// + public IXLOutline Outline { get; set; } + + /// + /// Gets or sets the workbook's properties. + /// + public XLWorkbookProperties Properties { get; set; } + + /// + /// Gets or sets the workbook's calculation mode. + /// + public XLCalculateMode CalculateMode { get; set; } + + /// + /// Gets or sets the workbook's reference style. + /// + public XLReferenceStyle ReferenceStyle { get; set; } + + public IXLCustomProperties CustomProperties { get; private set; } + + public Boolean ShowFormulas { get; set; } + public Boolean ShowGridLines { get; set; } + public Boolean ShowOutlineSymbols { get; set; } + public Boolean ShowRowColHeaders { get; set; } + public Boolean ShowRuler { get; set; } + public Boolean ShowWhiteSpace { get; set; } + public Boolean ShowZeros { get; set; } + public Boolean RightToLeft { get; set; } + + public Boolean DefaultShowFormulas + { + get { return false; } + } + + public Boolean DefaultShowGridLines + { + get { return true; } + } + + public Boolean DefaultShowOutlineSymbols + { + get { return true; } + } + + public Boolean DefaultShowRowColHeaders + { + get { return true; } + } + + public Boolean DefaultShowRuler + { + get { return true; } + } + + public Boolean DefaultShowWhiteSpace + { + get { return true; } + } + + public Boolean DefaultShowZeros + { + get { return true; } + } + + public Boolean DefaultRightToLeft + { + get { return false; } + } + private void InitializeTheme() { Theme = new XLTheme { - Text1 = XLColor.FromHtml("#FF000000"), - Background1 = XLColor.FromHtml("#FFFFFFFF"), - Text2 = XLColor.FromHtml("#FF1F497D"), - Background2 = XLColor.FromHtml("#FFEEECE1"), - Accent1 = XLColor.FromHtml("#FF4F81BD"), - Accent2 = XLColor.FromHtml("#FFC0504D"), - Accent3 = XLColor.FromHtml("#FF9BBB59"), - Accent4 = XLColor.FromHtml("#FF8064A2"), - Accent5 = XLColor.FromHtml("#FF4BACC6"), - Accent6 = XLColor.FromHtml("#FFF79646"), - Hyperlink = XLColor.FromHtml("#FF0000FF"), - FollowedHyperlink = XLColor.FromHtml("#FF800080") + Text1 = XLColor.FromHtml("#FF000000"), + Background1 = XLColor.FromHtml("#FFFFFFFF"), + Text2 = XLColor.FromHtml("#FF1F497D"), + Background2 = XLColor.FromHtml("#FFEEECE1"), + Accent1 = XLColor.FromHtml("#FF4F81BD"), + Accent2 = XLColor.FromHtml("#FFC0504D"), + Accent3 = XLColor.FromHtml("#FF9BBB59"), + Accent4 = XLColor.FromHtml("#FF8064A2"), + Accent5 = XLColor.FromHtml("#FF4BACC6"), + Accent6 = XLColor.FromHtml("#FFF79646"), + Hyperlink = XLColor.FromHtml("#FF0000FF"), + FollowedHyperlink = XLColor.FromHtml("#FF800080") }; } @@ -188,14 +340,157 @@ throw new ArgumentException("Invalid theme color"); } } - #region Fields - private readonly XLLoadSource m_loadSource = XLLoadSource.New; - private readonly String m_originalFile; - private readonly Stream m_originalStream; - #endregion - #region Constructor + + public IXLNamedRange NamedRange(String rangeName) + { + return NamedRanges.NamedRange(rangeName); + } + /// - /// Creates a new Excel workbook. + /// Saves the current workbook. + /// + public void Save() + { + if (_loadSource == XLLoadSource.New) + throw new Exception("This is a new file, please use one of the SaveAs methods."); + + if (_loadSource == XLLoadSource.Stream) + CreatePackage(_originalStream, false); + else + CreatePackage(_originalFile); + } + + /// + /// Saves the current workbook to a file. + /// + public void SaveAs(String file) + { + PathHelper.CreateDirectory(Path.GetDirectoryName(file)); + if (_loadSource == XLLoadSource.New) + { + if (File.Exists(file)) + File.Delete(file); + + CreatePackage(file); + } + else if (_loadSource == XLLoadSource.File) + { + if (String.Compare(_originalFile.Trim(), file.Trim(), true) != 0) + File.Copy(_originalFile, file, true); + + CreatePackage(file); + } + else if (_loadSource == XLLoadSource.Stream) + { + _originalStream.Position = 0; + + using (var fileStream = File.Create(file)) + { + CopyStream(_originalStream, fileStream); + //fileStream.Position = 0; + CreatePackage(fileStream, false); + fileStream.Close(); + } + } + } + + /// + /// Saves the current workbook to a stream. + /// + public void SaveAs(Stream stream) + { + if (_loadSource == XLLoadSource.New) + CreatePackage(stream, true); + else if (_loadSource == XLLoadSource.File) + { + using (var fileStream = new FileStream(_originalFile, FileMode.Open)) + { + CopyStream(fileStream, stream); + fileStream.Close(); + } + CreatePackage(stream, false); + } + else if (_loadSource == XLLoadSource.Stream) + { + _originalStream.Position = 0; + if (_originalStream != stream) + CopyStream(_originalStream, stream); + + CreatePackage(stream, false); + } + } + + internal void CopyStream(Stream input, Stream output) + { + var buffer = new byte[8 * 1024]; + int len; + while ((len = input.Read(buffer, 0, buffer.Length)) > 0) + output.Write(buffer, 0, len); + } + + public IXLWorksheet Worksheet(String name) + { + return WorksheetsInternal.Worksheet(name); + } + + public IXLWorksheet Worksheet(Int32 position) + { + return WorksheetsInternal.Worksheet(position); + } + + public IXLCustomProperty CustomProperty(String name) + { + return CustomProperties.CustomProperty(name); + } + + public IXLCells FindCells(Func predicate) + { + var cells = new XLCells(false, false); + foreach (XLWorksheet ws in WorksheetsInternal) + { + foreach (XLCell cell in ws.CellsUsed(true)) + { + if (predicate(cell)) + cells.Add(cell); + } + } + return cells; + } + + public IXLRows FindRows(Func predicate) + { + var rows = new XLRows(null); + foreach (XLWorksheet ws in WorksheetsInternal) + { + foreach (IXLRow row in ws.Rows().Where(predicate)) + rows.Add(row as XLRow); + } + return rows; + } + + public IXLColumns FindColumns(Func predicate) + { + var columns = new XLColumns(null); + foreach (XLWorksheet ws in WorksheetsInternal) + { + foreach (IXLColumn column in ws.Columns().Where(predicate)) + columns.Add(column as XLColumn); + } + return columns; + } + + #region Fields + + private readonly XLLoadSource _loadSource = XLLoadSource.New; + private readonly String _originalFile; + private readonly Stream _originalStream; + + #endregion + + #region Constructor + + /// + /// Creates a new Excel workbook. /// public XLWorkbook() { @@ -217,312 +512,48 @@ ShowRuler = DefaultShowRuler; ShowWhiteSpace = DefaultShowWhiteSpace; ShowZeros = DefaultShowZeros; + RightToLeft = DefaultRightToLeft; WorksheetsInternal = new XLWorksheets(this); NamedRanges = new XLNamedRanges(this); CustomProperties = new XLCustomProperties(this); } + /// - /// Opens an existing workbook from a file. + /// Opens an existing workbook from a file. /// /// The file to open. public XLWorkbook(String file) - : this() + : this() { - m_loadSource = XLLoadSource.File; - m_originalFile = file; + _loadSource = XLLoadSource.File; + _originalFile = file; Load(file); } /// - /// Opens an existing workbook from a stream. + /// Opens an existing workbook from a stream. /// /// The stream to open. public XLWorkbook(Stream stream) - : this() + : this() { - m_loadSource = XLLoadSource.Stream; - m_originalStream = stream; + _loadSource = XLLoadSource.Stream; + _originalStream = stream; Load(stream); } + #endregion - #region IXLWorkbook Members - internal XLWorksheets WorksheetsInternal { get; private set; } - /// - /// Gets an object to manipulate the worksheets. - /// - public IXLWorksheets Worksheets { get { return WorksheetsInternal; } } - /// - /// Gets an object to manipulate this workbook's named ranges. - /// - public IXLNamedRanges NamedRanges { get; private set; } + #region Nested type: UnsupportedSheet - public IXLNamedRange NamedRange(String rangeName) + private sealed class UnsupportedSheet { - return NamedRanges.NamedRange(rangeName); - } - - /// - /// Gets the file name of the workbook. - /// - public String Name { get; private set; } - - /// - /// Gets the file name of the workbook including its full directory. - /// - public String FullName { get; private set; } - /// - /// Gets an object to manipulate this workbook's theme. - /// - public IXLTheme Theme { get; private set; } - - /// - /// Saves the current workbook. - /// - public void Save() - { - if (m_loadSource == XLLoadSource.New) - { - throw new Exception("This is a new file, please use one of the SaveAs methods."); - } - - if (m_loadSource == XLLoadSource.Stream) - { - CreatePackage(m_originalStream, false); - } - else - { - CreatePackage(m_originalFile); - } - } - /// - /// Saves the current workbook to a file. - /// - public void SaveAs(String file) - { - PathHelper.CreateDirectory(Path.GetDirectoryName(file)); - if (m_loadSource == XLLoadSource.New) - { - if (File.Exists(file)) - { - File.Delete(file); - } - - CreatePackage(file); - } - else if (m_loadSource == XLLoadSource.File) - { - if (String.Compare(m_originalFile.Trim(), file.Trim(), true) != 0) - { - File.Copy(m_originalFile, file, true); - } - - CreatePackage(file); - } - else if (m_loadSource == XLLoadSource.Stream) - { - m_originalStream.Position = 0; - - using (var fileStream = File.Create(file)) - { - CopyStream(m_originalStream, fileStream); - //fileStream.Position = 0; - CreatePackage(fileStream, false); - fileStream.Close(); - } - } - } - /// - /// Saves the current workbook to a stream. - /// - public void SaveAs(Stream stream) - { - if (m_loadSource == XLLoadSource.New) - { - CreatePackage(stream, true); - } - else if (m_loadSource == XLLoadSource.File) - { - using (var fileStream = new FileStream(m_originalFile, FileMode.Open)) - { - CopyStream(fileStream, stream); - fileStream.Close(); - } - CreatePackage(stream, false); - } - else if (m_loadSource == XLLoadSource.Stream) - { - m_originalStream.Position = 0; - if (m_originalStream != stream) - { - CopyStream(m_originalStream, stream); - } - - CreatePackage(stream, false); - } - } - - internal void CopyStream(Stream input, Stream output) - { - byte[] buffer = new byte[8*1024]; - int len; - while ((len = input.Read(buffer, 0, buffer.Length)) > 0) - { - output.Write(buffer, 0, len); - } - } - - /// - /// Gets or sets the default style for the workbook. - /// All new worksheets will use this style. - /// - public IXLStyle Style { get; set; } - /// - /// Gets or sets the default row height for the workbook. - /// All new worksheets will use this row height. - /// - public Double RowHeight { get; set; } - /// - /// Gets or sets the default column width for the workbook. - /// All new worksheets will use this column width. - /// - public Double ColumnWidth { get; set; } - /// - /// Gets or sets the default page options for the workbook. - /// All new worksheets will use these page options. - /// - public IXLPageSetup PageOptions { get; set; } - /// - /// Gets or sets the default outline options for the workbook. - /// All new worksheets will use these outline options. - /// - public IXLOutline Outline { get; set; } - /// - /// Gets or sets the workbook's properties. - /// - public XLWorkbookProperties Properties { get; set; } - /// - /// Gets or sets the workbook's calculation mode. - /// - public XLCalculateMode CalculateMode { get; set; } - /// - /// Gets or sets the workbook's reference style. - /// - public XLReferenceStyle ReferenceStyle { get; set; } - #endregion - public IXLWorksheet Worksheet(String name) - { - return WorksheetsInternal.Worksheet(name); - } - public IXLWorksheet Worksheet(Int32 position) - { - return WorksheetsInternal.Worksheet(position); - } - - public IXLCustomProperty CustomProperty(String name) - { - return CustomProperties.CustomProperty(name); - } - - public IXLCustomProperties CustomProperties { get; private set; } - - public IXLCells FindCells(Func predicate) - { - var cells = new XLCells( false, false); - foreach (var ws in WorksheetsInternal) - { - foreach (var cell in ws.CellsUsed(true)) - { - if (predicate(cell)) - { - cells.Add(cell); - } - } - } - return cells; - } - public IXLRows FindRows(Func predicate) - { - var rows = new XLRows(null); - foreach (var ws in WorksheetsInternal) - { - foreach (var row in ws.Rows()) - { - if (predicate(row)) - { - rows.Add(row as XLRow); - } - } - } - return rows; - } - public IXLColumns FindColumns(Func predicate) - { - var columns = new XLColumns(null); - foreach (var ws in WorksheetsInternal) - { - foreach (var column in ws.Columns()) - { - if (predicate(column)) - { - columns.Add(column as XLColumn); - } - } - } - return columns; - } - - public Boolean ShowFormulas { get; set; } - public Boolean ShowGridLines { get; set; } - public Boolean ShowOutlineSymbols { get; set; } - public Boolean ShowRowColHeaders { get; set; } - public Boolean ShowRuler { get; set; } - public Boolean ShowWhiteSpace { get; set; } - public Boolean ShowZeros { get; set; } - - public Boolean DefaultShowFormulas - { - get { return false; } - } - public Boolean DefaultShowGridLines - { - get { return true; } - } - public Boolean DefaultShowOutlineSymbols - { - get { return true; } - } - public Boolean DefaultShowRowColHeaders - { - get { return true; } - } - public Boolean DefaultShowRuler - { - get { return true; } - } - public Boolean DefaultShowWhiteSpace - { - get { return true; } - } - public Boolean DefaultShowZeros - { - get { return true; } - } - - private class UnsupportedSheet - { - public UInt32 SheetId; public Boolean IsActive; + public UInt32 SheetId; } - private Dictionary _unsupportedSheets = new Dictionary(); - //-- - #region Nested Type: XLLoadSource - private enum XLLoadSource - { - New, - File, - Stream - }; + #endregion + + //-- } } \ No newline at end of file diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Load.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Load.cs index b7df233..925dca7 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Load.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Load.cs @@ -255,6 +255,11 @@ Worksheet((Int32)(workbookView.ActiveTab.Value + 1)).SetTabActive(); } + LoadDefinedNames(workbook); + } + + private void LoadDefinedNames(Workbook workbook) + { if (workbook.DefinedNames == null) return; foreach (DefinedName definedName in workbook.DefinedNames) @@ -264,28 +269,15 @@ { foreach (string area in definedName.Text.Split(',')) { - var sections = area.Trim().Split('!'); - string sheetName = sections[0].Replace("\'", ""); - string sheetArea = sections[1]; + string sheetName, sheetArea; + ParseReference(area, out sheetName, out sheetArea); if (!sheetArea.Equals("#REF")) WorksheetsInternal.Worksheet(sheetName).PageSetup.PrintAreas.Add(sheetArea); } } else if (name == "_xlnm.Print_Titles") { - var areas = definedName.Text.Split(','); - - var colSections = areas[0].Trim().Split('!'); - string sheetNameCol = colSections[0].Replace("\'", ""); - string sheetAreaCol = colSections[1]; - if (!sheetAreaCol.Equals("#REF")) - WorksheetsInternal.Worksheet(sheetNameCol).PageSetup.SetColumnsToRepeatAtLeft(sheetAreaCol); - - var rowSections = areas[1].Split('!'); - string sheetNameRow = rowSections[0].Replace("\'", ""); - string sheetAreaRow = rowSections[1]; - if (!sheetAreaRow.Equals("#REF")) - WorksheetsInternal.Worksheet(sheetNameRow).PageSetup.SetRowsToRepeatAtTop(sheetAreaRow); + LoadPrintTitles(definedName); } else { @@ -304,6 +296,50 @@ } } + private void LoadPrintTitles(DefinedName definedName) + { + var areas = definedName.Text.Split(','); + if (areas.Length > 0) + { + foreach (var item in areas) + { + SetColumnsOrRowsToRepeat(item); + } + return; + } + + SetColumnsOrRowsToRepeat(definedName.Text); + } + + private void SetColumnsOrRowsToRepeat(string area) + { + string sheetName, sheetArea; + ParseReference(area, out sheetName, out sheetArea); + if (sheetArea.Equals("#REF")) return; + if (IsColReference(sheetArea)) + WorksheetsInternal.Worksheet(sheetName).PageSetup.SetColumnsToRepeatAtLeft(sheetArea); + if (IsRowReference(sheetArea)) + WorksheetsInternal.Worksheet(sheetName).PageSetup.SetRowsToRepeatAtTop(sheetArea); + } + + // either $A:$X => true or $1:$99 => false + private static bool IsColReference(string sheetArea) + { + return char.IsLetter(sheetArea[1]); + } + + private static bool IsRowReference(string sheetArea) + { + return char.IsNumber(sheetArea[1]); + } + + private static void ParseReference(string item, out string sheetName, out string sheetArea) + { + var sections = item.Trim().Split('!'); + sheetName = sections[0].Replace("\'", ""); + sheetArea = sections[1]; + } + private void LoadCells(SharedStringItem[] sharedStrings, Stylesheet s, NumberingFormats numberingFormats, Fills fills, Borders borders, Fonts fonts, Dictionary sharedFormulasR1C1, XLWorksheet ws, Dictionary styleList, Cell cell) diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorksheet.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorksheet.cs index fa57c72..b342dae 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorksheet.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorksheet.cs @@ -74,6 +74,7 @@ ShowRuler = workbook.ShowRuler; ShowWhiteSpace = workbook.ShowWhiteSpace; ShowZeros = workbook.ShowZeros; + RightToLeft = workbook.RightToLeft; TabColor = new XLColor(); } diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Columns/ColumnCells.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Columns/ColumnCells.xlsx index ef306a0..d4fadc8 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Columns/ColumnCells.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Columns/ColumnCells.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Columns/ColumnCollection.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Columns/ColumnCollection.xlsx index 93416da..1928647 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Columns/ColumnCollection.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Columns/ColumnCollection.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Columns/ColumnSettings.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Columns/ColumnSettings.xlsx index f8c9a35..da2b209 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Columns/ColumnSettings.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Columns/ColumnSettings.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Columns/DeletingColumns.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Columns/DeletingColumns.xlsx index cba61e8..9555711 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Columns/DeletingColumns.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Columns/DeletingColumns.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Columns/InsertColumns.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Columns/InsertColumns.xlsx index 56a3734..1fc75dc 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Columns/InsertColumns.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Columns/InsertColumns.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Delete/RemoveRows.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Delete/RemoveRows.xlsx index 73d2b11..194f747 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Delete/RemoveRows.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Delete/RemoveRows.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Loading/ChangingBasicTable.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Loading/ChangingBasicTable.xlsx index ef86a9d..777a42a 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Loading/ChangingBasicTable.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Loading/ChangingBasicTable.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/AddingDataSet.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/AddingDataSet.xlsx index 61a07ab..420ba18 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/AddingDataSet.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/AddingDataSet.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/AddingDataTableAsWorksheet.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/AddingDataTableAsWorksheet.xlsx index 7206cf5..37723bd 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/AddingDataTableAsWorksheet.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/AddingDataTableAsWorksheet.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/AdjustToContents.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/AdjustToContents.xlsx index 13da819..beda471 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/AdjustToContents.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/AdjustToContents.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/AutoFilter.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/AutoFilter.xlsx index bf5fe0c..0fcb6a5 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/AutoFilter.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/AutoFilter.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/CellValues.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/CellValues.xlsx index 6f4c951..d300c59 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/CellValues.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/CellValues.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/Collections.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/Collections.xlsx index dfbe006..8ef241d 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/Collections.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/Collections.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/CopyingRowsAndColumns.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/CopyingRowsAndColumns.xlsx index 3e855c1..90dbc02 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/CopyingRowsAndColumns.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/CopyingRowsAndColumns.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/CopyingWorksheets.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/CopyingWorksheets.xlsx index 83b6dcd..64858ef 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/CopyingWorksheets.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/CopyingWorksheets.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/DataTypes.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/DataTypes.xlsx index e56e6c2..0cef0e4 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/DataTypes.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/DataTypes.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/DataValidation.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/DataValidation.xlsx index 338b10e..5c92d41 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/DataValidation.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/DataValidation.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/Formulas.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/Formulas.xlsx index ef429cf..4186afe 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/Formulas.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/Formulas.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/Hyperlinks.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/Hyperlinks.xlsx index 2865a77..6286982 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/Hyperlinks.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/Hyperlinks.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/InsertingData.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/InsertingData.xlsx index b07785a..1e2da14 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/InsertingData.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/InsertingData.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/InsertingTables.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/InsertingTables.xlsx index 36921c0..fa7b7b4 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/InsertingTables.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/InsertingTables.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/LambdaExpressions.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/LambdaExpressions.xlsx index 8606781..778f703 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/LambdaExpressions.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/LambdaExpressions.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/MergeCells.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/MergeCells.xlsx index 319c15a..00c5538 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/MergeCells.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/MergeCells.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/MergeMoves.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/MergeMoves.xlsx index f6ee196..57d3114 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/MergeMoves.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/MergeMoves.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/MultipleSheets.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/MultipleSheets.xlsx index 77113b8..a946000 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/MultipleSheets.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/MultipleSheets.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/SheetProtection.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/SheetProtection.xlsx index bfbf83f..00a70ae 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/SheetProtection.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/SheetProtection.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/ShiftingFormulas.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/ShiftingFormulas.xlsx index 5932e47..d586e00 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/ShiftingFormulas.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/ShiftingFormulas.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/ShowCase.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/ShowCase.xlsx index 9f4fc84..4623b47 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/ShowCase.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Misc/ShowCase.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/PageSetup/Sheets.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/PageSetup/Sheets.xlsx index d18f123..cf4884a 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/PageSetup/Sheets.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/PageSetup/Sheets.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/PageSetup/TwoPages.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/PageSetup/TwoPages.xlsx index cca6dfd..7345fc0 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/PageSetup/TwoPages.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/PageSetup/TwoPages.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/ClearingRanges.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/ClearingRanges.xlsx index b031a9e..42930c4 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/ClearingRanges.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/ClearingRanges.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/CopyingRanges.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/CopyingRanges.xlsx index 1ae2327..89b7166 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/CopyingRanges.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/CopyingRanges.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/CurrentRowColumn.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/CurrentRowColumn.xlsx index 970d1ef..f8059f3 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/CurrentRowColumn.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/CurrentRowColumn.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/DefiningRanges.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/DefiningRanges.xlsx index 041a860..b3b6f33 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/DefiningRanges.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/DefiningRanges.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/DeletingRanges.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/DeletingRanges.xlsx index a3e8e16..52e3601 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/DeletingRanges.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/DeletingRanges.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/InsertingDeletingColumns.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/InsertingDeletingColumns.xlsx index e97d636..6b527f5 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/InsertingDeletingColumns.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/InsertingDeletingColumns.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/InsertingDeletingRows.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/InsertingDeletingRows.xlsx index 58604da..5fa4de0 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/InsertingDeletingRows.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/InsertingDeletingRows.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/MultipleRanges.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/MultipleRanges.xlsx index 18be482..585a6cc 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/MultipleRanges.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/MultipleRanges.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/NamedRanges.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/NamedRanges.xlsx index 4ed8f2f..a7cee06 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/NamedRanges.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/NamedRanges.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/ShiftingRanges.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/ShiftingRanges.xlsx index affc57d..cbe1c8d 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/ShiftingRanges.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/ShiftingRanges.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/SortExample.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/SortExample.xlsx index a6913c8..44aff24 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/SortExample.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/SortExample.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/Sorting.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/Sorting.xlsx index 6d3cb87..4842bac 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/Sorting.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/Sorting.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/TransposeRanges.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/TransposeRanges.xlsx index 1a9b9de..8f32e21 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/TransposeRanges.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/TransposeRanges.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/TransposeRangesPlus.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/TransposeRangesPlus.xlsx index eee4d2c..81c2227 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/TransposeRangesPlus.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/TransposeRangesPlus.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/UsingTables.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/UsingTables.xlsx index 1b576be..bd367a7 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/UsingTables.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/UsingTables.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/WalkingRanges.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/WalkingRanges.xlsx index 2da686f..83f796c 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/WalkingRanges.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/WalkingRanges.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Rows/InsertRows.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Rows/InsertRows.xlsx index 09e050b..16ce005 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Rows/InsertRows.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Rows/InsertRows.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Rows/RowCells.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Rows/RowCells.xlsx index 6b15d58..47274b1 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Rows/RowCells.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Rows/RowCells.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Rows/RowCollection.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Rows/RowCollection.xlsx index e380464..8a3cfe2 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Rows/RowCollection.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Rows/RowCollection.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Rows/RowSettings.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Rows/RowSettings.xlsx index b161840..f3df9d0 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Rows/RowSettings.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Rows/RowSettings.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Styles/StyleAlignment.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Styles/StyleAlignment.xlsx index 9e42840..2a45e50 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Styles/StyleAlignment.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Styles/StyleAlignment.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Styles/StyleBorder.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Styles/StyleBorder.xlsx index a10b807..f313012 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Styles/StyleBorder.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Styles/StyleBorder.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Styles/StyleFill.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Styles/StyleFill.xlsx index fa3c920..6f8014b 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Styles/StyleFill.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Styles/StyleFill.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Styles/StyleFont.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Styles/StyleFont.xlsx index da7db76..8a4c121 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Styles/StyleFont.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Styles/StyleFont.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Styles/StyleNumberFormat.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Styles/StyleNumberFormat.xlsx index 9e82fed..fa32b25 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Styles/StyleNumberFormat.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Styles/StyleNumberFormat.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Styles/StyleRowsColumns.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Styles/StyleRowsColumns.xlsx index 552b08a..59b9f25 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Styles/StyleRowsColumns.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Styles/StyleRowsColumns.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Styles/StyleWorksheet.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Styles/StyleWorksheet.xlsx index c781e1a..737d597 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Styles/StyleWorksheet.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Styles/StyleWorksheet.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Styles/UsingRichText.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Styles/UsingRichText.xlsx index fa7009d..bc9c7b5 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Styles/UsingRichText.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Styles/UsingRichText.xlsx Binary files differ diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/TestHelper.cs b/ClosedXML/ClosedXML/ClosedXML_Tests/TestHelper.cs index a4ddde5..16857cc 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/TestHelper.cs +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/TestHelper.cs @@ -9,7 +9,7 @@ { //Note: Run example tests parameters public const string TestsOutputDirectory = @"C:\Excel Files\Tests\"; - public const string ActualTestResultPostFix = "(Actual)"; + public const string ActualTestResultPostFix = ""; public static readonly string TestsExampleOutputDirectory = Path.Combine(TestsOutputDirectory, "Examples"); private const bool CompareWithResources = true; @@ -25,18 +25,20 @@ where T : IXLExample, new() { var example = new T(); - string filePath = Path.Combine(TestsExampleOutputDirectory, filePartName); + string filePath1 = Path.Combine(TestsExampleOutputDirectory, filePartName); - var extension = Path.GetExtension(filePath); - var directory = Path.GetDirectoryName(filePath); + var extension = Path.GetExtension(filePath1); + var directory = Path.GetDirectoryName(filePath1); - var fileName= Path.GetFileNameWithoutExtension(filePath); + var fileName= Path.GetFileNameWithoutExtension(filePath1); fileName += ActualTestResultPostFix; fileName = Path.ChangeExtension(fileName, extension); - filePath = Path.Combine(directory, fileName); + filePath1 = Path.Combine(directory, "z" + fileName); + var filePath2 = Path.Combine(directory, fileName); //Run test - example.Create(filePath); + example.Create(filePath1); + new XLWorkbook(filePath1).SaveAs(filePath2); bool success = true; #pragma warning disable 162 try @@ -49,7 +51,7 @@ { string resourcePath = filePartName.Replace('\\', '.').TrimStart('.'); using (var streamExpected = _extractor.ReadFileFromResToStream(resourcePath)) - using (var streamActual = File.OpenRead(filePath)) + using (var streamActual = File.OpenRead(filePath2)) { string message; success = ExcelDocsComparer.Compare(streamActual, streamExpected, out message);