diff --git a/ClosedXML/Excel/Cells/XLCell.cs b/ClosedXML/Excel/Cells/XLCell.cs index 91afa91..28ee0e9 100644 --- a/ClosedXML/Excel/Cells/XLCell.cs +++ b/ClosedXML/Excel/Cells/XLCell.cs @@ -105,18 +105,18 @@ get { return _worksheet; } } - private int _rowNumber; private int _columnNumber; private bool _fixedRow; private bool _fixedCol; + public XLAddress Address { get { return new XLAddress(_worksheet, _rowNumber, _columnNumber, _fixedRow, _fixedCol); } - internal set + internal set { if (value == null) return; @@ -331,7 +331,6 @@ if (_dataType == XLDataType.Boolean) return (cValue != "0").ToExcelFormat(format); - else if (_dataType == XLDataType.TimeSpan || _dataType == XLDataType.DateTime || IsDateFormat()) { double dTest; @@ -343,7 +342,6 @@ return cValue; } - else if (_dataType == XLDataType.Number) { double dTest; @@ -354,7 +352,6 @@ return cValue; } - else return cValue; } @@ -1843,18 +1840,18 @@ foreach (var cf in formats.ToList()) { var fmtRange = Relative(Intersection(cf.Range, fromRange), fromRange, toRange); - var c = new XLConditionalFormat((XLRange) fmtRange, true); + var c = new XLConditionalFormat((XLRange)fmtRange, true); c.CopyFrom(cf); foreach (var v in c.Values.ToList()) { var f = v.Value.Value; if (v.Value.IsFormula) { - var r1c1 = ((XLCell) cf.Range.FirstCell()).GetFormulaR1C1(f); + var r1c1 = ((XLCell)cf.Range.FirstCell()).GetFormulaR1C1(f); f = ((XLCell)fmtRange.FirstCell()).GetFormulaA1(r1c1); } - c.Values[v.Key] = new XLFormula {_value = f, IsFormula = v.Value.IsFormula}; + c.Values[v.Key] = new XLFormula { _value = f, IsFormula = v.Value.IsFormula }; } _worksheet.ConditionalFormats.Add(c); @@ -2171,7 +2168,7 @@ rowNumber += rowsToShift; var rowDiff = rowNumber - _rowNumber; if (rowDiff != 0 || fixedRow) - rowPart = fixedRow ? String.Format("R{0}", rowNumber) : String.Format("R[{0}]", rowDiff); + rowPart = fixedRow ? "R" + rowNumber : "R[" + rowDiff + "]"; else rowPart = "R"; @@ -2184,7 +2181,7 @@ columnNumber += columnsToShift; var columnDiff = columnNumber - _columnNumber; if (columnDiff != 0 || fixedColumn) - columnPart = fixedColumn ? String.Format("C{0}", columnNumber) : String.Format("C[{0}]", columnDiff); + columnPart = fixedColumn ? "C" + columnNumber : "C[" + columnDiff + "]"; else columnPart = "C"; @@ -2292,7 +2289,7 @@ { if (String.IsNullOrWhiteSpace(formulaA1)) return String.Empty; - var value = formulaA1; // ">" + formulaA1 + "<"; + var value = formulaA1; var regex = A1SimpleRegex; @@ -2331,6 +2328,12 @@ && shiftedRange.RangeAddress.FirstAddress.ColumnNumber <= matchRange.RangeAddress.FirstAddress.ColumnNumber && shiftedRange.RangeAddress.LastAddress.ColumnNumber >= matchRange.RangeAddress.LastAddress.ColumnNumber) { + if (useSheetName) + { + sb.Append(sheetName.EscapeSheetName()); + sb.Append('!'); + } + if (A1RowRegex.IsMatch(rangeAddress)) { var rows = rangeAddress.Split(':'); @@ -2354,115 +2357,53 @@ else row2 = (XLHelper.TrimRowNumber(Int32.Parse(row2String) + rowsShifted)).ToInvariantString(); - sb.Append(useSheetName - ? String.Format("{0}!{1}:{2}", sheetName.EscapeSheetName(), row1, row2) - : String.Format("{0}:{1}", row1, row2)); + sb.Append(row1); + sb.Append(':'); + sb.Append(row2); } else if (shiftedRange.RangeAddress.FirstAddress.RowNumber <= matchRange.RangeAddress.FirstAddress.RowNumber) { if (rangeAddress.Contains(':')) { - if (useSheetName) - { - sb.Append(String.Format("{0}!{1}:{2}", - sheetName.EscapeSheetName(), - new XLAddress(worksheetInAction, - XLHelper.TrimRowNumber(matchRange.RangeAddress.FirstAddress.RowNumber + rowsShifted), - matchRange.RangeAddress. - FirstAddress.ColumnLetter, - matchRange.RangeAddress. - FirstAddress.FixedRow, - matchRange.RangeAddress. - FirstAddress.FixedColumn), - new XLAddress(worksheetInAction, - XLHelper.TrimRowNumber(matchRange.RangeAddress.LastAddress.RowNumber + rowsShifted), - matchRange.RangeAddress. - LastAddress.ColumnLetter, - matchRange.RangeAddress. - LastAddress.FixedRow, - matchRange.RangeAddress. - LastAddress.FixedColumn))); - } - else - { - sb.Append(String.Format("{0}:{1}", - new XLAddress(worksheetInAction, - XLHelper.TrimRowNumber(matchRange.RangeAddress.FirstAddress.RowNumber + rowsShifted), - matchRange.RangeAddress. - FirstAddress.ColumnLetter, - matchRange.RangeAddress. - FirstAddress.FixedRow, - matchRange.RangeAddress. - FirstAddress.FixedColumn), - new XLAddress(worksheetInAction, - XLHelper.TrimRowNumber(matchRange.RangeAddress.LastAddress.RowNumber + rowsShifted), - matchRange.RangeAddress. - LastAddress.ColumnLetter, - matchRange.RangeAddress. - LastAddress.FixedRow, - matchRange.RangeAddress. - LastAddress.FixedColumn))); - } + sb.Append( + new XLAddress( + worksheetInAction, + XLHelper.TrimRowNumber(matchRange.RangeAddress.FirstAddress.RowNumber + rowsShifted), + matchRange.RangeAddress.FirstAddress.ColumnLetter, + matchRange.RangeAddress.FirstAddress.FixedRow, + matchRange.RangeAddress.FirstAddress.FixedColumn)); + sb.Append(':'); + sb.Append( + new XLAddress( + worksheetInAction, + XLHelper.TrimRowNumber(matchRange.RangeAddress.LastAddress.RowNumber + rowsShifted), + matchRange.RangeAddress.LastAddress.ColumnLetter, + matchRange.RangeAddress.LastAddress.FixedRow, + matchRange.RangeAddress.LastAddress.FixedColumn)); } else { - if (useSheetName) - { - sb.Append(String.Format("{0}!{1}", - sheetName.EscapeSheetName(), - new XLAddress(worksheetInAction, - XLHelper.TrimRowNumber(matchRange.RangeAddress.FirstAddress.RowNumber + rowsShifted), - matchRange.RangeAddress. - FirstAddress.ColumnLetter, - matchRange.RangeAddress. - FirstAddress.FixedRow, - matchRange.RangeAddress. - FirstAddress.FixedColumn))); - } - else - { - sb.Append(String.Format("{0}", - new XLAddress(worksheetInAction, - XLHelper.TrimRowNumber(matchRange.RangeAddress.FirstAddress.RowNumber + rowsShifted), - matchRange.RangeAddress. - FirstAddress.ColumnLetter, - matchRange.RangeAddress. - FirstAddress.FixedRow, - matchRange.RangeAddress. - FirstAddress.FixedColumn))); - } + sb.Append( + new XLAddress( + worksheetInAction, + XLHelper.TrimRowNumber(matchRange.RangeAddress.FirstAddress.RowNumber + rowsShifted), + matchRange.RangeAddress.FirstAddress.ColumnLetter, + matchRange.RangeAddress.FirstAddress.FixedRow, + matchRange.RangeAddress.FirstAddress.FixedColumn)); } } else { - if (useSheetName) - { - sb.Append(String.Format("{0}!{1}:{2}", - sheetName.EscapeSheetName(), - matchRange.RangeAddress.FirstAddress, - new XLAddress(worksheetInAction, - XLHelper.TrimRowNumber(matchRange.RangeAddress.LastAddress.RowNumber + rowsShifted), - matchRange.RangeAddress. - LastAddress.ColumnLetter, - matchRange.RangeAddress. - LastAddress.FixedRow, - matchRange.RangeAddress. - LastAddress.FixedColumn))); - } - else - { - sb.Append(String.Format("{0}:{1}", - matchRange.RangeAddress.FirstAddress, - new XLAddress(worksheetInAction, - XLHelper.TrimRowNumber(matchRange.RangeAddress.LastAddress.RowNumber + rowsShifted), - matchRange.RangeAddress. - LastAddress.ColumnLetter, - matchRange.RangeAddress. - LastAddress.FixedRow, - matchRange.RangeAddress. - LastAddress.FixedColumn))); - } + sb.Append(matchRange.RangeAddress.FirstAddress); + sb.Append(':'); + sb.Append( + new XLAddress( + worksheetInAction, + XLHelper.TrimRowNumber(matchRange.RangeAddress.LastAddress.RowNumber + rowsShifted), + matchRange.RangeAddress.LastAddress.ColumnLetter, + matchRange.RangeAddress.LastAddress.FixedRow, + matchRange.RangeAddress.LastAddress.FixedColumn)); } } else @@ -2477,6 +2418,7 @@ } else sb.Append(value.Substring(lastIndex, matchIndex - lastIndex + matchString.Length)); + lastIndex = matchIndex + matchString.Length; } @@ -2484,9 +2426,6 @@ sb.Append(value.Substring(lastIndex)); return sb.ToString(); - - //string retVal = sb.ToString(); - //return retVal.Substring(1, retVal.Length - 2); } internal void ShiftFormulaColumns(XLRange shiftedRange, int columnsShifted) @@ -2499,7 +2438,7 @@ { if (String.IsNullOrWhiteSpace(formulaA1)) return String.Empty; - var value = formulaA1; // ">" + formulaA1 + "<"; + var value = formulaA1; var regex = A1SimpleRegex; @@ -2542,6 +2481,12 @@ shiftedRange.RangeAddress.LastAddress.RowNumber >= matchRange.RangeAddress.LastAddress.RowNumber) { + if (useSheetName) + { + sb.Append(sheetName.EscapeSheetName()); + sb.Append('!'); + } + if (A1ColumnRegex.IsMatch(rangeAddress)) { var columns = rangeAddress.Split(':'); @@ -2579,115 +2524,53 @@ columnsShifted, true); } - sb.Append(useSheetName - ? String.Format("{0}!{1}:{2}", sheetName.EscapeSheetName(), column1, column2) - : String.Format("{0}:{1}", column1, column2)); + sb.Append(column1); + sb.Append(':'); + sb.Append(column2); } else if (shiftedRange.RangeAddress.FirstAddress.ColumnNumber <= matchRange.RangeAddress.FirstAddress.ColumnNumber) { if (rangeAddress.Contains(':')) { - if (useSheetName) - { - sb.Append(String.Format("{0}!{1}:{2}", - sheetName.EscapeSheetName(), - new XLAddress(worksheetInAction, - matchRange.RangeAddress. - FirstAddress.RowNumber, - XLHelper.TrimColumnNumber(matchRange.RangeAddress.FirstAddress.ColumnNumber + columnsShifted), - matchRange.RangeAddress. - FirstAddress.FixedRow, - matchRange.RangeAddress. - FirstAddress.FixedColumn), - new XLAddress(worksheetInAction, - matchRange.RangeAddress. - LastAddress.RowNumber, - XLHelper.TrimColumnNumber(matchRange.RangeAddress.LastAddress.ColumnNumber + columnsShifted), - matchRange.RangeAddress. - LastAddress.FixedRow, - matchRange.RangeAddress. - LastAddress.FixedColumn))); - } - else - { - sb.Append(String.Format("{0}:{1}", - new XLAddress(worksheetInAction, - matchRange.RangeAddress. - FirstAddress.RowNumber, - XLHelper.TrimColumnNumber(matchRange.RangeAddress.FirstAddress.ColumnNumber + columnsShifted), - matchRange.RangeAddress. - FirstAddress.FixedRow, - matchRange.RangeAddress. - FirstAddress.FixedColumn), - new XLAddress(worksheetInAction, - matchRange.RangeAddress. - LastAddress.RowNumber, - XLHelper.TrimColumnNumber(matchRange.RangeAddress.LastAddress.ColumnNumber + columnsShifted), - matchRange.RangeAddress. - LastAddress.FixedRow, - matchRange.RangeAddress. - LastAddress.FixedColumn))); - } + sb.Append( + new XLAddress( + worksheetInAction, + matchRange.RangeAddress.FirstAddress.RowNumber, + XLHelper.TrimColumnNumber(matchRange.RangeAddress.FirstAddress.ColumnNumber + columnsShifted), + matchRange.RangeAddress.FirstAddress.FixedRow, + matchRange.RangeAddress.FirstAddress.FixedColumn)); + sb.Append(':'); + sb.Append( + new XLAddress( + worksheetInAction, + matchRange.RangeAddress.LastAddress.RowNumber, + XLHelper.TrimColumnNumber(matchRange.RangeAddress.LastAddress.ColumnNumber + columnsShifted), + matchRange.RangeAddress.LastAddress.FixedRow, + matchRange.RangeAddress.LastAddress.FixedColumn)); } else { - if (useSheetName) - { - sb.Append(String.Format("{0}!{1}", - sheetName.EscapeSheetName(), - new XLAddress(worksheetInAction, - matchRange.RangeAddress. - FirstAddress.RowNumber, - XLHelper.TrimColumnNumber(matchRange.RangeAddress.FirstAddress.ColumnNumber + columnsShifted), - matchRange.RangeAddress. - FirstAddress.FixedRow, - matchRange.RangeAddress. - FirstAddress.FixedColumn))); - } - else - { - sb.Append(String.Format("{0}", - new XLAddress(worksheetInAction, - matchRange.RangeAddress. - FirstAddress.RowNumber, - XLHelper.TrimColumnNumber(matchRange.RangeAddress.FirstAddress.ColumnNumber + columnsShifted), - matchRange.RangeAddress. - FirstAddress.FixedRow, - matchRange.RangeAddress. - FirstAddress.FixedColumn))); - } + sb.Append( + new XLAddress( + worksheetInAction, + matchRange.RangeAddress.FirstAddress.RowNumber, + XLHelper.TrimColumnNumber(matchRange.RangeAddress.FirstAddress.ColumnNumber + columnsShifted), + matchRange.RangeAddress.FirstAddress.FixedRow, + matchRange.RangeAddress.FirstAddress.FixedColumn)); } } else { - if (useSheetName) - { - sb.Append(String.Format("{0}!{1}:{2}", - sheetName.EscapeSheetName(), - matchRange.RangeAddress.FirstAddress, - new XLAddress(worksheetInAction, - matchRange.RangeAddress. - LastAddress.RowNumber, - XLHelper.TrimColumnNumber(matchRange.RangeAddress.LastAddress.ColumnNumber + columnsShifted), - matchRange.RangeAddress. - LastAddress.FixedRow, - matchRange.RangeAddress. - LastAddress.FixedColumn))); - } - else - { - sb.Append(String.Format("{0}:{1}", - matchRange.RangeAddress.FirstAddress, - new XLAddress(worksheetInAction, - matchRange.RangeAddress. - LastAddress.RowNumber, - XLHelper.TrimColumnNumber(matchRange.RangeAddress.LastAddress.ColumnNumber + columnsShifted), - matchRange.RangeAddress. - LastAddress.FixedRow, - matchRange.RangeAddress. - LastAddress.FixedColumn))); - } + sb.Append(matchRange.RangeAddress.FirstAddress); + sb.Append(':'); + sb.Append( + new XLAddress( + worksheetInAction, + matchRange.RangeAddress.LastAddress.RowNumber, + XLHelper.TrimColumnNumber(matchRange.RangeAddress.LastAddress.ColumnNumber + columnsShifted), + matchRange.RangeAddress.LastAddress.FixedRow, + matchRange.RangeAddress.LastAddress.FixedColumn)); } } else @@ -2709,13 +2592,8 @@ sb.Append(value.Substring(lastIndex)); return sb.ToString(); - - //string retVal = sb.ToString(); - //return retVal.Substring(1, retVal.Length - 2); } - // -- - private XLCell CellShift(Int32 rowsToShift, Int32 columnsToShift) { return Worksheet.Cell(_rowNumber + rowsToShift, _columnNumber + columnsToShift); diff --git a/ClosedXML/Excel/Coordinates/XLAddress.cs b/ClosedXML/Excel/Coordinates/XLAddress.cs index 56f3922..d8f5dcd 100644 --- a/ClosedXML/Excel/Coordinates/XLAddress.cs +++ b/ClosedXML/Excel/Coordinates/XLAddress.cs @@ -237,22 +237,19 @@ public string ToString(XLReferenceStyle referenceStyle, bool includeSheet) { - string address = string.Empty; + string address; if (referenceStyle == XLReferenceStyle.A1) - - address = ColumnLetter + _rowNumber.ToInvariantString(); - else if (referenceStyle == XLReferenceStyle.R1C1) - - address = String.Format("R{0}C{1}", _rowNumber.ToInvariantString(), ColumnNumber); - else if (HasWorksheet && Worksheet.Workbook.ReferenceStyle == XLReferenceStyle.R1C1) - - address = String.Format("R{0}C{1}", _rowNumber.ToInvariantString(), ColumnNumber); + address = GetTrimmedAddress(); + else if (referenceStyle == XLReferenceStyle.R1C1 + || HasWorksheet && Worksheet.Workbook.ReferenceStyle == XLReferenceStyle.R1C1) + address = "R" + _rowNumber.ToInvariantString() + "C" + ColumnNumber.ToInvariantString(); else - address = ColumnLetter + _rowNumber.ToInvariantString(); + address = GetTrimmedAddress(); if (includeSheet) - return String.Format("{0}!{1}", + return String.Concat( Worksheet.Name.EscapeSheetName(), + '!', address); return address; @@ -388,9 +385,11 @@ public String ToStringRelative(Boolean includeSheet) { if (includeSheet) - return String.Format("{0}!{1}", + return String.Concat( Worksheet.Name.EscapeSheetName(), - GetTrimmedAddress()); + '!', + GetTrimmedAddress() + ); return GetTrimmedAddress(); } @@ -403,18 +402,33 @@ public String ToStringFixed(XLReferenceStyle referenceStyle, Boolean includeSheet) { String address; - if (referenceStyle == XLReferenceStyle.A1) - address = String.Format("${0}${1}", ColumnLetter, _rowNumber.ToInvariantString()); - else if (referenceStyle == XLReferenceStyle.R1C1) - address = String.Format("R{0}C{1}", _rowNumber.ToInvariantString(), ColumnNumber); - else if (HasWorksheet && Worksheet.Workbook.ReferenceStyle == XLReferenceStyle.R1C1) - address = String.Format("R{0}C{1}", _rowNumber.ToInvariantString(), ColumnNumber); - else - address = String.Format("${0}${1}", ColumnLetter, _rowNumber.ToInvariantString()); + + if (referenceStyle == XLReferenceStyle.Default && HasWorksheet) + referenceStyle = Worksheet.Workbook.ReferenceStyle; + + if (referenceStyle == XLReferenceStyle.Default) + referenceStyle = XLReferenceStyle.A1; + + Debug.Assert(referenceStyle != XLReferenceStyle.Default); + + switch (referenceStyle) + { + case XLReferenceStyle.A1: + address = String.Concat('$', ColumnLetter, '$', _rowNumber.ToInvariantString()); + break; + + case XLReferenceStyle.R1C1: + address = String.Concat('R', _rowNumber.ToInvariantString(), 'C', ColumnNumber); + break; + + default: + throw new NotImplementedException(); + } if (includeSheet) - return String.Format("{0}!{1}", + return String.Concat( Worksheet.Name.EscapeSheetName(), + '!', address); return address; diff --git a/ClosedXML/Excel/Hyperlinks/XLHyperlink_public.cs b/ClosedXML/Excel/Hyperlinks/XLHyperlink_public.cs index f60e516..376809a 100644 --- a/ClosedXML/Excel/Hyperlinks/XLHyperlink_public.cs +++ b/ClosedXML/Excel/Hyperlinks/XLHyperlink_public.cs @@ -75,14 +75,18 @@ if (_internalAddress.Contains('!')) { return _internalAddress[0] != '\'' - ? String.Format("{0}!{1}", + ? String.Concat( _internalAddress .Substring(0, _internalAddress.IndexOf('!')) .EscapeSheetName(), + '!', _internalAddress.Substring(_internalAddress.IndexOf('!') + 1)) : _internalAddress; } - return String.Format("{0}!{1}", Worksheet.Name.EscapeSheetName(), _internalAddress); + return String.Concat( + Worksheet.Name.EscapeSheetName(), + '!', + _internalAddress); } set { diff --git a/ClosedXML/Excel/Ranges/XLRangeAddress.cs b/ClosedXML/Excel/Ranges/XLRangeAddress.cs index b1d20c4..177677e 100644 --- a/ClosedXML/Excel/Ranges/XLRangeAddress.cs +++ b/ClosedXML/Excel/Ranges/XLRangeAddress.cs @@ -142,12 +142,17 @@ public String ToStringRelative(Boolean includeSheet) { if (includeSheet) - return String.Format("{0}!{1}:{2}", + return String.Concat( Worksheet.Name.EscapeSheetName(), + '!', _firstAddress.ToStringRelative(), + ':', _lastAddress.ToStringRelative()); - - return _firstAddress.ToStringRelative() + ":" + _lastAddress.ToStringRelative(); + else + return string.Concat( + _firstAddress.ToStringRelative(), + ":", + _lastAddress.ToStringRelative()); } public String ToStringFixed(XLReferenceStyle referenceStyle) diff --git a/ClosedXML/Excel/Ranges/XLRangeBase.cs b/ClosedXML/Excel/Ranges/XLRangeBase.cs index bc59b8c..77a0840 100644 --- a/ClosedXML/Excel/Ranges/XLRangeBase.cs +++ b/ClosedXML/Excel/Ranges/XLRangeBase.cs @@ -1505,7 +1505,12 @@ public override string ToString() { - return String.Format("{0}!{1}:{2}", Worksheet.Name.EscapeSheetName(), RangeAddress.FirstAddress, RangeAddress.LastAddress); + return String.Concat( + Worksheet.Name.EscapeSheetName(), + '!', + RangeAddress.FirstAddress, + ':', + RangeAddress.LastAddress); } protected void ShiftColumns(IXLRangeAddress thisRangeAddress, XLRange shiftedRange, int columnsShifted) @@ -1519,7 +1524,7 @@ return; bool shiftLeftBoundary = (columnsShifted > 0 && thisRangeAddress.FirstAddress.ColumnNumber >= shiftedRange.RangeAddress.FirstAddress.ColumnNumber) || - (columnsShifted < 0 && thisRangeAddress.FirstAddress.ColumnNumber > shiftedRange.RangeAddress.FirstAddress.ColumnNumber); + (columnsShifted < 0 && thisRangeAddress.FirstAddress.ColumnNumber > shiftedRange.RangeAddress.FirstAddress.ColumnNumber); bool shiftRightBoundary = thisRangeAddress.LastAddress.ColumnNumber >= shiftedRange.RangeAddress.FirstAddress.ColumnNumber; @@ -1564,13 +1569,13 @@ if (thisRangeAddress.IsInvalid || shiftedRange.RangeAddress.IsInvalid) return; bool allColumnsAreCovered = thisRangeAddress.FirstAddress.ColumnNumber >= shiftedRange.RangeAddress.FirstAddress.ColumnNumber && - thisRangeAddress.LastAddress.ColumnNumber <= shiftedRange.RangeAddress.LastAddress.ColumnNumber; + thisRangeAddress.LastAddress.ColumnNumber <= shiftedRange.RangeAddress.LastAddress.ColumnNumber; if (!allColumnsAreCovered) return; bool shiftTopBoundary = (rowsShifted > 0 && thisRangeAddress.FirstAddress.RowNumber >= shiftedRange.RangeAddress.FirstAddress.RowNumber) || - (rowsShifted < 0 && thisRangeAddress.FirstAddress.RowNumber > shiftedRange.RangeAddress.FirstAddress.RowNumber); + (rowsShifted < 0 && thisRangeAddress.FirstAddress.RowNumber > shiftedRange.RangeAddress.FirstAddress.RowNumber); bool shiftBottomBoundary = thisRangeAddress.LastAddress.RowNumber >= shiftedRange.RangeAddress.FirstAddress.RowNumber; @@ -1706,7 +1711,6 @@ } return sb.ToString(); - } public IXLRangeBase Sort() @@ -1720,7 +1724,6 @@ return this; } - public IXLRangeBase Sort(String columnsToSortBy, XLSortOrder sortOrder = XLSortOrder.Ascending, Boolean matchCase = false, Boolean ignoreBlanks = true) { SortColumns.Clear(); diff --git a/ClosedXML/Excel/Tables/XLTable.cs b/ClosedXML/Excel/Tables/XLTable.cs index fca772f..81429f2 100644 --- a/ClosedXML/Excel/Tables/XLTable.cs +++ b/ClosedXML/Excel/Tables/XLTable.cs @@ -27,7 +27,7 @@ Int32 id = 1; while (true) { - string tableName = String.Format("Table{0}", id); + string tableName = String.Concat("Table", id); if (!Worksheet.Tables.Any(t => t.Name == tableName)) { Name = tableName; diff --git a/ClosedXML/Excel/XLWorkbook_Save.NestedTypes.cs b/ClosedXML/Excel/XLWorkbook_Save.NestedTypes.cs index 35f43af..e861ae9 100644 --- a/ClosedXML/Excel/XLWorkbook_Save.NestedTypes.cs +++ b/ClosedXML/Excel/XLWorkbook_Save.NestedTypes.cs @@ -73,7 +73,7 @@ Int32 id = _relIds[relType].Count + 1; while (true) { - String relId = String.Format("rId{0}", id); + String relId = String.Concat("rId", id); if (!_relIds[relType].Contains(relId)) { _relIds[relType].Add(relId); diff --git a/ClosedXML/Excel/XLWorkbook_Save.cs b/ClosedXML/Excel/XLWorkbook_Save.cs index fa92a1a..3411fea 100644 --- a/ClosedXML/Excel/XLWorkbook_Save.cs +++ b/ClosedXML/Excel/XLWorkbook_Save.cs @@ -661,7 +661,7 @@ { if (String.IsNullOrWhiteSpace(xlSheet.RelId)) { - rId = String.Format("rId{0}", xlSheet.SheetId); + rId = String.Concat("rId", xlSheet.SheetId); context.RelIdGenerator.AddValues(new List { rId }, RelType.Workbook); } else @@ -2816,7 +2816,7 @@ var rowNumber = c.Address.RowNumber; var columnNumber = c.Address.ColumnNumber; - var shapeId = String.Format("_x0000_s{0}", c.Comment.ShapeId); + var shapeId = String.Concat("_x0000_s", c.Comment.ShapeId); // Unique per cell (workbook?), e.g.: "_x0000_s1026" var anchor = GetAnchor(c); var textBox = GetTextBox(c.Comment.Style); @@ -2857,7 +2857,7 @@ Style = GetCommentStyle(c), FillColor = "#" + c.Comment.Style.ColorsAndLines.FillColor.Color.ToHex().Substring(2), StrokeColor = "#" + c.Comment.Style.ColorsAndLines.LineColor.Color.ToHex().Substring(2), - StrokeWeight = String.Format(CultureInfo.InvariantCulture, "{0}pt", c.Comment.Style.ColorsAndLines.LineWeight), + StrokeWeight = String.Concat(c.Comment.Style.ColorsAndLines.LineWeight.ToInvariantString(), "pt"), InsetMode = c.Comment.Style.Margins.Automatic ? InsetMarginValues.Auto : InsetMarginValues.Custom }; if (!String.IsNullOrWhiteSpace(c.Comment.Style.Web.AlternateText)) @@ -3105,11 +3105,11 @@ var retVal = new Vml.TextBox { Style = sb.ToString() }; var dm = ds.Margins; if (!dm.Automatic) - retVal.Inset = String.Format("{0}in,{1}in,{2}in,{3}in", - dm.Left.ToInvariantString(), - dm.Top.ToInvariantString(), - dm.Right.ToInvariantString(), - dm.Bottom.ToInvariantString()); + retVal.Inset = String.Concat( + dm.Left.ToInvariantString(), "in,", + dm.Top.ToInvariantString(), "in,", + dm.Right.ToInvariantString(), "in,", + dm.Bottom.ToInvariantString(), "in"); return retVal; } @@ -3146,11 +3146,11 @@ var lrOffset = Convert.ToInt32(lastCell.WorksheetRow().Height - (heightFromRows - cHeight)); return new Anchor { - Text = string.Format("{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}", - fcNumber, fcOffset, - frNumber, frOffset, - lcNumber, lcOffset, - lrNumber, lrOffset + Text = string.Concat( + fcNumber, ", ", fcOffset, ", ", + frNumber, ", ", frOffset, ", ", + lcNumber, ", ", lcOffset, ", ", + lrNumber, ", ", lrOffset ) }; } diff --git a/ClosedXML/Excel/XLWorksheet.cs b/ClosedXML/Excel/XLWorksheet.cs index 3769bfd..541b76e 100644 --- a/ClosedXML/Excel/XLWorksheet.cs +++ b/ClosedXML/Excel/XLWorksheet.cs @@ -1,13 +1,11 @@ using ClosedXML.Excel.CalcEngine; using ClosedXML.Excel.Drawings; using ClosedXML.Excel.Misc; -using ClosedXML.Extensions; using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Linq; -using System.Text; namespace ClosedXML.Excel { @@ -665,34 +663,6 @@ return targetSheet; } - private String ReplaceRelativeSheet(string newSheetName, String value) - { - if (String.IsNullOrWhiteSpace(value)) return value; - - var newValue = new StringBuilder(); - var addresses = value.Split(','); - foreach (var address in addresses) - { - var pair = address.Split('!'); - if (pair.Length == 2) - { - String sheetName = pair[0]; - if (sheetName.StartsWith("'")) - sheetName = sheetName.Substring(1, sheetName.Length - 2); - - String name = sheetName.ToLower().Equals(Name.ToLower()) - ? newSheetName - : sheetName; - newValue.Append(String.Format("{0}!{1}", name.EscapeSheetName(), pair[1])); - } - else - { - newValue.Append(address); - } - } - return newValue.ToString(); - } - public new IXLHyperlinks Hyperlinks { get; private set; } IXLDataValidations IXLWorksheet.DataValidations diff --git a/ClosedXML/Extensions/StringExtensions.cs b/ClosedXML/Extensions/StringExtensions.cs index e4a5009..cd2e4db 100644 --- a/ClosedXML/Extensions/StringExtensions.cs +++ b/ClosedXML/Extensions/StringExtensions.cs @@ -1,8 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace ClosedXML.Extensions { @@ -12,9 +8,9 @@ { if (sheetName.Contains("'") || sheetName.Contains(" ")) - return string.Format("'{0}'", sheetName.Replace("'", "''")); - - return sheetName; + return string.Concat('\'', sheetName.Replace("'", "''"), '\''); + else + return sheetName; } internal static string UnescapeSheetName(this String sheetName) @@ -41,6 +37,5 @@ hash ^= pLength; return hash.ToString("X"); } - } }