Initial commit of the ClosedXML library
Establishes the foundational structure, core Excel functionality, and tooling. - Implements base components for cells, ranges, columns, and rows. - Integrates a custom calculation engine with a wide range of Excel functions. - Adds comprehensive support for styling, conditional formatting, data validation, comments, pictures, and charts. - Configures build setup, project metadata (NuGet), and developer guidelines. - Includes editor and Git attributes for consistent code style and line endings.
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using ClosedXML.Excel;
|
||||
using NUnit.Framework;
|
||||
|
||||
namespace ClosedXML_Tests.Excel.ConditionalFormats
|
||||
{
|
||||
[TestFixture]
|
||||
public class ConditionalFormatCopyTests
|
||||
{
|
||||
[Test]
|
||||
public void StylesAreCreatedDuringCopy()
|
||||
{
|
||||
var wb = new XLWorkbook();
|
||||
var ws = wb.Worksheets.Add("Sheet");
|
||||
var format = ws.Range("A1:A1").AddConditionalFormat();
|
||||
format.WhenEquals("=" + format.Ranges.First().FirstCell().CellRight(4).Address.ToStringRelative()).Fill
|
||||
.SetBackgroundColor(XLColor.Blue);
|
||||
|
||||
var wb2 = new XLWorkbook();
|
||||
var ws2 = wb2.Worksheets.Add("Sheet2");
|
||||
ws2.FirstCell().CopyFrom(ws.FirstCell());
|
||||
Assert.That(ws2.ConditionalFormats.First().Style.Fill.BackgroundColor, Is.EqualTo(XLColor.Blue)); //Added blue style
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void CopyConditionalFormatSingleWorksheet()
|
||||
{
|
||||
var wb = new XLWorkbook();
|
||||
var ws = wb.Worksheets.Add("Sheet");
|
||||
var format = ws.Range("A1:A1").AddConditionalFormat();
|
||||
format.WhenEquals("=" + format.Ranges.First().FirstCell().CellRight(4).Address.ToStringRelative()).Fill
|
||||
.SetBackgroundColor(XLColor.Blue);
|
||||
|
||||
ws.Cell("A1").CopyTo("B2");
|
||||
|
||||
Assert.AreEqual(1, ws.ConditionalFormats.Count());
|
||||
Assert.AreEqual(2, ws.ConditionalFormats.First().Ranges.Count);
|
||||
Assert.AreEqual("A1:A1", ws.ConditionalFormats.First().Ranges.First().RangeAddress.ToString());
|
||||
Assert.AreEqual("B2:B2", ws.ConditionalFormats.First().Ranges.Last().RangeAddress.ToString());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void CopyConditionalFormatSameRange()
|
||||
{
|
||||
var wb = new XLWorkbook();
|
||||
var ws = wb.Worksheets.Add("Sheet");
|
||||
var format = ws.Range("A1:C3").AddConditionalFormat();
|
||||
format.WhenEquals("=" + format.Ranges.First().FirstCell().CellRight(4).Address.ToStringRelative()).Fill
|
||||
.SetBackgroundColor(XLColor.Blue);
|
||||
|
||||
ws.Cell("A1").CopyTo("B2");
|
||||
|
||||
Assert.AreEqual(1, ws.ConditionalFormats.Count());
|
||||
Assert.AreEqual(1, ws.ConditionalFormats.First().Ranges.Count);
|
||||
Assert.AreEqual("A1:C3", ws.ConditionalFormats.First().Ranges.First().RangeAddress.ToString());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void CopyConditionalFormatsDifferentWorksheets()
|
||||
{
|
||||
var wb = new XLWorkbook();
|
||||
var ws1 = wb.Worksheets.Add("Sheet1");
|
||||
var format = ws1.Range("A1:A1").AddConditionalFormat();
|
||||
format.WhenEquals("=" + format.Ranges.First().FirstCell().CellRight(4).Address.ToStringRelative()).Fill
|
||||
.SetBackgroundColor(XLColor.Blue);
|
||||
var ws2 = wb.Worksheets.Add("Sheet2");
|
||||
var otherCell = ws2.Cell("B2");
|
||||
|
||||
ws1.Cell("A1").CopyTo(otherCell);
|
||||
|
||||
Assert.AreEqual(1, ws1.ConditionalFormats.Count());
|
||||
Assert.AreEqual(1, ws2.ConditionalFormats.Count());
|
||||
Assert.AreEqual(1, ws1.ConditionalFormats.First().Ranges.Count);
|
||||
Assert.AreEqual(1, ws2.ConditionalFormats.First().Ranges.Count);
|
||||
Assert.AreEqual("Sheet1", ws1.ConditionalFormats.First().Ranges.First().Worksheet.Name);
|
||||
Assert.AreEqual("Sheet2", ws2.ConditionalFormats.First().Ranges.First().Worksheet.Name);
|
||||
Assert.AreEqual("A1:A1", ws1.ConditionalFormats.First().Ranges.First().RangeAddress.ToString());
|
||||
Assert.AreEqual("B2:B2", ws2.ConditionalFormats.First().Ranges.First().RangeAddress.ToString());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void FullCopyConditionalFormatSameWorksheet()
|
||||
{
|
||||
var wb = new XLWorkbook();
|
||||
var ws1 = wb.Worksheets.Add("Sheet1");
|
||||
var format = (XLConditionalFormat)ws1.Range("A1:A1").AddConditionalFormat();
|
||||
format.WhenEquals("=" + format.Ranges.First().FirstCell().CellRight(4).Address.ToStringRelative()).Fill
|
||||
.SetBackgroundColor(XLColor.Blue);
|
||||
|
||||
TestDelegate action = () => format.CopyTo(ws1);
|
||||
|
||||
Assert.Throws(typeof(InvalidOperationException), action);
|
||||
|
||||
}
|
||||
[Test]
|
||||
public void FullCopyConditionalFormatDifferentWorksheets()
|
||||
{
|
||||
var wb = new XLWorkbook();
|
||||
var ws1 = wb.Worksheets.Add("Sheet1");
|
||||
var format = (XLConditionalFormat)ws1.Range("A1:C3").AddConditionalFormat();
|
||||
format.WhenEquals("=" + format.Ranges.First().FirstCell().CellRight(4).Address.ToStringRelative()).Fill
|
||||
.SetBackgroundColor(XLColor.Blue);
|
||||
var ws2 = wb.Worksheets.Add("Sheet2");
|
||||
|
||||
format.CopyTo(ws2);
|
||||
|
||||
Assert.AreEqual(1, ws1.ConditionalFormats.Count());
|
||||
Assert.AreEqual(1, ws2.ConditionalFormats.Count());
|
||||
Assert.AreEqual(1, ws1.ConditionalFormats.First().Ranges.Count);
|
||||
Assert.AreEqual(1, ws2.ConditionalFormats.First().Ranges.Count);
|
||||
Assert.AreEqual("Sheet1!A1:C3", ws1.ConditionalFormats.First().Ranges.First().RangeAddress.ToString(XLReferenceStyle.A1, true));
|
||||
Assert.AreEqual("Sheet2!A1:C3", ws2.ConditionalFormats.First().Ranges.First().RangeAddress.ToString(XLReferenceStyle.A1, true));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user