diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/XLColumn.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/XLColumn.cs
index b7fdf51..54a86b7 100644
--- a/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/XLColumn.cs
+++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/XLColumn.cs
@@ -218,12 +218,22 @@
}
}
- return Worksheet.Columns(columnNum + 1, columnNum + numberOfColumns);
+ var newColumns = Worksheet.Columns(columnNum + 1, columnNum + numberOfColumns);
+ CopyColumns(newColumns);
+ return newColumns;
}
public new IXLColumns InsertColumnsBefore(Int32 numberOfColumns)
{
int columnNum = ColumnNumber();
+ if (columnNum > 1)
+ {
+ using (var column = Worksheet.Column(columnNum - 1))
+ {
+ return column.InsertColumnsAfter(numberOfColumns);
+ }
+ }
+
Worksheet.Internals.ColumnsCollection.ShiftColumnsRight(columnNum, numberOfColumns);
using (var column = Worksheet.Column(columnNum))
@@ -237,6 +247,19 @@
return Worksheet.Columns(columnNum, columnNum + numberOfColumns - 1);
}
+ private void CopyColumns(IXLColumns newColumns)
+ {
+ foreach (var newColumn in newColumns)
+ {
+ var internalColumn = Worksheet.Internals.ColumnsCollection[newColumn.ColumnNumber()];
+ internalColumn._width = Width;
+ internalColumn.SetStyle(Style);
+ internalColumn._collapsed = Collapsed;
+ internalColumn._isHidden = IsHidden;
+ internalColumn._outlineLevel = OutlineLevel;
+ }
+ }
+
public IXLColumn AdjustToContents()
{
return AdjustToContents(1);
diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/XLColumnCollection.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/XLColumnCollection.cs
index 2b8f285..8f518db 100644
--- a/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/XLColumnCollection.cs
+++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Columns/XLColumnCollection.cs
@@ -11,10 +11,20 @@
foreach (var ro in _dictionary.Keys.Where(k => k >= startingColumn).OrderByDescending(k => k))
{
var columnToMove = _dictionary[ro];
- Int32 newColumn = ro + columnsToShift;
- if (newColumn <= ExcelHelper.MaxColumnNumber)
+ Int32 newColumnNum = ro + columnsToShift;
+ if (newColumnNum <= ExcelHelper.MaxColumnNumber)
{
- _dictionary.Add(newColumn, new XLColumn(columnToMove));
+ var newColumn = new XLColumn(columnToMove)
+ {
+ RangeAddress =
+ {
+ FirstAddress = new XLAddress(1, newColumnNum, false, false),
+ LastAddress =
+ new XLAddress(ExcelHelper.MaxRowNumber, newColumnNum, false, false)
+ }
+ };
+
+ _dictionary.Add(newColumnNum, newColumn);
}
_dictionary.Remove(ro);
}
diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/PageSetup/IXLHFItem.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/PageSetup/IXLHFItem.cs
index d743b8f..2710292 100644
--- a/ClosedXML/ClosedXML/ClosedXML/Excel/PageSetup/IXLHFItem.cs
+++ b/ClosedXML/ClosedXML/ClosedXML/Excel/PageSetup/IXLHFItem.cs
@@ -22,7 +22,7 @@
///
/// Adds the given predefined text to this header/footer item.
///
- /// The predefined text to add to this header/footer item.
+ /// The predefined text to add to this header/footer item.
IXLRichString AddText(XLHFPredefinedText predefinedText);
///
@@ -35,12 +35,14 @@
///
/// Adds the given predefined text to this header/footer item.
///
- /// The predefined text to add to this header/footer item.
+ /// The predefined text to add to this header/footer item.
/// The occurrence for the predefined text.
IXLRichString AddText(XLHFPredefinedText predefinedText, XLHFOccurrence occurrence);
/// Clears the text/formats of this header/footer item.
/// The occurrence to clear.
void Clear(XLHFOccurrence occurrence = XLHFOccurrence.AllPages);
+
+ IXLRichString AddImage(String imagePath, XLHFOccurrence occurrence = XLHFOccurrence.AllPages);
}
}
diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/PageSetup/XLHFItem.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/PageSetup/XLHFItem.cs
index 67075e0..7801d2b 100644
--- a/ClosedXML/ClosedXML/ClosedXML/Excel/PageSetup/XLHFItem.cs
+++ b/ClosedXML/ClosedXML/ClosedXML/Excel/PageSetup/XLHFItem.cs
@@ -6,13 +6,17 @@
{
internal class XLHFItem : IXLHFItem
{
- public XLHFItem()
- { }
- public XLHFItem(XLHFItem defaultHFItem)
+ private readonly XLWorksheet _worksheet;
+ public XLHFItem(XLWorksheet worksheet)
+ {
+ _worksheet = worksheet;
+ }
+ public XLHFItem(XLHFItem defaultHFItem, XLWorksheet worksheet)
+ :this(worksheet)
{
defaultHFItem.texts.ForEach(kp => texts.Add(kp.Key, kp.Value));
}
- private Dictionary> texts = new Dictionary>();
+ private readonly Dictionary> texts = new Dictionary>();
public String GetText(XLHFOccurrence occurrence)
{
var sb = new StringBuilder();
@@ -36,9 +40,9 @@
public IXLRichString AddText(String text, XLHFOccurrence occurrence)
{
- IXLRichString richText = new XLRichString(text, XLWorkbook.DefaultStyle.Font, this);
+ XLRichString richText = new XLRichString(text, XLWorkbook.DefaultStyle.Font, this);
- var hfText = new XLHFText(richText);
+ var hfText = new XLHFText(richText, _worksheet);
if (occurrence == XLHFOccurrence.AllPages)
{
AddTextToOccurrence(hfText, XLHFOccurrence.EvenPages);
@@ -58,12 +62,17 @@
return AddText(Environment.NewLine);
}
+ public IXLRichString AddImage(String imagePath, XLHFOccurrence occurrence = XLHFOccurrence.AllPages)
+ {
+ throw new NotImplementedException();
+ }
+
private void AddTextToOccurrence(XLHFText hfText, XLHFOccurrence occurrence)
{
if (texts.ContainsKey(occurrence))
texts[occurrence].Add(hfText);
else
- texts.Add(occurrence, new List() { hfText });
+ texts.Add(occurrence, new List { hfText });
}
public IXLRichString AddText(XLHFPredefinedText predefinedText, XLHFOccurrence occurrence)
@@ -103,53 +112,5 @@
if (texts.ContainsKey(occurrence))
texts.Remove(occurrence);
}
-
- private String GetHFFont(String text, IXLFont xlFont)
- {
- String retVal = String.Empty;
-
- retVal += xlFont.FontName != null ? "&\"" + xlFont.FontName : "\"-";
- retVal += GetHFFontBoldItalic(xlFont);
- retVal += xlFont.FontSize > 0 ? "&" + xlFont.FontSize.ToString() : "";
- retVal += xlFont.Strikethrough ? "&S" : "";
- retVal += xlFont.VerticalAlignment == XLFontVerticalTextAlignmentValues.Subscript ? "&Y" : "";
- retVal += xlFont.VerticalAlignment == XLFontVerticalTextAlignmentValues.Superscript ? "&X" : "";
- retVal += xlFont.Underline== XLFontUnderlineValues.Single ? "&U" : "";
- retVal += xlFont.Underline == XLFontUnderlineValues.Double ? "&E" : "";
- retVal += "&K" + xlFont.FontColor.Color.ToHex().Substring(2);
-
- retVal += text;
-
- retVal += xlFont.Underline == XLFontUnderlineValues.Double ? "&E" : "";
- retVal += xlFont.Underline == XLFontUnderlineValues.Single ? "&U" : "";
- retVal += xlFont.VerticalAlignment == XLFontVerticalTextAlignmentValues.Superscript ? "&X" : "";
- retVal += xlFont.VerticalAlignment == XLFontVerticalTextAlignmentValues.Subscript ? "&Y" : "";
- retVal += xlFont.Strikethrough ? "&S" : "";
-
- return retVal;
- }
-
- private String GetHFFontBoldItalic(IXLFont xlFont)
- {
- String retVal = String.Empty;
- if (xlFont.Bold && xlFont.Italic)
- {
- retVal += ",Bold Italic\"";
- }
- else if (xlFont.Bold)
- {
- retVal += ",Bold\"";
- }
- else if (xlFont.Italic)
- {
- retVal += ",Italic\"";
- }
- else
- {
- retVal += ",Regular\"";
- }
-
- return retVal;
- }
}
}
diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/PageSetup/XLHFText.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/PageSetup/XLHFText.cs
index 90ff3c7..290fc27 100644
--- a/ClosedXML/ClosedXML/ClosedXML/Excel/PageSetup/XLHFText.cs
+++ b/ClosedXML/ClosedXML/ClosedXML/Excel/PageSetup/XLHFText.cs
@@ -1,64 +1,88 @@
using System;
+using System.Text;
namespace ClosedXML.Excel
{
internal class XLHFText
{
- public XLHFText(IXLRichString richText)
+ private readonly XLWorksheet _worksheet;
+ public XLHFText(XLRichString richText, XLWorksheet worksheet)
{
RichText = richText;
+ _worksheet = worksheet;
}
- public IXLRichString RichText { get; private set; }
+ public XLRichString RichText { get; private set; }
public String HFText
{
get
{
- String retVal = String.Empty;
+ StringBuilder sb = new StringBuilder();
+ var wsFont = _worksheet.Style.Font;
+
+ if (RichText.FontName != null && RichText.FontName != wsFont.FontName)
+ sb.Append("&\"" + RichText.FontName);
+ else
+ sb.Append("&\"-");
- retVal += RichText.FontName != null ? "&\"" + RichText.FontName : "\"-";
- retVal += GetHFFontBoldItalic(RichText);
- retVal += RichText.FontSize > 0 ? "&" + RichText.FontSize.ToString() : "";
- retVal += RichText.Strikethrough ? "&S" : "";
- retVal += RichText.VerticalAlignment == XLFontVerticalTextAlignmentValues.Subscript ? "&Y" : "";
- retVal += RichText.VerticalAlignment == XLFontVerticalTextAlignmentValues.Superscript ? "&X" : "";
- retVal += RichText.Underline == XLFontUnderlineValues.Single ? "&U" : "";
- retVal += RichText.Underline == XLFontUnderlineValues.Double ? "&E" : "";
- retVal += "&K" + RichText.FontColor.Color.ToHex().Substring(2);
+ if (RichText.Bold && RichText.Italic)
+ sb.Append(",Bold Italic\"");
+ else if (RichText.Bold)
+ sb.Append(",Bold\"");
+ else if (RichText.Italic)
+ sb.Append(",Italic\"");
+ else
+ sb.Append(",Regular\"");
+
+ if (RichText.FontSize > 0 && Math.Abs(RichText.FontSize - wsFont.FontSize) > ExcelHelper.Epsilon)
+ sb.Append("&" + RichText.FontSize);
- retVal += RichText.Text;
+ if (RichText.Strikethrough && !wsFont.Strikethrough)
+ sb.Append("&S");
- retVal += RichText.Underline == XLFontUnderlineValues.Double ? "&E" : "";
- retVal += RichText.Underline == XLFontUnderlineValues.Single ? "&U" : "";
- retVal += RichText.VerticalAlignment == XLFontVerticalTextAlignmentValues.Superscript ? "&X" : "";
- retVal += RichText.VerticalAlignment == XLFontVerticalTextAlignmentValues.Subscript ? "&Y" : "";
- retVal += RichText.Strikethrough ? "&S" : "";
+ if (RichText.VerticalAlignment != wsFont.VerticalAlignment)
+ {
+ if (RichText.VerticalAlignment == XLFontVerticalTextAlignmentValues.Subscript)
+ sb.Append("&Y");
+ else if (RichText.VerticalAlignment == XLFontVerticalTextAlignmentValues.Superscript)
+ sb.Append("&X");
+ }
- return retVal;
+ if(RichText.Underline != wsFont.Underline)
+ {
+ if (RichText.Underline == XLFontUnderlineValues.Single)
+ sb.Append("&U");
+ else if (RichText.Underline == XLFontUnderlineValues.Double)
+ sb.Append("&E");
+ }
+
+ if(!RichText.FontColor.Equals(wsFont.FontColor))
+ sb.Append("&K" + RichText.FontColor.Color.ToHex().Substring(2));
+
+ sb.Append(RichText.Text);
+
+ if(RichText.Underline != wsFont.Underline)
+ {
+ if (RichText.Underline == XLFontUnderlineValues.Single)
+ sb.Append("&U");
+ else if (RichText.Underline == XLFontUnderlineValues.Double)
+ sb.Append("&E");
+ }
+
+ if (RichText.VerticalAlignment != wsFont.VerticalAlignment)
+ {
+ if (RichText.VerticalAlignment == XLFontVerticalTextAlignmentValues.Subscript)
+ sb.Append("&Y");
+ else if (RichText.VerticalAlignment == XLFontVerticalTextAlignmentValues.Superscript)
+ sb.Append("&X");
+ }
+
+ if (RichText.Strikethrough && !wsFont.Strikethrough)
+ sb.Append("&S");
+
+ return sb.ToString();
}
}
-
- private String GetHFFontBoldItalic(IXLRichString xlFont)
- {
- String retVal = String.Empty;
- if (xlFont.Bold && xlFont.Italic)
- {
- retVal += ",Bold Italic\"";
- }
- else if (xlFont.Bold)
- {
- retVal += ",Bold\"";
- }
- else if (xlFont.Italic)
- {
- retVal += ",Italic\"";
- }
- else
- {
- retVal += ",Regular\"";
- }
-
- return retVal;
- }
+
}
}
diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/PageSetup/XLHeaderFooter.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/PageSetup/XLHeaderFooter.cs
index 4e99e3b..ec3e639 100644
--- a/ClosedXML/ClosedXML/ClosedXML/Excel/PageSetup/XLHeaderFooter.cs
+++ b/ClosedXML/ClosedXML/ClosedXML/Excel/PageSetup/XLHeaderFooter.cs
@@ -7,20 +7,20 @@
internal class XLHeaderFooter: IXLHeaderFooter
{
- public XLHeaderFooter()
+ public XLHeaderFooter(XLWorksheet worksheet)
{
- Left = new XLHFItem();
- Right = new XLHFItem();
- Center = new XLHFItem();
+ Left = new XLHFItem(worksheet);
+ Right = new XLHFItem(worksheet);
+ Center = new XLHFItem(worksheet);
SetAsInitial();
}
- public XLHeaderFooter(XLHeaderFooter defaultHF)
+ public XLHeaderFooter(XLHeaderFooter defaultHF, XLWorksheet worksheet)
{
defaultHF.innerTexts.ForEach(kp => innerTexts.Add(kp.Key, kp.Value));
- Left = new XLHFItem(defaultHF.Left as XLHFItem);
- Center = new XLHFItem(defaultHF.Center as XLHFItem);
- Right = new XLHFItem(defaultHF.Right as XLHFItem);
+ Left = new XLHFItem(defaultHF.Left as XLHFItem, worksheet);
+ Center = new XLHFItem(defaultHF.Center as XLHFItem, worksheet);
+ Right = new XLHFItem(defaultHF.Right as XLHFItem, worksheet);
SetAsInitial();
}
diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/PageSetup/XLPageSetup.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/PageSetup/XLPageSetup.cs
index a125d51..1e98906 100644
--- a/ClosedXML/ClosedXML/ClosedXML/Excel/PageSetup/XLPageSetup.cs
+++ b/ClosedXML/ClosedXML/ClosedXML/Excel/PageSetup/XLPageSetup.cs
@@ -46,15 +46,15 @@
ColumnBreaks = defaultPageOptions.ColumnBreaks.ToList();
RowBreaks = defaultPageOptions.RowBreaks.ToList();
- Header = new XLHeaderFooter(defaultPageOptions.Header as XLHeaderFooter);
- Footer = new XLHeaderFooter(defaultPageOptions.Footer as XLHeaderFooter);
+ Header = new XLHeaderFooter(defaultPageOptions.Header as XLHeaderFooter, worksheet);
+ Footer = new XLHeaderFooter(defaultPageOptions.Footer as XLHeaderFooter, worksheet);
PrintErrorValue = defaultPageOptions.PrintErrorValue;
}
else
{
PrintAreas = new XLPrintAreas(worksheet);
- Header = new XLHeaderFooter();
- Footer = new XLHeaderFooter();
+ Header = new XLHeaderFooter(worksheet);
+ Footer = new XLHeaderFooter(worksheet);
ColumnBreaks = new List();
RowBreaks = new List();
}
diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeBase.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeBase.cs
index 57bf511..1132fc3 100644
--- a/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeBase.cs
+++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeBase.cs
@@ -522,7 +522,23 @@
RangeAddress.LastAddress.ColumnNumber,
includeFormats, predicate);
- return sp.Row == 0 ? null : Worksheet.Cell(sp.Row, sp.Column);
+ if(sp.Row > 0)
+ return Worksheet.Cell(sp.Row, sp.Column);
+
+ //if (includeFormats)
+ //{
+ // using (var rowsUsed = Worksheet.Rows(1, 1))
+ // {
+ // foreach (var row in rowsUsed)
+ // {
+ // if(!row.IsEmpty(true))
+ // return Worksheet.Cell()
+ // }
+ // }
+ //}
+
+
+ return null;
}
public XLCell LastCellUsed()
@@ -1101,18 +1117,23 @@
if (formatFromAbove && rangeToReturn.RangeAddress.FirstAddress.RowNumber > 1)
{
- var model = rangeToReturn.FirstRow().RowAbove();
- var modelFirstColumn = model.FirstCellUsed(true);
- var modelLastColumn = model.LastCellUsed(true);
- if (modelLastColumn != null)
+ using (var fr = rangeToReturn.FirstRow())
{
- Int32 firstCoReturned = modelFirstColumn.Address.ColumnNumber
- - model.RangeAddress.FirstAddress.ColumnNumber + 1;
- Int32 lastCoReturned = modelLastColumn.Address.ColumnNumber
- - model.RangeAddress.FirstAddress.ColumnNumber + 1;
- for (Int32 co = firstCoReturned; co <= lastCoReturned; co++)
+ using (var model = fr.RowAbove())
{
- rangeToReturn.Column(co).Style = model.Cell(co).Style;
+ var modelFirstColumn = model.FirstCellUsed(true);
+ var modelLastColumn = model.LastCellUsed(true);
+ if (modelLastColumn != null)
+ {
+ Int32 firstCoReturned = modelFirstColumn.Address.ColumnNumber
+ - model.RangeAddress.FirstAddress.ColumnNumber + 1;
+ Int32 lastCoReturned = modelLastColumn.Address.ColumnNumber
+ - model.RangeAddress.FirstAddress.ColumnNumber + 1;
+ for (Int32 co = firstCoReturned; co <= lastCoReturned; co++)
+ {
+ rangeToReturn.Column(co).Style = model.Cell(co).Style;
+ }
+ }
}
}
}
diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/XLRow.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/XLRow.cs
index d99c879..5ff43df 100644
--- a/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/XLRow.cs
+++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/XLRow.cs
@@ -143,12 +143,37 @@
asRange.InsertRowsBelow(true, numberOfRows).Dispose();
}
}
- return Worksheet.Rows(rowNum + 1, rowNum + numberOfRows);
+ var newRows = Worksheet.Rows(rowNum + 1, rowNum + numberOfRows);
+
+ CopyRows(newRows);
+
+ return newRows;
+ }
+
+ private void CopyRows(IXLRows newRows)
+ {
+ foreach (var newRow in newRows)
+ {
+ var internalRow = Worksheet.Internals.RowsCollection[newRow.RowNumber()];
+ internalRow._height = Height;
+ internalRow.SetStyle(Style);
+ internalRow._collapsed = Collapsed;
+ internalRow._isHidden = IsHidden;
+ internalRow._outlineLevel = OutlineLevel;
+ }
}
public new IXLRows InsertRowsAbove(Int32 numberOfRows)
{
int rowNum = RowNumber();
+ if (rowNum > 1)
+ {
+ using (var row = Worksheet.Row(rowNum - 1))
+ {
+ return row.InsertRowsBelow(numberOfRows);
+ }
+ }
+
Worksheet.Internals.RowsCollection.ShiftRowsDown(rowNum, numberOfRows);
using (var row = Worksheet.Row(rowNum))
{
@@ -328,7 +353,10 @@
public override IXLStyle Style
{
- get { return IsReference ? Worksheet.Internals.RowsCollection[RowNumber()].Style : GetStyle(); }
+ get
+ {
+ return IsReference ? Worksheet.Internals.RowsCollection[RowNumber()].Style : GetStyle();
+ }
set
{
if (IsReference)
@@ -477,7 +505,6 @@
var newRow = (XLRow)row;
newRow._height = _height;
- //newRow._style = new XLStyle(newRow, Style);
newRow.Style = GetStyle();
return newRow;
diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/XLRowCollection.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/XLRowCollection.cs
index f50657d..b6ce3eb 100644
--- a/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/XLRowCollection.cs
+++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Rows/XLRowCollection.cs
@@ -123,9 +123,20 @@
foreach (int ro in _dictionary.Keys.Where(k => k >= startingRow).OrderByDescending(k => k))
{
var rowToMove = _dictionary[ro];
- Int32 newRow = ro + rowsToShift;
- if (newRow <= ExcelHelper.MaxRowNumber)
- _dictionary.Add(newRow, new XLRow(rowToMove));
+ Int32 newRowNum = ro + rowsToShift;
+ if (newRowNum <= ExcelHelper.MaxRowNumber)
+ {
+ var newRow = new XLRow(rowToMove)
+ {
+ RangeAddress =
+ {
+ FirstAddress = new XLAddress(newRowNum, 1, false, false),
+ LastAddress =
+ new XLAddress(newRowNum, ExcelHelper.MaxColumnNumber, false, false)
+ }
+ };
+ _dictionary.Add(newRowNum, newRow);
+ }
_dictionary.Remove(ro);
}
}
diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Style/Colors/XLColor_Internal.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Style/Colors/XLColor_Internal.cs
index 3e77109..aaa04fb 100644
--- a/ClosedXML/ClosedXML/ClosedXML/Excel/Style/Colors/XLColor_Internal.cs
+++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Style/Colors/XLColor_Internal.cs
@@ -9,56 +9,56 @@
internal XLColor(IXLColor defaultColor)
{
XLColor dColor = (XLColor)defaultColor;
- if (dColor.colorType == XLColorType.Color)
+ if (dColor._colorType == XLColorType.Color)
color = dColor.color;
- else if (dColor.colorType == XLColorType.Theme)
+ else if (dColor._colorType == XLColorType.Theme)
{
- themeColor = dColor.themeColor;
- themeTint = dColor.themeTint;
+ _themeColor = dColor._themeColor;
+ _themeTint = dColor._themeTint;
}
else
{
- indexed = dColor.indexed;
+ _indexed = dColor._indexed;
}
HasValue = true;
- hashCode = dColor.hashCode;
- colorType = dColor.colorType;
+ _hashCode = dColor._hashCode;
+ _colorType = dColor._colorType;
}
internal XLColor()
{
HasValue = false;
- hashCode = 0;
+ _hashCode = 0;
}
internal XLColor(Color color)
{
this.color = color;
- hashCode = 13 ^ color.ToArgb();
+ _hashCode = 13 ^ color.ToArgb();
HasValue = true;
- colorType = XLColorType.Color;
+ _colorType = XLColorType.Color;
}
internal XLColor(Int32 index)
{
- this.indexed = index;
- hashCode = 11 ^ indexed;
+ this._indexed = index;
+ _hashCode = 11 ^ _indexed;
HasValue = true;
- colorType = XLColorType.Indexed;
+ _colorType = XLColorType.Indexed;
}
internal XLColor(XLThemeColor themeColor)
{
- this.themeColor = themeColor;
- this.themeTint = 1;
- hashCode = 7 ^ this.themeColor.GetHashCode() ^ themeTint.GetHashCode();
+ this._themeColor = themeColor;
+ this._themeTint = 1;
+ _hashCode = 7 ^ this._themeColor.GetHashCode() ^ _themeTint.GetHashCode();
HasValue = true;
- colorType = XLColorType.Theme;
+ _colorType = XLColorType.Theme;
}
internal XLColor(XLThemeColor themeColor, Double themeTint)
{
- this.themeColor = themeColor;
- this.themeTint = themeTint;
- hashCode = 7 ^ this.themeColor.GetHashCode() ^ this.themeTint.GetHashCode();
+ this._themeColor = themeColor;
+ this._themeTint = themeTint;
+ _hashCode = 7 ^ this._themeColor.GetHashCode() ^ this._themeTint.GetHashCode();
HasValue = true;
- colorType = XLColorType.Theme;
+ _colorType = XLColorType.Theme;
}
}
}
diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Style/Colors/XLColor_Public.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Style/Colors/XLColor_Public.cs
index 8a62eea..b578bba 100644
--- a/ClosedXML/ClosedXML/ClosedXML/Excel/Style/Colors/XLColor_Public.cs
+++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Style/Colors/XLColor_Public.cs
@@ -7,15 +7,11 @@
{
public Boolean HasValue { get; private set; }
- XLColorType colorType;
+ private readonly XLColorType _colorType;
public XLColorType ColorType {
get
{
- return colorType;
- }
- private set
- {
- colorType = value;
+ return _colorType;
}
}
private Color color;
@@ -23,139 +19,90 @@
{
get
{
- if (colorType == XLColorType.Theme)
- {
- //if (workbook == null)
- throw new Exception("Cannot convert theme color to Color.");
- //else
- // return workbook.GetXLColor(themeColor).Color;
- }
- else if (colorType == XLColorType.Indexed)
- {
- return IndexedColors[indexed].Color;
- }
- else
- {
- return color;
- }
- }
- private set
- {
- color = value;
- colorType = XLColorType.Color;
+ if (_colorType == XLColorType.Theme)
+ throw new Exception("Cannot convert theme color to Color.");
+
+ if (_colorType == XLColorType.Indexed)
+ return IndexedColors[_indexed].Color;
+
+ return color;
}
}
- private Int32 indexed;
+ private readonly Int32 _indexed;
public Int32 Indexed
{
get
{
if (ColorType == XLColorType.Theme)
- {
throw new Exception("Cannot convert theme color to indexed color.");
- }
- else if (ColorType == XLColorType.Indexed)
- {
- return indexed;
- }
- else // ColorType == Color
- {
- throw new Exception("Cannot convert Color to indexed color.");
- }
- }
- private set
- {
- indexed = value;
- colorType = XLColorType.Indexed;
+
+ if (ColorType == XLColorType.Indexed)
+ return _indexed;
+
+ throw new Exception("Cannot convert Color to indexed color.");
}
}
- private XLThemeColor themeColor;
+ private readonly XLThemeColor _themeColor;
public XLThemeColor ThemeColor
{
get
{
if (ColorType == XLColorType.Theme)
- {
- return themeColor;
- }
- else if (ColorType == XLColorType.Indexed)
- {
+ return _themeColor;
+
+ if (ColorType == XLColorType.Indexed)
throw new Exception("Cannot convert indexed color to theme color.");
- }
- else // ColorType == Color
- {
- throw new Exception("Cannot convert Color to theme color.");
- }
+
+ throw new Exception("Cannot convert Color to theme color.");
}
- private set
- {
- themeColor = value;
- if (themeTint == 0)
- themeTint = 1;
- colorType = XLColorType.Theme;
- }
+
}
- private Double themeTint;
+ private readonly Double _themeTint;
public Double ThemeTint
{
get
{
if (ColorType == XLColorType.Theme)
- {
- return themeTint;
- }
- else if (ColorType == XLColorType.Indexed)
- {
+ return _themeTint;
+
+ if (ColorType == XLColorType.Indexed)
throw new Exception("Cannot extract theme tint from an indexed color.");
- }
- else // ColorType == Color
- {
- return (Double)color.A / 255.0;
- }
- }
- private set
- {
- themeTint = value;
- colorType = XLColorType.Theme;
+
+ return color.A / 255.0;
}
}
public bool Equals(IXLColor other)
{
var otherC = other as XLColor;
- if (colorType == otherC.colorType)
+ if (_colorType == otherC._colorType)
{
- if (colorType == XLColorType.Color)
+ if (_colorType == XLColorType.Color)
{
return color.ToArgb() == otherC.color.ToArgb();
}
- if (colorType == XLColorType.Theme)
+ if (_colorType == XLColorType.Theme)
{
- return themeColor == otherC.themeColor
- && themeTint == otherC.themeTint;
+ return _themeColor == otherC._themeColor
+ && Math.Abs(_themeTint - otherC._themeTint) < ExcelHelper.Epsilon;
}
- else
- {
- return indexed == otherC.indexed;
- }
+ return _indexed == otherC._indexed;
}
- else
- {
- return false;
- }
+
+ return false;
}
public override bool Equals(object obj)
{
- return this.Equals((XLColor)obj);
+ return Equals((XLColor)obj);
}
- int hashCode;
+ private readonly int _hashCode;
public override int GetHashCode()
{
- return hashCode;
+ return _hashCode;
}
}
}
diff --git a/ClosedXML/ClosedXML/ClosedXML/Properties/AssemblyInfo.cs b/ClosedXML/ClosedXML/ClosedXML/Properties/AssemblyInfo.cs
index e2a3f20..dd8a225 100644
--- a/ClosedXML/ClosedXML/ClosedXML/Properties/AssemblyInfo.cs
+++ b/ClosedXML/ClosedXML/ClosedXML/Properties/AssemblyInfo.cs
@@ -31,6 +31,6 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("0.60.0.0")]
-[assembly: AssemblyFileVersion("0.60.0.0")]
+[assembly: AssemblyVersion("0.62.1.0")]
+[assembly: AssemblyFileVersion("0.62.1.0")]
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("ClosedXML_Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100a1fb8ba59167fe734d64128ca73d32c45cb8a117246d09c95c8769db88fe332b0a3396bedd0ea48ee42b0e5796fec0798ca5cb628a9a6de80d35d6c67b936ca1670347b3d4f2b769c8ce2ddcf959dbac6bcd88e6c08751ea1fffa0522de3507193e7035305a8aa008d6c88cca1341b3120fa9c347ab3f97e2d772e2709277da5")]
\ No newline at end of file
diff --git a/ClosedXML/ClosedXML/ClosedXML_Examples/Creating/CreateFiles.cs b/ClosedXML/ClosedXML/ClosedXML_Examples/Creating/CreateFiles.cs
index c39608a..a213c58 100644
--- a/ClosedXML/ClosedXML/ClosedXML_Examples/Creating/CreateFiles.cs
+++ b/ClosedXML/ClosedXML/ClosedXML_Examples/Creating/CreateFiles.cs
@@ -11,77 +11,77 @@
{
public static void CreateAllFiles()
{
- new HelloWorld().Create(@"C:\Excel Files\Created\HelloWorld.xlsx");
- new BasicTable().Create(@"C:\Excel Files\Created\BasicTable.xlsx");
+ //new HelloWorld().Create(@"C:\Excel Files\Created\HelloWorld.xlsx");
+ //new BasicTable().Create(@"C:\Excel Files\Created\BasicTable.xlsx");
- new StyleExamples().Create();
- new ChangingBasicTable().Create(@"C:\Excel Files\Created\BasicTable_Modified.xlsx");
- new ShiftingRanges().Create(@"C:\Excel Files\Created\ShiftingRanges.xlsx");
- new ColumnSettings().Create(@"C:\Excel Files\Created\ColumnSettings.xlsx");
- new RowSettings().Create(@"C:\Excel Files\Created\RowSettings.xlsx");
- new MergeCells().Create(@"C:\Excel Files\Created\MergedCells.xlsx");
+ //new StyleExamples().Create();
+ //new ChangingBasicTable().Create(@"C:\Excel Files\Created\BasicTable_Modified.xlsx");
+ //new ShiftingRanges().Create(@"C:\Excel Files\Created\ShiftingRanges.xlsx");
+ //new ColumnSettings().Create(@"C:\Excel Files\Created\ColumnSettings.xlsx");
+ //new RowSettings().Create(@"C:\Excel Files\Created\RowSettings.xlsx");
+ //new MergeCells().Create(@"C:\Excel Files\Created\MergedCells.xlsx");
new InsertRows().Create(@"C:\Excel Files\Created\InsertRows.xlsx");
- new InsertColumns().Create(@"C:\Excel Files\Created\InsertColumns.xlsx");
- new ColumnCollection().Create(@"C:\Excel Files\Created\ColumnCollection.xlsx");
- new DataTypes().Create(@"C:\Excel Files\Created\DataTypes.xlsx");
- new MultipleSheets().Create(@"C:\Excel Files\Created\MultipleSheets.xlsx");
- new RowCollection().Create(@"C:\Excel Files\Created\RowCollection.xlsx");
- new DefiningRanges().Create(@"C:\Excel Files\Created\DefiningRanges.xlsx");
- new ClearingRanges().Create(@"C:\Excel Files\Created\ClearingRanges.xlsx");
- new DeletingRanges().Create(@"C:\Excel Files\Created\DeletingRanges.xlsx");
- new Margins().Create(@"C:\Excel Files\Created\Margins.xlsx");
- new Page().Create(@"C:\Excel Files\Created\Page.xlsx");
+ //new InsertColumns().Create(@"C:\Excel Files\Created\InsertColumns.xlsx");
+ //new ColumnCollection().Create(@"C:\Excel Files\Created\ColumnCollection.xlsx");
+ //new DataTypes().Create(@"C:\Excel Files\Created\DataTypes.xlsx");
+ //new MultipleSheets().Create(@"C:\Excel Files\Created\MultipleSheets.xlsx");
+ //new RowCollection().Create(@"C:\Excel Files\Created\RowCollection.xlsx");
+ //new DefiningRanges().Create(@"C:\Excel Files\Created\DefiningRanges.xlsx");
+ //new ClearingRanges().Create(@"C:\Excel Files\Created\ClearingRanges.xlsx");
+ //new DeletingRanges().Create(@"C:\Excel Files\Created\DeletingRanges.xlsx");
+ //new Margins().Create(@"C:\Excel Files\Created\Margins.xlsx");
+ //new Page().Create(@"C:\Excel Files\Created\Page.xlsx");
new HeaderFooters().Create(@"C:\Excel Files\Created\HeaderFooters.xlsx");
- new Sheets().Create(@"C:\Excel Files\Created\Sheets.xlsx");
- new SheetTab().Create(@"C:\Excel Files\Created\SheetTab.xlsx");
- new MultipleRanges().Create(@"C:\Excel Files\Created\MultipleRanges.xlsx");
- new StyleWorksheet().Create(@"C:\Excel Files\Created\StyleWorksheet.xlsx");
- new StyleRowsColumns().Create(@"C:\Excel Files\Created\StyleRowsColumns.xlsx");
- new InsertingDeletingRows().Create(@"C:\Excel Files\Created\InsertingDeletingRows.xlsx");
- new InsertingDeletingColumns().Create(@"C:\Excel Files\Created\InsertingDeletingColumns.xlsx");
- new DeletingColumns().Create(@"C:\Excel Files\Created\DeletingColumns.xlsx");
- new CellValues().Create(@"C:\Excel Files\Created\CellValues.xlsx");
- new LambdaExpressions().Create(@"C:\Excel Files\Created\LambdaExpressions.xlsx");
- new DefaultStyles().Create(@"C:\Excel Files\Created\DefaultStyles.xlsx");
- new TransposeRanges().Create(@"C:\Excel Files\Created\TransposeRanges.xlsx");
- new TransposeRangesPlus().Create(@"C:\Excel Files\Created\TransposeRangesPlus.xlsx");
- new MergeMoves().Create(@"C:\Excel Files\Created\MergedMoves.xlsx");
- new WorkbookProperties().Create(@"C:\Excel Files\Created\WorkbookProperties.xlsx");
- new AdjustToContents().Create(@"C:\Excel Files\Created\AdjustToContents.xlsx");
- new HideUnhide().Create(@"C:\Excel Files\Created\HideUnhide.xlsx");
- new Outline().Create(@"C:\Excel Files\Created\Outline.xlsx");
- new Formulas().Create(@"C:\Excel Files\Created\Formulas.xlsx");
- new Collections().Create(@"C:\Excel Files\Created\Collections.xlsx");
- new NamedRanges().Create(@"C:\Excel Files\Created\NamedRanges.xlsx");
- new CopyingRanges().Create(@"C:\Excel Files\Created\CopyingRanges.xlsx");
- new BlankCells().Create(@"C:\Excel Files\Created\BlankCells.xlsx");
- new TwoPages().Create(@"C:\Excel Files\Created\TwoPages.xlsx");
- new UsingColors().Create(@"C:\Excel Files\Created\UsingColors.xlsx");
+ //new Sheets().Create(@"C:\Excel Files\Created\Sheets.xlsx");
+ //new SheetTab().Create(@"C:\Excel Files\Created\SheetTab.xlsx");
+ //new MultipleRanges().Create(@"C:\Excel Files\Created\MultipleRanges.xlsx");
+ //new StyleWorksheet().Create(@"C:\Excel Files\Created\StyleWorksheet.xlsx");
+ //new StyleRowsColumns().Create(@"C:\Excel Files\Created\StyleRowsColumns.xlsx");
+ //new InsertingDeletingRows().Create(@"C:\Excel Files\Created\InsertingDeletingRows.xlsx");
+ //new InsertingDeletingColumns().Create(@"C:\Excel Files\Created\InsertingDeletingColumns.xlsx");
+ //new DeletingColumns().Create(@"C:\Excel Files\Created\DeletingColumns.xlsx");
+ //new CellValues().Create(@"C:\Excel Files\Created\CellValues.xlsx");
+ //new LambdaExpressions().Create(@"C:\Excel Files\Created\LambdaExpressions.xlsx");
+ //new DefaultStyles().Create(@"C:\Excel Files\Created\DefaultStyles.xlsx");
+ //new TransposeRanges().Create(@"C:\Excel Files\Created\TransposeRanges.xlsx");
+ //new TransposeRangesPlus().Create(@"C:\Excel Files\Created\TransposeRangesPlus.xlsx");
+ //new MergeMoves().Create(@"C:\Excel Files\Created\MergedMoves.xlsx");
+ //new WorkbookProperties().Create(@"C:\Excel Files\Created\WorkbookProperties.xlsx");
+ //new AdjustToContents().Create(@"C:\Excel Files\Created\AdjustToContents.xlsx");
+ //new HideUnhide().Create(@"C:\Excel Files\Created\HideUnhide.xlsx");
+ //new Outline().Create(@"C:\Excel Files\Created\Outline.xlsx");
+ //new Formulas().Create(@"C:\Excel Files\Created\Formulas.xlsx");
+ //new Collections().Create(@"C:\Excel Files\Created\Collections.xlsx");
+ //new NamedRanges().Create(@"C:\Excel Files\Created\NamedRanges.xlsx");
+ //new CopyingRanges().Create(@"C:\Excel Files\Created\CopyingRanges.xlsx");
+ //new BlankCells().Create(@"C:\Excel Files\Created\BlankCells.xlsx");
+ //new TwoPages().Create(@"C:\Excel Files\Created\TwoPages.xlsx");
+ //new UsingColors().Create(@"C:\Excel Files\Created\UsingColors.xlsx");
- new ColumnCells().Create(@"C:\Excel Files\Created\ColumnCells.xlsx");
- new RowCells().Create(@"C:\Excel Files\Created\RowCells.xlsx");
- new FreezePanes().Create(@"C:\Excel Files\Created\FreezePanes.xlsx");
- new UsingTables().Create(@"C:\Excel Files\Created\UsingTables.xlsx");
- new ShowCase().Create(@"C:\Excel Files\Created\ShowCase.xlsx");
- new CopyingWorksheets().Create(@"C:\Excel Files\Created\CopyingWorksheets.xlsx");
- new InsertingTables().Create(@"C:\Excel Files\Created\InsertingTables.xlsx");
- new InsertingData().Create(@"C:\Excel Files\Created\InsertingData.xlsx");
- new Hyperlinks().Create(@"C:\Excel Files\Created\Hyperlinks.xlsx");
- new DataValidation().Create(@"C:\Excel Files\Created\DataValidation.xlsx");
- new HideSheets().Create(@"C:\Excel Files\Created\HideSheets.xlsx");
- new SheetProtection().Create(@"C:\Excel Files\Created\SheetProtection.xlsx");
- new AutoFilter().Create(@"C:\Excel Files\Created\AutoFilter.xlsx");
- new Sorting().Create(@"C:\Excel Files\Created\Sorting.xlsx");
- new SortExample().Create(@"C:\Excel Files\Created\SortExample.xlsx");
- new AddingDataSet().Create(@"C:\Excel Files\Created\AddingDataSet.xlsx");
- new AddingDataTableAsWorksheet().Create(@"C:\Excel Files\Created\AddingDataTableAsWorksheet.xlsx");
- new TabColors().Create(@"C:\Excel Files\Created\TabColors.xlsx");
- new ShiftingFormulas().Create(@"C:\Excel Files\Created\ShiftingFormulas.xlsx");
- new CopyingRowsAndColumns().Create(@"C:\Excel Files\Created\CopyingRowsAndColumns.xlsx");
- new UsingRichText().Create(@"C:\Excel Files\Created\UsingRichText.xlsx");
- new UsingPhonetics().Create(@"C:\Excel Files\Created\UsingPhonetics.xlsx");
- new WalkingRanges().Create(@"C:\Excel Files\Created\CellMoves.xlsx");
- new AddingComments().Create(@"C:\Excel Files\Created\AddingComments.xlsx");
+ //new ColumnCells().Create(@"C:\Excel Files\Created\ColumnCells.xlsx");
+ //new RowCells().Create(@"C:\Excel Files\Created\RowCells.xlsx");
+ //new FreezePanes().Create(@"C:\Excel Files\Created\FreezePanes.xlsx");
+ //new UsingTables().Create(@"C:\Excel Files\Created\UsingTables.xlsx");
+ //new ShowCase().Create(@"C:\Excel Files\Created\ShowCase.xlsx");
+ //new CopyingWorksheets().Create(@"C:\Excel Files\Created\CopyingWorksheets.xlsx");
+ //new InsertingTables().Create(@"C:\Excel Files\Created\InsertingTables.xlsx");
+ //new InsertingData().Create(@"C:\Excel Files\Created\InsertingData.xlsx");
+ //new Hyperlinks().Create(@"C:\Excel Files\Created\Hyperlinks.xlsx");
+ //new DataValidation().Create(@"C:\Excel Files\Created\DataValidation.xlsx");
+ //new HideSheets().Create(@"C:\Excel Files\Created\HideSheets.xlsx");
+ //new SheetProtection().Create(@"C:\Excel Files\Created\SheetProtection.xlsx");
+ //new AutoFilter().Create(@"C:\Excel Files\Created\AutoFilter.xlsx");
+ //new Sorting().Create(@"C:\Excel Files\Created\Sorting.xlsx");
+ //new SortExample().Create(@"C:\Excel Files\Created\SortExample.xlsx");
+ //new AddingDataSet().Create(@"C:\Excel Files\Created\AddingDataSet.xlsx");
+ //new AddingDataTableAsWorksheet().Create(@"C:\Excel Files\Created\AddingDataTableAsWorksheet.xlsx");
+ //new TabColors().Create(@"C:\Excel Files\Created\TabColors.xlsx");
+ //new ShiftingFormulas().Create(@"C:\Excel Files\Created\ShiftingFormulas.xlsx");
+ //new CopyingRowsAndColumns().Create(@"C:\Excel Files\Created\CopyingRowsAndColumns.xlsx");
+ //new UsingRichText().Create(@"C:\Excel Files\Created\UsingRichText.xlsx");
+ //new UsingPhonetics().Create(@"C:\Excel Files\Created\UsingPhonetics.xlsx");
+ //new WalkingRanges().Create(@"C:\Excel Files\Created\CellMoves.xlsx");
+ //new AddingComments().Create(@"C:\Excel Files\Created\AddingComments.xlsx");
}
}
}
diff --git a/ClosedXML/ClosedXML/ClosedXML_Examples/Program.cs b/ClosedXML/ClosedXML/ClosedXML_Examples/Program.cs
index 16edb3c..5c4b960 100644
--- a/ClosedXML/ClosedXML/ClosedXML_Examples/Program.cs
+++ b/ClosedXML/ClosedXML/ClosedXML_Examples/Program.cs
@@ -6,7 +6,7 @@
static void Main(string[] args)
{
CreateFiles.CreateAllFiles();
- LoadFiles.LoadAllFiles();
+ //LoadFiles.LoadAllFiles();
}
}
}
\ No newline at end of file
diff --git a/ClosedXML/ClosedXML/ClosedXML_Examples/Rows/InsertRows.cs b/ClosedXML/ClosedXML/ClosedXML_Examples/Rows/InsertRows.cs
index 8b46171..8885e51 100644
--- a/ClosedXML/ClosedXML/ClosedXML_Examples/Rows/InsertRows.cs
+++ b/ClosedXML/ClosedXML/ClosedXML_Examples/Rows/InsertRows.cs
@@ -66,9 +66,9 @@
ws.Columns(3, 4).Style.Fill.BackgroundColor = XLColor.Orange;
ws.Range("A2:A4").InsertRowsBelow(2);
- ws.Range("B2:B4").InsertRowsAbove(2);
- ws.Range("C2:C4").InsertRowsBelow(2);
- ws.Range("D2:D4").InsertRowsAbove(2);
+ //ws.Range("B2:B4").InsertRowsAbove(2);
+ //ws.Range("C2:C4").InsertRowsBelow(2);
+ //ws.Range("D2:D4").InsertRowsAbove(2);
workbook.SaveAs(filePath);
}
diff --git a/ClosedXML/ClosedXML/ClosedXML_Net3.5/Properties/AssemblyInfo.cs b/ClosedXML/ClosedXML/ClosedXML_Net3.5/Properties/AssemblyInfo.cs
index ff5d5bb..7834663 100644
--- a/ClosedXML/ClosedXML/ClosedXML_Net3.5/Properties/AssemblyInfo.cs
+++ b/ClosedXML/ClosedXML/ClosedXML_Net3.5/Properties/AssemblyInfo.cs
@@ -31,5 +31,5 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("0.60.0.0")]
-[assembly: AssemblyFileVersion("0.60.0.0")]
+[assembly: AssemblyVersion("0.62.1.0")]
+[assembly: AssemblyFileVersion("0.62.1.0")]
diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/ClosedXML_Tests.csproj b/ClosedXML/ClosedXML/ClosedXML_Tests/ClosedXML_Tests.csproj
index a8d5c26..8fe2609 100644
--- a/ClosedXML/ClosedXML/ClosedXML_Tests/ClosedXML_Tests.csproj
+++ b/ClosedXML/ClosedXML/ClosedXML_Tests/ClosedXML_Tests.csproj
@@ -81,6 +81,7 @@
+
diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Excel/Ranges/InsertingRangesTests.cs b/ClosedXML/ClosedXML/ClosedXML_Tests/Excel/Ranges/InsertingRangesTests.cs
new file mode 100644
index 0000000..b9a8263
--- /dev/null
+++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Excel/Ranges/InsertingRangesTests.cs
@@ -0,0 +1,70 @@
+using ClosedXML.Excel;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using System.Linq;
+using System;
+using System.IO;
+
+namespace ClosedXML_Tests
+{
+ [TestClass()]
+ public class InsertingRangesTests
+ {
+ [TestMethod]
+ public void InsertingRowsPreservesFormatting()
+ {
+ var wb = new XLWorkbook();
+ var ws = wb.Worksheets.Add("Sheet");
+ var row1 = ws.Row(1);
+ row1.Style.Fill.SetBackgroundColor(XLColor.FrenchLilac);
+ row1.Cell(2).Style.Fill.SetBackgroundColor(XLColor.Fulvous);
+ var row2 = ws.Row(2);
+ row2.Style.Fill.SetBackgroundColor(XLColor.Xanadu);
+ row2.Cell(2).Style.Fill.SetBackgroundColor(XLColor.MacaroniAndCheese);
+
+ row1.InsertRowsBelow(1);
+ row1.InsertRowsAbove(1);
+ row2.InsertRowsAbove(1);
+
+ Assert.AreEqual(ws.Style.Fill.BackgroundColor, ws.Row(1).Style.Fill.BackgroundColor);
+ Assert.AreEqual(XLColor.FrenchLilac, ws.Row(2).Style.Fill.BackgroundColor);
+ Assert.AreEqual(XLColor.FrenchLilac, ws.Row(3).Style.Fill.BackgroundColor);
+ Assert.AreEqual(XLColor.FrenchLilac, ws.Row(4).Style.Fill.BackgroundColor);
+ Assert.AreEqual(XLColor.Xanadu, ws.Row(5).Style.Fill.BackgroundColor);
+
+ Assert.AreEqual(ws.Style.Fill.BackgroundColor, ws.Cell(1, 2).Style.Fill.BackgroundColor);
+ Assert.AreEqual(XLColor.Fulvous, ws.Cell(2, 2).Style.Fill.BackgroundColor);
+ Assert.AreEqual(XLColor.Fulvous, ws.Cell(3, 2).Style.Fill.BackgroundColor);
+ Assert.AreEqual(XLColor.Fulvous, ws.Cell(4, 2).Style.Fill.BackgroundColor);
+ Assert.AreEqual(XLColor.MacaroniAndCheese, ws.Cell(5, 2).Style.Fill.BackgroundColor);
+ }
+
+ [TestMethod]
+ public void InsertingColumnsPreservesFormatting()
+ {
+ var wb = new XLWorkbook();
+ var ws = wb.Worksheets.Add("Sheet");
+ var column1 = ws.Column(1);
+ column1.Style.Fill.SetBackgroundColor(XLColor.FrenchLilac);
+ column1.Cell(2).Style.Fill.SetBackgroundColor(XLColor.Fulvous);
+ var column2 = ws.Column(2);
+ column2.Style.Fill.SetBackgroundColor(XLColor.Xanadu);
+ column2.Cell(2).Style.Fill.SetBackgroundColor(XLColor.MacaroniAndCheese);
+
+ column1.InsertColumnsAfter(1);
+ column1.InsertColumnsBefore(1);
+ column2.InsertColumnsBefore(1);
+
+ Assert.AreEqual(ws.Style.Fill.BackgroundColor, ws.Column(1).Style.Fill.BackgroundColor);
+ Assert.AreEqual(XLColor.FrenchLilac, ws.Column(2).Style.Fill.BackgroundColor);
+ Assert.AreEqual(XLColor.FrenchLilac, ws.Column(3).Style.Fill.BackgroundColor);
+ Assert.AreEqual(XLColor.FrenchLilac, ws.Column(4).Style.Fill.BackgroundColor);
+ Assert.AreEqual(XLColor.Xanadu, ws.Column(5).Style.Fill.BackgroundColor);
+
+ Assert.AreEqual(ws.Style.Fill.BackgroundColor, ws.Cell(2, 1).Style.Fill.BackgroundColor);
+ Assert.AreEqual(XLColor.Fulvous, ws.Cell(2, 2).Style.Fill.BackgroundColor);
+ Assert.AreEqual(XLColor.Fulvous, ws.Cell(2, 3).Style.Fill.BackgroundColor);
+ Assert.AreEqual(XLColor.Fulvous, ws.Cell(2, 4).Style.Fill.BackgroundColor);
+ Assert.AreEqual(XLColor.MacaroniAndCheese, ws.Cell(2, 5).Style.Fill.BackgroundColor);
+ }
+ }
+}