blob: 9955c84faa7a65729ed82675dac727a4c900a6e3 [file] [log] [blame]
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OfficeOpenXml;
using System.IO;
using OfficeOpenXml.Drawing;
using System.Drawing;
using OfficeOpenXml.Drawing.Chart;
using OfficeOpenXml.Drawing.Vml;
using OfficeOpenXml.Style;
using System.Data;
using OfficeOpenXml.Table.PivotTable;
using System.Reflection;
namespace EPPlusTest
{
[TestClass]
public class WorkSheetTest : TestBase
{
[TestMethod]
public void RunWorksheetTests()
{
InsertDeleteTestRows();
InsertDeleteTestColumns();
LoadData();
StyleFill();
Performance();
RichTextCells();
TestComments();
Hyperlink();
PictureURL();
CopyOverwrite();
HideTest();
VeryHideTest();
PrinterSettings();
Address();
Merge();
Encoding();
LoadText();
LoadDataReader();
LoadDataTable();
LoadFromCollectionTest();
LoadFromEmptyCollectionTest();
LoadArray();
WorksheetCopy();
DefaultColWidth();
CopyTable();
AutoFitColumns();
CopyRange();
CopyMergedRange();
ValueError();
FormulaOverwrite();
FormulaError();
StyleNameTest();
NamedStyles();
TableTest();
DefinedName();
CreatePivotTable();
AddChartSheet();
SetHeaderFooterImage();
SaveWorksheet("Worksheet.xlsx");
ReadWorkSheet();
ReadStreamSaveAsStream();
}
private void AddChartSheet()
{
var chart = _pck.Workbook.Worksheets.AddChart("ChartSheet", eChartType.ColumnClustered);
foreach (var _n in _pck.Workbook.Names)
{
}
//Iterate all collection and make sure no exception is thrown.
foreach (var worksheet in _pck.Workbook.Worksheets)
{
if (!(worksheet is ExcelChartsheet))
{
foreach (var d in worksheet.Drawings)
{
}
foreach (var d in worksheet.Tables)
{
}
foreach (var d in worksheet.PivotTables)
{
}
foreach (var d in worksheet.Names)
{
}
foreach (var d in worksheet.Comments)
{
}
foreach (var d in worksheet.ConditionalFormatting)
{
}
}
}
}
//[Ignore]
//[TestMethod]
public void ReadWorkSheet()
{
FileStream instream = new FileStream(_worksheetPath + @"Worksheet.xlsx", FileMode.Open, FileAccess.ReadWrite);
using (ExcelPackage pck = new ExcelPackage(instream))
{
var ws = pck.Workbook.Worksheets["Perf"];
Assert.AreEqual(ws.Cells["H6"].Formula, "B5+B6");
ws = pck.Workbook.Worksheets["Comment"];
var comment = ws.Cells["B2"].Comment;
Assert.AreNotEqual(comment, null);
Assert.AreEqual(comment.Author, "Jan Källman");
ws = pck.Workbook.Worksheets["Hidden"];
Assert.AreEqual<eWorkSheetHidden>(ws.Hidden, eWorkSheetHidden.Hidden);
ws = pck.Workbook.Worksheets["VeryHidden"];
Assert.AreEqual<eWorkSheetHidden>(ws.Hidden, eWorkSheetHidden.VeryHidden);
ws = pck.Workbook.Worksheets["RichText"];
Assert.AreEqual("Room 02 & 03", ws.Cells["G1"].RichText.Text);
ws = pck.Workbook.Worksheets["HeaderImage"];
//Assert.AreEqual(ws.HeaderFooter.Pictures.Count, 3);
ws = pck.Workbook.Worksheets["newsheet"];
Assert.AreEqual(ws.Cells["F2"].Style.Font.UnderLine, true);
Assert.AreEqual(ws.Cells["F2"].Style.Font.UnderLineType, ExcelUnderLineType.Double);
Assert.AreEqual(ws.Cells["F3"].Style.Font.UnderLineType, ExcelUnderLineType.SingleAccounting);
Assert.AreEqual(ws.Cells["F5"].Style.Font.UnderLineType, ExcelUnderLineType.None);
Assert.AreEqual(ws.Cells["F5"].Style.Font.UnderLine, false);
}
instream.Close();
}
[Ignore]
[TestMethod]
public void ReadStreamWithTemplateWorkSheet()
{
FileStream instream = new FileStream(_worksheetPath + @"\Worksheet.xlsx", FileMode.Open, FileAccess.Read);
MemoryStream stream = new MemoryStream();
using (ExcelPackage pck = new ExcelPackage(stream, instream))
{
var ws = pck.Workbook.Worksheets["Perf"];
Assert.AreEqual(ws.Cells["H6"].Formula, "B5+B6");
ws = pck.Workbook.Worksheets["newsheet"];
Assert.AreEqual(ws.GetValue<DateTime>(20, 21), new DateTime(2010, 1, 1));
ws = pck.Workbook.Worksheets["Loaded DataTable"];
Assert.AreEqual(ws.GetValue<string>(2, 1), "Row1");
Assert.AreEqual(ws.GetValue<int>(2, 2), 1);
Assert.AreEqual(ws.GetValue<bool>(2, 3), true);
Assert.AreEqual(ws.GetValue<double>(2, 4), 1.5);
ws = pck.Workbook.Worksheets["RichText"];
var r1 = ws.Cells["A1"].RichText[0];
Assert.AreEqual(r1.Text, "Test");
Assert.AreEqual(r1.Bold, true);
ws = pck.Workbook.Worksheets["Pic URL"];
Assert.AreEqual(((ExcelPicture)ws.Drawings["Pic URI"]).Hyperlink, "http://epplus.codeplex.com");
Assert.AreEqual(pck.Workbook.Worksheets["Address"].GetValue<string>(40, 1), "\b\t");
pck.SaveAs(new FileInfo(@"Test\Worksheet2.xlsx"));
}
instream.Close();
}
//[Ignore]
//[TestMethod]
public void ReadStreamSaveAsStream()
{
if (!File.Exists(_worksheetPath + @"Worksheet.xlsx"))
{
Assert.Inconclusive("Worksheet.xlsx does not exists");
}
FileStream instream = new FileStream(_worksheetPath + @"Worksheet.xlsx", FileMode.Open, FileAccess.ReadWrite);
MemoryStream stream = new MemoryStream();
using (ExcelPackage pck = new ExcelPackage(instream))
{
var ws = pck.Workbook.Worksheets["Names"];
Assert.AreEqual(ws.Names["FullCol"].Start.Row, 1);
Assert.AreEqual(ws.Names["FullCol"].End.Row, ExcelPackage.MaxRows);
pck.SaveAs(stream);
}
instream.Close();
}
//
// You can use the following additional attributes as you write your tests:
//
// Use ClassInitialize to run code before running the first test in the class
// Use ClassCleanup to run code after all tests in a class have run
//[Ignore]
//[TestMethod]
public void LoadData()
{
ExcelWorksheet ws = _pck.Workbook.Worksheets.Add("newsheet");
ws.Cells["U19"].Value = new DateTime(2009, 12, 31);
ws.Cells["U20"].Value = new DateTime(2010, 1, 1);
ws.Cells["U21"].Value = new DateTime(2010, 1, 2);
ws.Cells["U22"].Value = new DateTime(2010, 1, 3);
ws.Cells["U23"].Value = new DateTime(2010, 1, 4);
ws.Cells["U24"].Value = new DateTime(2010, 1, 5);
ws.Cells["U19:U24"].Style.Numberformat.Format = "yyyy-mm-dd";
ws.Cells["V19"].Value = 100;
ws.Cells["V20"].Value = 102;
ws.Cells["V21"].Value = 101;
ws.Cells["V22"].Value = 103;
ws.Cells["V23"].Value = 105;
ws.Cells["V24"].Value = 104;
ws.Cells["v19:v24"].Style.HorizontalAlignment = ExcelHorizontalAlignment.Left;
ws.Cells["v19:v24"].Style.Numberformat.Format = @"$#,##0.00_);($#,##0.00)";
ws.Cells["X19"].Value = 210;
ws.Cells["X20"].Value = 212;
ws.Cells["X21"].Value = 221;
ws.Cells["X22"].Value = 123;
ws.Cells["X23"].Value = 135;
ws.Cells["X24"].Value = 134;
// add autofilter
ws.Cells["U19:X24"].AutoFilter = true;
ExcelPicture pic = ws.Drawings.AddPicture("Pic1", Properties.Resources.Test1);
pic.SetPosition(150, 140);
ws.Cells["A30"].Value = "Text orientation 45";
ws.Cells["A30"].Style.TextRotation = 45;
ws.Cells["B30"].Value = "Text orientation 90";
ws.Cells["B30"].Style.TextRotation = 90;
ws.Cells["C30"].Value = "Text orientation 180";
ws.Cells["C30"].Style.TextRotation = 180;
ws.Cells["D30"].Value = "Text orientation 38";
ws.Cells["D30"].Style.TextRotation = 38;
ws.Cells["D30"].Style.Font.Bold = true;
ws.Cells["D30"].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Right;
ws.Workbook.Names.Add("TestName", ws.Cells["B30:E30"]);
ws.Workbook.Names["TestName"].Style.Font.Color.SetColor(Color.Red);
ws.Workbook.Names["TestName"].Offset(1, 0).Value = "Offset test 1";
ws.Workbook.Names["TestName"].Offset(2, -1, 2, 2).Value = "Offset test 2";
//Test vertical align
ws.Cells["E19"].Value = "Subscript";
ws.Cells["E19"].Style.Font.VerticalAlign = ExcelVerticalAlignmentFont.Subscript;
ws.Cells["E20"].Value = "Subscript";
ws.Cells["E20"].Style.Font.VerticalAlign = ExcelVerticalAlignmentFont.Superscript;
ws.Cells["E21"].Value = "Superscript";
ws.Cells["E21"].Style.Font.VerticalAlign = ExcelVerticalAlignmentFont.Superscript;
ws.Cells["E21"].Style.Font.VerticalAlign = ExcelVerticalAlignmentFont.None;
ws.Cells["E22"].Value = "Indent 2";
ws.Cells["E22"].Style.Indent = 2;
ws.Cells["E23"].Value = "Shrink to fit";
ws.Cells["E23"].Style.ShrinkToFit = true;
ws.Cells["e24"].Value = "ReadingOrder LeftToRight";
ws.Cells["e24"].Style.ReadingOrder = ExcelReadingOrder.LeftToRight;
ws.Cells["e25"].Value = "ReadingOrder RightToLeft";
ws.Cells["e25"].Style.ReadingOrder = ExcelReadingOrder.RightToLeft;
ws.Cells["e26"].Value = "ReadingOrder Context";
ws.Cells["e26"].Style.ReadingOrder = ExcelReadingOrder.ContextDependent;
ws.Cells["e27"].Value = "Default Readingorder";
//Underline
ws.Cells["F1:F7"].Value = "Underlined";
ws.Cells["F1"].Style.Font.UnderLineType = ExcelUnderLineType.Single;
ws.Cells["F2"].Style.Font.UnderLineType = ExcelUnderLineType.Double;
ws.Cells["F3"].Style.Font.UnderLineType = ExcelUnderLineType.SingleAccounting;
ws.Cells["F4"].Style.Font.UnderLineType = ExcelUnderLineType.DoubleAccounting;
ws.Cells["F5"].Style.Font.UnderLineType = ExcelUnderLineType.None;
ws.Cells["F6:F7"].Style.Font.UnderLine = true;
ws.Cells["F7"].Style.Font.UnderLine = false;
ws.Cells["E24"].Value = 0;
Assert.AreEqual(ws.Cells["E24"].Text, "0");
ws.Cells["F7"].Style.Font.UnderLine = false;
ws.Names.Add("SheetName", ws.Cells["A1:A2"]);
ws.View.FreezePanes(3, 5);
foreach (ExcelRangeBase cell in ws.Cells["A1"])
{
Assert.Fail("A1 is not set");
}
foreach (ExcelRangeBase cell in ws.Cells[ws.Dimension.Address])
{
System.Diagnostics.Debug.WriteLine(cell.Address);
}
////Linq test
var res = from c in ws.Cells[ws.Dimension.Address] where c.Value != null && c.Value.ToString() == "Offset test 1" select c;
foreach (ExcelRangeBase cell in res)
{
System.Diagnostics.Debug.WriteLine(cell.Address);
}
_pck.Workbook.Properties.Author = "Jan Källman";
_pck.Workbook.Properties.Category = "Category";
_pck.Workbook.Properties.Comments = "Comments";
_pck.Workbook.Properties.Company = "Adventure works";
_pck.Workbook.Properties.Keywords = "Keywords";
_pck.Workbook.Properties.Title = "Title";
_pck.Workbook.Properties.Subject = "Subject";
_pck.Workbook.Properties.Status = "Status";
_pck.Workbook.Properties.HyperlinkBase = new Uri("http://serversideexcel.com", UriKind.Absolute);
_pck.Workbook.Properties.Manager = "Manager";
_pck.Workbook.Properties.SetCustomPropertyValue("DateTest", new DateTime(2008, 12, 31));
TestContext.WriteLine(_pck.Workbook.Properties.GetCustomPropertyValue("DateTest").ToString());
_pck.Workbook.Properties.SetCustomPropertyValue("Author", "Jan Källman");
_pck.Workbook.Properties.SetCustomPropertyValue("Count", 1);
_pck.Workbook.Properties.SetCustomPropertyValue("IsTested", false);
_pck.Workbook.Properties.SetCustomPropertyValue("LargeNo", 123456789123);
_pck.Workbook.Properties.SetCustomPropertyValue("Author", 3);
}
const int PERF_ROWS = 5000;
//[Ignore]
//[TestMethod]
public void Performance()
{
ExcelWorksheet ws = _pck.Workbook.Worksheets.Add("Perf");
TestContext.WriteLine("StartTime {0}", DateTime.Now);
Random r = new Random();
for (int i = 1; i <= PERF_ROWS; i++)
{
ws.Cells[i, 1].Value = string.Format("Row {0}\n.Test new row\"' öäåü", i);
ws.Cells[i, 2].Value = i;
ws.Cells[i, 2].Style.WrapText = true;
ws.Cells[i, 3].Value = DateTime.Now;
ws.Cells[i, 4].Value = r.NextDouble() * 100000;
}
ws.Cells[1, 2, PERF_ROWS, 2].Style.Numberformat.Format = "#,##0";
ws.Cells[1, 3, PERF_ROWS, 3].Style.Numberformat.Format = "yyyy-MM-dd HH:mm:ss";
ws.Cells[1, 4, PERF_ROWS, 4].Style.Numberformat.Format = "#,##0.00";
ws.Cells[PERF_ROWS + 1, 2].Formula = "SUM(B1:B" + PERF_ROWS.ToString() + ")";
ws.Column(1).Width = 12;
ws.Column(2).Width = 8;
ws.Column(3).Width = 20;
ws.Column(4).Width = 14;
ws.Cells["A1:C1"].Merge = true;
ws.Cells["A2:A5"].Merge = true;
ws.DeleteRow(1, 1);
ws.InsertRow(1, 1);
ws.InsertRow(3, 1);
ws.DeleteRow(1000, 3, true);
ws.DeleteRow(2000, 1, true);
ws.InsertRow(2001, 4);
ws.InsertRow(2010, 1, 2010);
ws.InsertRow(20000, 2);
ws.DeleteRow(20005, 4, false);
//Single formula
ws.Cells["H3"].Formula = "B2+B3";
ws.DeleteRow(2, 1, true);
//Shared formula
ws.Cells["H5:H30"].Formula = "B4+B5";
ws.Cells["H5:H30"].Style.Numberformat.Format = "_(\"$\"* # ##0.00_);_(\"$\"* (# ##0.00);_(\"$\"* \"-\"??_);_(@_)";
ws.InsertRow(7, 3);
ws.InsertRow(2, 1);
ws.DeleteRow(30, 3, true);
ws.DeleteRow(15, 2, true);
ws.Cells["a1:B100"].Style.Locked = false;
ws.Cells["a1:B12"].Style.Hidden = true;
TestContext.WriteLine("EndTime {0}", DateTime.Now);
}
//[Ignore]
//[TestMethod]
public void InsertDeleteTestRows()
{
ExcelWorksheet ws = _pck.Workbook.Worksheets.Add("InsertDelete");
//ws.Cells.Value = 0;
ws.Cells["A1:C5"].Value = 1;
Assert.AreEqual(((object[,])ws.Cells["A1:C5"].Value)[1, 1], 1);
ws.Cells["A1:B3"].Merge = true;
ws.Cells["D3"].Formula = "A2+C5";
ws.InsertRow(2, 1);
ws.Cells["A10:C15"].Value = 1;
ws.Cells["A11:B13"].Merge = true;
ws.DeleteRow(12, 1, true);
ws.Cells["a1:B100"].Style.Locked = false;
ws.Cells["a1:B12"].Style.Hidden = true;
ws.Protection.IsProtected = true;
ws.Protection.SetPassword("Password");
var range = ws.Cells["B2:D100"];
ws.PrinterSettings.PrintArea = null;
ws.PrinterSettings.PrintArea = ws.Cells["B2:D99"];
ws.PrinterSettings.PrintArea = null;
ws.Row(15).PageBreak = true;
ws.Column(3).PageBreak = true;
ws.View.ShowHeaders = false;
ws.View.PageBreakView = true;
ws.Row(200).Height = 50;
ws.Workbook.CalcMode = ExcelCalcMode.Automatic;
Assert.AreEqual(range.Start.Column, 2);
Assert.AreEqual(range.Start.Row, 2);
Assert.AreEqual(range.Start.Address, "B2");
Assert.AreEqual(range.End.Column, 4);
Assert.AreEqual(range.End.Row, 100);
Assert.AreEqual(range.End.Address, "D100");
ExcelAddress addr = new ExcelAddress("B1:D3");
Assert.AreEqual(addr.Start.Column, 2);
Assert.AreEqual(addr.Start.Row, 1);
Assert.AreEqual(addr.End.Column, 4);
Assert.AreEqual(addr.End.Row, 3);
}
//[Ignore]
//[TestMethod]
public void InsertDeleteTestColumns()
{
ExcelWorksheet ws = _pck.Workbook.Worksheets.Add("InsertDeleteColumns");
//ws.Cells.Value = 0;
ws.Cells["A1:C5"].Value = 1;
Assert.AreEqual(((object[,])ws.Cells["A1:C5"].Value)[1, 1], 1);
ws.Cells["A1:B3"].Merge = true;
ws.Cells["D3"].Formula = "A2+C5";
ws.InsertColumn(1, 1);
ws.Cells["K10:M15"].Value = 1;
ws.Cells["K11:L13"].Merge = true;
ws.DeleteColumn(12, 1);
ws.Cells["X1:Y100"].Style.Locked = false;
ws.Cells["C1:Y12"].Style.Hidden = true;
ws.Protection.IsProtected = true;
ws.Protection.SetPassword("Password");
var range = ws.Cells["X2:Z100"];
ws.PrinterSettings.PrintArea = null;
ws.PrinterSettings.PrintArea = ws.Cells["X2:Z99"];
ws.PrinterSettings.PrintArea = null;
ws.Row(15).PageBreak = true;
ws.Column(3).PageBreak = true;
ws.View.ShowHeaders = false;
ws.View.PageBreakView = true;
ws.Row(200).Height = 50;
ws.Workbook.CalcMode = ExcelCalcMode.Automatic;
//Assert.AreEqual(range.Start.Column, 2);
//Assert.AreEqual(range.Start.Row, 2);
//Assert.AreEqual(range.Start.Address, "B2");
//Assert.AreEqual(range.End.Column, 4);
//Assert.AreEqual(range.End.Row, 100);
//Assert.AreEqual(range.End.Address, "D100");
//ExcelAddress addr = new ExcelAddress("B1:D3");
//Assert.AreEqual(addr.Start.Column, 2);
//Assert.AreEqual(addr.Start.Row, 1);
//Assert.AreEqual(addr.End.Column, 4);
//Assert.AreEqual(addr.End.Row, 3);
}
//[Ignore]
//[TestMethod]
public void RichTextCells()
{
ExcelWorksheet ws = _pck.Workbook.Worksheets.Add("RichText");
var rs = ws.Cells["A1"].RichText;
var r1 = rs.Add("Test");
r1.Bold = true;
r1.Color = Color.Pink;
var r2 = rs.Add(" of");
r2.Size = 14;
r2.Italic = true;
var r3 = rs.Add(" rich");
r3.FontName = "Arial";
r3.Size = 18;
r3.Italic = true;
var r4 = rs.Add("text.");
r4.Size = 8.25f;
r4.Italic = true;
r4.UnderLine = true;
rs = ws.Cells["A3:A4"].RichText;
var r5 = rs.Add("Double");
r5.Color = Color.PeachPuff;
r5.FontName = "times new roman";
r5.Size = 16;
var r6 = rs.Add(" cells");
r6.Color = Color.Red;
r6.UnderLine = true;
rs = ws.Cells["C8"].RichText;
r1 = rs.Add("Blue ");
r1.Color = Color.Blue;
r2 = rs.Add("Red");
r2.Color = Color.Red;
ws.Cells["G1"].RichText.Add("Room 02 & 03");
ws.Cells["G2"].RichText.Text = "Room 02 & 03";
ws = ws = _pck.Workbook.Worksheets.Add("RichText2");
ws.Cells["A1"].RichText.Text = "Room 02 & 03";
ws.TabColor = Color.PowderBlue;
r1 = ws.Cells["G3"].RichText.Add("Test");
r1.Bold = true;
ws.Cells["G3"].RichText.Add(" a new t");
ws.Cells["G3"].RichText[1].Bold = false; ;
}
//[Ignore]
//[TestMethod]
public void TestComments()
{
var ws = _pck.Workbook.Worksheets.Add("Comment");
var comment = ws.Comments.Add(ws.Cells["C3"], "Jan Källman\r\nAuthor\r\n", "JK");
comment.RichText[0].Bold = true;
comment.RichText[0].PreserveSpace = true;
var rt = comment.RichText.Add("Test comment");
comment.VerticalAlignment = eTextAlignVerticalVml.Center;
comment = ws.Comments.Add(ws.Cells["A2"], "Jan Källman\r\nAuthor\r\n1", "JK");
comment = ws.Comments.Add(ws.Cells["A1"], "Jan Källman\r\nAuthor\r\n2", "JK");
comment.AlternativeText = "Test of AlternetiveText2";
comment = ws.Comments.Add(ws.Cells["C2"], "Jan Källman\r\nAuthor\r\n3", "JK");
comment = ws.Comments.Add(ws.Cells["C1"], "Jan Källman\r\nAuthor\r\n5", "JK");
comment = ws.Comments.Add(ws.Cells["B1"], "Jan Källman\r\nAuthor\r\n7", "JK");
ws.Comments.Remove(ws.Cells["A2"].Comment);
//comment.HorizontalAlignment = eTextAlignHorizontalVml.Center;
//comment.Visible = true;
//comment.BackgroundColor = Color.Green;
//comment.To.Row += 4;
//comment.To.Column += 2;
//comment.LineStyle = eLineStyleVml.LongDash;
//comment.LineColor = Color.Red;
//comment.LineWidth = (Single)2.5;
//rt.Color = Color.Red;
var rt2 = ws.Cells["B2"].AddComment("Range Added Comment test test test test test test test test test test testtesttesttesttesttesttesttesttesttesttest", "Jan Källman");
ws.Cells["c3"].Comment.AutoFit = true;
}
//[Ignore]
//[TestMethod]
public void Address()
{
var ws = _pck.Workbook.Worksheets.Add("Address");
ws.Cells["A1:A4,B5:B7"].Value = "AddressTest";
ws.Cells["A1:A4,B5:B7"].Style.Font.Color.SetColor(Color.Red);
ws.Cells["A2:A3,B4:B8"].Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.LightUp;
ws.Cells["A2:A3,B4:B8"].Style.Fill.BackgroundColor.SetColor(Color.LightGreen);
ws.Cells["2:2"].Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid;
ws.Cells["2:2"].Style.Fill.BackgroundColor.SetColor(Color.LightGreen);
ws.Cells["B:B"].Style.Font.Name = "Times New Roman";
ws.Cells["C4:G4,H8:H30,B15"].FormulaR1C1 = "RC[-1]+R1C[-1]";
ws.Cells["C4:G4,H8:H30,B15"].Style.Numberformat.Format = "#,##0.000";
ws.Cells["G1,G3"].Hyperlink = new ExcelHyperLink("Comment!$A$1", "Comment");
ws.Cells["G1,G3"].Style.Font.Color.SetColor(Color.Blue);
ws.Cells["G1,G3"].Style.Font.UnderLine = true;
ws.Cells["A1:G5"].Copy(ws.Cells["A50"]);
var ws2 = _pck.Workbook.Worksheets.Add("Copy Cells");
ws.Cells["1:4"].Copy(ws2.Cells["1:1"]);
ws.Cells["H1:J5"].Merge = true;
ws.Cells["2:3"].Copy(ws.Cells["50:51"]);
ws.Cells["A40"].Value = new string(new char[] { (char)8, (char)9 });
ExcelRange styleRng = ws.Cells["A1"];
ExcelStyle tempStyle = styleRng.Style;
var namedStyle = _pck.Workbook.Styles.CreateNamedStyle("HyperLink", tempStyle);
namedStyle.Style.Font.UnderLineType = ExcelUnderLineType.Single;
namedStyle.Style.Font.Color.SetColor(Color.Blue);
}
//[Ignore]
//[TestMethod]
public void Encoding()
{
var ws = _pck.Workbook.Worksheets.Add("Encoding");
ws.Cells["A1"].Value = "_x0099_";
ws.Cells["A2"].Value = " Test \b" + (char)1 + " end\"";
ws.Cells["A3"].Value = "_x0097_ test_x001D_1234";
ws.Cells["A4"].Value = "test" + (char)31; //Bug issue 14689 //Fixed
}
//[Ignore]
//[TestMethod]
public void WorksheetCopy()
{
var ws = _pck.Workbook.Worksheets.Add("Copied Address", _pck.Workbook.Worksheets["Address"]);
var wsCopy = _pck.Workbook.Worksheets.Add("Copied Comment", _pck.Workbook.Worksheets["Comment"]);
ExcelPackage pck2 = new ExcelPackage();
pck2.Workbook.Worksheets.Add("Copy From other pck", _pck.Workbook.Worksheets["Address"]);
pck2.SaveAs(new FileInfo(_worksheetPath + "copy.xlsx"));
pck2 = null;
Assert.AreEqual(6, wsCopy.Comments.Count);
}
[Ignore]
[TestMethod]
public void TestDelete()
{
string file = _worksheetPath + "test.xlsx";
if (File.Exists(file))
File.Delete(file);
Create(file);
ExcelPackage pack = new ExcelPackage(new FileInfo(file));
ExcelWorksheet w = pack.Workbook.Worksheets["delete"];
w.DeleteRow(1, 2);
pack.Save();
}
//[Ignore]
//[TestMethod]
public void LoadFromCollectionTest()
{
var ws = _pck.Workbook.Worksheets.Add("LoadFromCollection");
List<TestDTO> list = new List<TestDTO>();
list.Add(new TestDTO() { Id = 1, Name = "Item1", Boolean = false, Date = new DateTime(2011, 1, 1), dto = null, NameVar = "Field 1" });
list.Add(new TestDTO() { Id = 2, Name = "Item2", Boolean = true, Date = new DateTime(2011, 1, 15), dto = new TestDTO(), NameVar = "Field 2" });
list.Add(new TestDTO() { Id = 3, Name = "Item3", Boolean = false, Date = new DateTime(2011, 2, 1), dto = null, NameVar = "Field 3" });
list.Add(new TestDTO() { Id = 4, Name = "Item4", Boolean = true, Date = new DateTime(2011, 4, 19), dto = list[1], NameVar = "Field 4" });
list.Add(new TestDTO() { Id = 5, Name = "Item5", Boolean = false, Date = new DateTime(2011, 5, 8), dto = null, NameVar = "Field 5" });
list.Add(new TestDTO() { Id = 6, Name = "Item6", Boolean = true, Date = new DateTime(2010, 3, 27), dto = null, NameVar = "Field 6" });
list.Add(new TestDTO() { Id = 7, Name = "Item7", Boolean = false, Date = new DateTime(2009, 1, 5), dto = list[3], NameVar = "Field 7" });
list.Add(new TestDTO() { Id = 8, Name = "Item8", Boolean = true, Date = new DateTime(2018, 12, 31), dto = null, NameVar = "Field 8" });
list.Add(new TestDTO() { Id = 9, Name = "Item9", Boolean = false, Date = new DateTime(2010, 2, 1), dto = null, NameVar = "Field 9" });
ws.Cells["A1"].LoadFromCollection(list, true);
ws.Cells["A30"].LoadFromCollection(list, true, OfficeOpenXml.Table.TableStyles.Medium9, BindingFlags.Instance | BindingFlags.Instance, typeof(TestDTO).GetFields());
ws.Cells["A45"].LoadFromCollection(list, true, OfficeOpenXml.Table.TableStyles.Light1, BindingFlags.Instance | BindingFlags.Instance, new MemberInfo[] { typeof(TestDTO).GetMethod("GetNameID"), typeof(TestDTO).GetField("NameVar") });
ws.Cells["J1"].LoadFromCollection(from l in list where l.Boolean orderby l.Date select new { Name = l.Name, Id = l.Id, Date = l.Date, NameVariable = l.NameVar }, true, OfficeOpenXml.Table.TableStyles.Dark4);
var ints = new int[] { 1, 3, 4, 76, 2, 5 };
ws.Cells["A15"].Value = ints;
}
//[TestMethod]
public void LoadFromEmptyCollectionTest()
{
if (_pck == null) _pck = new ExcelPackage();
var ws = _pck.Workbook.Worksheets.Add("LoadFromEmpyCollection");
List<TestDTO> listDTO = new List<TestDTO>(0);
//List<int> list = new List<int>(0);
ws.Cells["A1"].LoadFromCollection(listDTO, true);
ws.Cells["A5"].LoadFromCollection(listDTO, true, OfficeOpenXml.Table.TableStyles.Medium9, BindingFlags.Instance | BindingFlags.Instance, typeof(TestDTO).GetFields());
ws.Cells["A10"].LoadFromCollection(listDTO, true, OfficeOpenXml.Table.TableStyles.Light1, BindingFlags.Instance | BindingFlags.Instance, new MemberInfo[] { typeof(TestDTO).GetMethod("GetNameID"), typeof(TestDTO).GetField("NameVar") });
ws.Cells["A15"].LoadFromCollection(from l in listDTO where l.Boolean orderby l.Date select new { Name = l.Name, Id = l.Id, Date = l.Date, NameVariable = l.NameVar }, true, OfficeOpenXml.Table.TableStyles.Dark4);
ws.Cells["A20"].LoadFromCollection(listDTO, false);
}
[TestMethod]
public void LoadFromOneCollectionTest()
{
if (_pck == null) _pck = new ExcelPackage();
var ws = _pck.Workbook.Worksheets.Add("LoadFromEmpyCollection");
List<TestDTO> listDTO = new List<TestDTO>(0) { new TestDTO() { Name = "Single" } };
//List<int> list = new List<int>(0);
var r = ws.Cells["A1"].LoadFromCollection(listDTO, true);
Assert.AreEqual(2, r.Rows);
var r2 = ws.Cells["A5"].LoadFromCollection(listDTO, false);
Assert.AreEqual(1, r2.Rows);
}
static void Create(string file)
{
ExcelPackage pack = new ExcelPackage(new FileInfo(file));
ExcelWorksheet w = pack.Workbook.Worksheets.Add("delete");
w.Cells[1, 1].Value = "test";
w.Cells[1, 2].Value = "test";
w.Cells[2, 1].Value = "to delete";
w.Cells[2, 2].Value = "to delete";
w.Cells[3, 1].Value = "3Left";
w.Cells[3, 2].Value = "3Left";
w.Cells[4, 1].Formula = "B3+C3";
w.Cells[4, 2].Value = "C3+D3";
pack.Save();
}
[Ignore]
[TestMethod]
public void RowStyle()
{
FileInfo newFile = new FileInfo(_worksheetPath + @"sample8.xlsx");
if (newFile.Exists)
{
newFile.Delete(); // ensures we create a new workbook
//newFile = new FileInfo(dir + @"sample8.xlsx");
}
ExcelPackage package = new ExcelPackage();
//Load the sheet with one string column, one date column and a few random numbers.
var ws = package.Workbook.Worksheets.Add("First line test");
ws.Cells[1, 1].Value = "1; 1";
ws.Cells[2, 1].Value = "2; 1";
ws.Cells[1, 2].Value = "1; 2";
ws.Cells[2, 2].Value = "2; 2";
ws.Row(1).Style.Font.Bold = true;
ws.Column(1).Style.Font.Bold = true;
package.SaveAs(newFile);
}
//[Ignore]
//[TestMethod]
public void HideTest()
{
var ws = _pck.Workbook.Worksheets.Add("Hidden");
ws.Cells["A1"].Value = "This workbook is hidden";
ws.Hidden = eWorkSheetHidden.Hidden;
}
//[Ignore]
//[TestMethod]
public void Hyperlink()
{
var ws = _pck.Workbook.Worksheets.Add("HyperLinks");
var hl = new ExcelHyperLink("G1", "Till G1");
hl.ToolTip = "Link to cell G1";
ws.Cells["A1"].Hyperlink = hl;
//ws.Cells["A2"].Hyperlink = new ExcelHyperLink("mailto:ecsomany@google:huszar", UriKind.Absolute); //Invalid URL will throw an Exception
}
//[Ignore]
//[TestMethod]
public void VeryHideTest()
{
var ws = _pck.Workbook.Worksheets.Add("VeryHidden");
ws.Cells["a1"].Value = "This workbook is hidden";
ws.Hidden = eWorkSheetHidden.VeryHidden;
}
//[Ignore]
//[TestMethod]
public void PrinterSettings()
{
var ws = _pck.Workbook.Worksheets.Add("Sod/Hydroseed");
ws.Cells[1, 1].Value = "1; 1";
ws.Cells[2, 1].Value = "2; 1";
ws.Cells[1, 2].Value = "1; 2";
ws.Cells[2, 2].Value = "2; 2";
ws.Cells[1, 1, 1, 2].AutoFilter = true;
ws.PrinterSettings.BlackAndWhite = true;
ws.PrinterSettings.ShowGridLines = true;
ws.PrinterSettings.ShowHeaders = true;
ws.PrinterSettings.PaperSize = ePaperSize.A4;
ws.PrinterSettings.RepeatRows = new ExcelAddress("1:1");
ws.PrinterSettings.RepeatColumns = new ExcelAddress("A:A");
ws.PrinterSettings.Draft = true;
var r = ws.Cells["A26"];
r.Value = "X";
r.Worksheet.Row(26).PageBreak = true;
ws.PrinterSettings.PrintArea = ws.Cells["A1:B2"];
ws.PrinterSettings.HorizontalCentered = true;
ws.PrinterSettings.VerticalCentered = true;
ws.Select(new ExcelAddress("3:4,E5:F6"));
ws = _pck.Workbook.Worksheets["RichText"];
ws.PrinterSettings.RepeatColumns = ws.Cells["A:B"];
ws.PrinterSettings.RepeatRows = ws.Cells["1:11"];
ws.PrinterSettings.TopMargin = 1M;
ws.PrinterSettings.LeftMargin = 1M;
ws.PrinterSettings.BottomMargin = 1M;
ws.PrinterSettings.RightMargin = 1M;
ws.PrinterSettings.Orientation = eOrientation.Landscape;
ws.PrinterSettings.PaperSize = ePaperSize.A4;
}
//[Ignore]
//[TestMethod]
public void StyleNameTest()
{
var ws = _pck.Workbook.Worksheets.Add("StyleNameTest");
ws.Cells[1, 1].Value = "R1 C1";
ws.Cells[1, 2].Value = "R1 C2";
ws.Cells[1, 3].Value = "R1 C3";
ws.Cells[2, 1].Value = "R2 C1";
ws.Cells[2, 2].Value = "R2 C2";
ws.Cells[2, 3].Value = "R2 C3";
ws.Cells[3, 1].Value = double.PositiveInfinity;
ws.Cells[3, 2].Value = double.NegativeInfinity;
ws.Cells[4, 1].CreateArrayFormula("A1+B1");
var ns = _pck.Workbook.Styles.CreateNamedStyle("TestStyle");
ns.Style.Font.Bold = true;
ws.Cells.Style.Locked = true;
ws.Cells["A1:C1"].StyleName = "TestStyle";
ws.DefaultRowHeight = 35;
ws.Cells["A1:C4"].Style.Locked = false;
ws.Protection.IsProtected = true;
}
//[Ignore]
//[TestMethod]
public void ValueError()
{
var ws = _pck.Workbook.Worksheets.Add("ValueError");
ws.Cells[1, 1].Value = "Domestic Violence&#xB; and the Professional";
var rt = ws.Cells[1, 2].RichText.Add("Domestic Violence&#xB; and the Professional 2");
TestContext.WriteLine(rt.Bold.ToString());
rt.Bold = true;
TestContext.WriteLine(rt.Bold.ToString());
}
//[Ignore]
//[TestMethod]
public void FormulaError()
{
var ws = _pck.Workbook.Worksheets.Add("FormulaError");
ws.Cells["D5"].Formula = "COUNTIF(A1:A100,\"Miss\")";
ws.Cells["A1:K3"].Formula = "A3+A4";
ws.Cells["A4"].FormulaR1C1 = "+ROUNDUP(RC[1]/10,0)*10";
ws = _pck.Workbook.Worksheets.Add("Sheet-RC1");
ws.Cells["A4"].FormulaR1C1 = "+ROUNDUP('Sheet-RC1'!RC[1]/10,0)*10";
//ws.Cells["B2:I2"].Formula = ""; //Error
}
[TestMethod, Ignore]
public void FormulaArray()
{
_pck = new ExcelPackage();
var ws = _pck.Workbook.Worksheets.Add("FormulaError");
ws.Cells["E2:E5"].CreateArrayFormula("FREQUENCY(B2:B18,C2:C5)");
_pck.SaveAs(new FileInfo("c:\\temp\\arrayformula.xlsx"));
}
//[Ignore]
//[TestMethod]
public void PictureURL()
{
var ws = _pck.Workbook.Worksheets.Add("Pic URL");
ExcelHyperLink hl = new ExcelHyperLink("http://epplus.codeplex.com");
hl.ToolTip = "Screen Tip";
ws.Drawings.AddPicture("Pic URI", Properties.Resources.Test1, hl);
}
[TestMethod]
public void PivotTableTest()
{
_pck = new ExcelPackage();
var ws = _pck.Workbook.Worksheets.Add("PivotTable");
ws.Cells["A1"].LoadFromArrays(new object[][] { new[] { "A", "B", "C", "D" } });
ws.Cells["A2"].LoadFromArrays(new object[][]
{
new object [] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },
new object [] { 9, 8, 7 ,6, 5, 4, 3, 2, 1, 0 },
new object [] { 1, 1, 2, 3, 5, 8, 13, 21, 34, 55}
});
var table = ws.Tables.Add(ws.Cells["A1:D4"], "PivotData");
ws.PivotTables.Add(ws.Cells["G1"], ws.Cells["A1:D4"], "PivotTable");
Assert.AreEqual("PivotStyleMedium9", ws.PivotTables["PivotTable"].StyleName);
}
[TestMethod]
[ExpectedException(typeof(ArgumentException))]
public void TestTableNameCanNotStartsWithNumber()
{
var ws = _pck.Workbook.Worksheets.Add("Table");
var tbl = ws.Tables.Add(ws.Cells["A1"], "5TestTable");
}
[TestMethod]
[ExpectedException(typeof(ArgumentException))]
public void TestTableNameCanNotContainWhiteSpaces()
{
var ws = _pck.Workbook.Worksheets.Add("Table");
var tbl = ws.Tables.Add(ws.Cells["A1"], "Test Table");
}
[TestMethod]
public void TestTableNameCanStartsWithBackSlash()
{
var ws = _pck.Workbook.Worksheets.Add("Table");
var tbl = ws.Tables.Add(ws.Cells["A1"], "\\TestTable");
}
[TestMethod]
public void TestTableNameCanStartsWithUnderscore()
{
var ws = _pck.Workbook.Worksheets.Add("Table");
var tbl = ws.Tables.Add(ws.Cells["A1"], "_TestTable");
}
//[Ignore]
//[TestMethod]
public void TableTest()
{
var ws = _pck.Workbook.Worksheets.Add("Table");
ws.Cells["B1"].Value = 123;
var tbl = ws.Tables.Add(ws.Cells["B1:P12"], "TestTable");
tbl.TableStyle = OfficeOpenXml.Table.TableStyles.Custom;
tbl.ShowFirstColumn = true;
tbl.ShowTotal = true;
tbl.ShowHeader = true;
tbl.ShowLastColumn = true;
tbl.ShowFilter = false;
Assert.AreEqual(tbl.ShowFilter, false);
ws.Cells["K2"].Value = 5;
ws.Cells["J3"].Value = 4;
tbl.Columns[8].TotalsRowFunction = OfficeOpenXml.Table.RowFunctions.Sum;
tbl.Columns[9].TotalsRowFormula = string.Format("SUM([{0}])", tbl.Columns[9].Name);
tbl.Columns[14].CalculatedColumnFormula = "TestTable[[#This Row],[123]]+TestTable[[#This Row],[Column2]]";
ws.Cells["B2"].Value = 1;
ws.Cells["B3"].Value = 2;
ws.Cells["B4"].Value = 3;
ws.Cells["B5"].Value = 4;
ws.Cells["B6"].Value = 5;
ws.Cells["B7"].Value = 6;
ws.Cells["B8"].Value = 7;
ws.Cells["B9"].Value = 8;
ws.Cells["B10"].Value = 9;
ws.Cells["B11"].Value = 10;
ws.Cells["B12"].Value = 11;
ws.Cells["C7"].Value = "Table test";
ws.Cells["C8"].Style.Fill.PatternType = ExcelFillStyle.Solid;
ws.Cells["C8"].Style.Fill.BackgroundColor.SetColor(Color.Red);
tbl = ws.Tables.Add(ws.Cells["a12:a13"], "");
tbl = ws.Tables.Add(ws.Cells["C16:Y35"], "");
tbl.TableStyle = OfficeOpenXml.Table.TableStyles.Medium14;
tbl.ShowFirstColumn = true;
tbl.ShowLastColumn = true;
tbl.ShowColumnStripes = true;
Assert.AreEqual(tbl.ShowFilter, true);
tbl.Columns[2].Name = "Test Column Name";
ws.Cells["G50"].Value = "Timespan";
ws.Cells["G51"].Value = new DateTime(new TimeSpan(1, 1, 10).Ticks); //new DateTime(1899, 12, 30, 1, 1, 10);
ws.Cells["G52"].Value = new DateTime(1899, 12, 30, 2, 3, 10);
ws.Cells["G53"].Value = new DateTime(1899, 12, 30, 3, 4, 10);
ws.Cells["G54"].Value = new DateTime(1899, 12, 30, 4, 5, 10);
ws.Cells["G51:G55"].Style.Numberformat.Format = "HH:MM:SS";
tbl = ws.Tables.Add(ws.Cells["G50:G54"], "");
tbl.ShowTotal = true;
tbl.ShowFilter = false;
tbl.Columns[0].TotalsRowFunction = OfficeOpenXml.Table.RowFunctions.Sum;
}
[TestMethod]
public void TableDeleteTest()
{
using (var pkg = new ExcelPackage())
{
var wb = pkg.Workbook;
var sheets = new[]
{
wb.Worksheets.Add("WorkSheet A"),
wb.Worksheets.Add("WorkSheet B")
};
for (int i = 1; i <= 4; i++)
{
var cell = sheets[0].Cells[1, i];
cell.Value = cell.Address + "_";
cell = sheets[1].Cells[1, i];
cell.Value = cell.Address + "_";
}
for (int i = 6; i <= 11; i++)
{
var cell = sheets[0].Cells[3, i];
cell.Value = cell.Address + "_";
cell = sheets[1].Cells[3, i];
cell.Value = cell.Address + "_";
}
var tables = new[]
{
sheets[1].Tables.Add(sheets[1].Cells["A1:D73"], "Tablea"),
sheets[0].Tables.Add(sheets[0].Cells["A1:D73"], "Table2"),
sheets[1].Tables.Add(sheets[1].Cells["F3:K10"], "Tableb"),
sheets[0].Tables.Add(sheets[0].Cells["F3:K10"], "Table3"),
};
Assert.AreEqual(5, wb._nextTableID);
Assert.AreEqual(1, tables[0].Id);
Assert.AreEqual(2, tables[1].Id);
try
{
sheets[0].Tables.Delete("Tablea");
Assert.Fail("ArgumentException should have been thrown.");
}
catch (ArgumentOutOfRangeException) { }
sheets[1].Tables.Delete("Tablea");
Assert.AreEqual(1, tables[1].Id);
Assert.AreEqual(2, tables[2].Id);
try
{
sheets[1].Tables.Delete(4);
Assert.Fail("ArgumentException should have been thrown.");
}
catch (ArgumentOutOfRangeException) { }
var range = sheets[0].Cells[sheets[0].Tables[1].Address.Address];
sheets[0].Tables.Delete(1, true);
foreach (var cell in range)
{
Assert.IsNull(cell.Value);
}
}
}
//[Ignore]
//[TestMethod]
public void CopyTable()
{
_pck.Workbook.Worksheets.Copy("File4", "Copied table");
}
//[Ignore]
//[TestMethod]
public void CopyRange()
{
var ws = _pck.Workbook.Worksheets.Add("CopyTest");
ws.Cells["A1"].Value = "Single Cell";
ws.Cells["A2"].Value = "Merged Cells";
ws.Cells["A2:D30"].Merge = true;
ws.Cells["A1"].Style.Font.Bold = true;
ws.Cells["G4:H5"].Merge = true;
ws.Cells["B3:C5"].Copy(ws.Cells["G4"]);
}
//[Ignore]
//[TestMethod]
public void CopyMergedRange()
{
var ws = _pck.Workbook.Worksheets.Add("CopyMergedRangeTest");
ws.Cells["A11:C11"].Merge = true;
ws.Cells["A12:C12"].Merge = true;
var source = ws.Cells["A11:C12"];
var target = ws.Cells["A21"];
source.Copy(target);
var a21 = ws.Cells[21, 1];
var a22 = ws.Cells[22, 1];
Assert.IsTrue(a21.Merge);
Assert.IsTrue(a22.Merge);
//Assert.AreNotEqual(a21.MergeId, a22.MergeId);
}
[Ignore]
[TestMethod]
public void CopyPivotTable()
{
_pck.Workbook.Worksheets.Copy("Pivot-Group Date", "Copied Pivottable 1");
_pck.Workbook.Worksheets.Copy("Pivot-Group Number", "Copied Pivottable 2");
}
[Ignore]
[TestMethod]
public void Stylebug()
{
ExcelPackage p = new ExcelPackage(new FileInfo(@"c:\temp\FullProjecte.xlsx"));
var ws = p.Workbook.Worksheets.First();
ws.Cells[12, 1].Value = 0;
ws.Cells[12, 2].Value = new DateTime(2010, 9, 14);
ws.Cells[12, 3].Value = "Federico Lois";
ws.Cells[12, 4].Value = "Nakami";
ws.Cells[12, 5].Value = "Hores";
ws.Cells[12, 7].Value = 120;
ws.Cells[12, 8].Value = "A definir";
ws.Cells[12, 9].Value = new DateTime(2010, 9, 14);
ws.Cells[12, 10].Value = new DateTime(2010, 9, 14);
ws.Cells[12, 11].Value = "Transferència";
ws.InsertRow(13, 1, 12);
ws.Cells[13, 1].Value = 0;
ws.Cells[13, 2].Value = new DateTime(2010, 9, 14);
ws.Cells[13, 3].Value = "Federico Lois";
ws.Cells[13, 4].Value = "Nakami";
ws.Cells[13, 5].Value = "Hores";
ws.Cells[13, 7].Value = 120;
ws.Cells[13, 8].Value = "A definir";
ws.Cells[13, 9].Value = new DateTime(2010, 9, 14);
ws.Cells[13, 10].Value = new DateTime(2010, 9, 14);
ws.Cells[13, 11].Value = "Transferència";
ws.InsertRow(14, 1, 13);
ws.InsertRow(19, 1, 19);
ws.InsertRow(26, 1, 26);
ws.InsertRow(33, 1, 33);
p.SaveAs(new FileInfo(@"c:\temp\FullProjecte_new.xlsx"));
}
[Ignore]
[TestMethod]
public void ReadBug()
{
using (var package = new ExcelPackage(new FileInfo(@"c:\temp\error.xlsx")))
{
var fulla = package.Workbook.Worksheets.FirstOrDefault();
var r = fulla == null ? null : fulla.Cells["a:a"]
.Where(t => !string.IsNullOrWhiteSpace(t.Text)).Select(cell => cell.Value.ToString())
.ToList();
}
}
//[Ignore]
//[TestMethod]
public void FormulaOverwrite()
{
var ws = _pck.Workbook.Worksheets.Add("FormulaOverwrite");
//Inside
ws.Cells["A1:G12"].Formula = "B1+C1";
ws.Cells["B2:C3"].Formula = "G2+E1";
//Top bottom overwrite
ws.Cells["A14:G26"].Formula = "B1+C1+D1";
ws.Cells["B13:C28"].Formula = "G2+E1";
//Top bottom overwrite
ws.Cells["B30:E42"].Formula = "B1+C1+$D$1";
ws.Cells["A32:H33"].Formula = "G2+E1";
ws.Cells["A50:A59"].CreateArrayFormula("C50+D50");
ws.Cells["A1"].Value = "test";
ws.Cells["A15"].Value = "Värde";
ws.Cells["C12"].AddComment("Test", "JJOD");
ws.Cells["D12:I12"].Merge = true;
ws.Cells["D12:I12"].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Left;
ws.Cells["D12:I12"].Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Top;
ws.Cells["D12:I12"].Style.WrapText = true;
ws.Cells["F1:F3"].Formula = "F2+F3";
ws.Cells["J1:J3"].Formula = "F2+F3";
ws.Cells["F1:F3"].Formula = "F5+F6"; //Overwrite same range
}
//[Ignore]
//[TestMethod]
public void DefinedName()
{
var ws = _pck.Workbook.Worksheets.Add("Names");
ws.Names.Add("RefError", ws.Cells["#REF!"]);
ws.Cells["A1"].Value = "Test";
ws.Cells["A1"].Style.Font.Size = 8.5F;
ws.Names.Add("Address", ws.Cells["A2:A3"]);
ws.Cells["Address"].Value = 1;
ws.Names.AddValue("Value", 5);
ws.Names.Add("FullRow", ws.Cells["2:2"]);
ws.Names.Add("FullCol", ws.Cells["A:A"]);
//ws.Names["Value"].Style.Border.Bottom.Color.SetColor(Color.Black);
ws.Names.AddFormula("Formula", "Names!A2+Names!A3+Names!Value");
}
[Ignore]
[TestMethod]
public void URL()
{
var p = new ExcelPackage(new FileInfo(@"c:\temp\url.xlsx"));
foreach (var ws in p.Workbook.Worksheets)
{
}
p.SaveAs(new FileInfo(@"c:\temp\urlsaved.xlsx"));
}
//[TestMethod]
public void LoadDataReader()
{
if (_pck == null) _pck = new ExcelPackage();
var ws = _pck.Workbook.Worksheets.Add("Loaded DataReader");
ExcelRangeBase range;
using (var dt = new DataTable())
{
dt.Columns.Add("String", typeof(string));
dt.Columns.Add("Int", typeof(int));
dt.Columns.Add("Bool", typeof(bool));
dt.Columns.Add("Double", typeof(double));
var dr = dt.NewRow();
dr[0] = "Row1";
dr[1] = 1;
dr[2] = true;
dr[3] = 1.5;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = "Row2";
dr[1] = 2;
dr[2] = false;
dr[3] = 2.25;
dt.Rows.Add(dr);
//dr = dt.NewRow();
//dr[0] = "Row3";
//dr[1] = 3;
//dr[2] = true;
//dr[3] = 3.125;
//dt.Rows.Add(dr);
using (var reader = dt.CreateDataReader())
{
range = ws.Cells["A1"].LoadFromDataReader(reader, true, "My_Table",
OfficeOpenXml.Table.TableStyles.Medium5);
}
Assert.AreEqual(1, range.Start.Column);
Assert.AreEqual(4, range.End.Column);
Assert.AreEqual(1, range.Start.Row);
Assert.AreEqual(3, range.End.Row);
using (var reader = dt.CreateDataReader())
{
range = ws.Cells["A5"].LoadFromDataReader(reader, false, "My_Table2",
OfficeOpenXml.Table.TableStyles.Medium5);
}
Assert.AreEqual(1, range.Start.Column);
Assert.AreEqual(4, range.End.Column);
Assert.AreEqual(5, range.Start.Row);
Assert.AreEqual(6, range.End.Row);
}
}
//[TestMethod, Ignore]
public void LoadDataTable()
{
if (_pck == null) _pck = new ExcelPackage();
var ws = _pck.Workbook.Worksheets.Add("Loaded DataTable");
var dt = new DataTable();
dt.Columns.Add("String", typeof(string));
dt.Columns.Add("Int", typeof(int));
dt.Columns.Add("Bool", typeof(bool));
dt.Columns.Add("Double", typeof(double));
var dr = dt.NewRow();
dr[0] = "Row1";
dr[1] = 1;
dr[2] = true;
dr[3] = 1.5;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = "Row2";
dr[1] = 2;
dr[2] = false;
dr[3] = 2.25;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = "Row3";
dr[1] = 3;
dr[2] = true;
dr[3] = 3.125;
dt.Rows.Add(dr);
ws.Cells["A1"].LoadFromDataTable(dt, true, OfficeOpenXml.Table.TableStyles.Medium5);
//worksheet.Cells[startRow, 7, worksheet.Dimension.End.Row, 7].FormulaR1C1 = "=IF(RC[-2]=0,0,RC[-1]/RC[-2])";
ws.Tables[0].Columns[1].TotalsRowFunction = OfficeOpenXml.Table.RowFunctions.Sum;
ws.Tables[0].ShowTotal = true;
}
[Ignore]
[TestMethod]
public void LoadEmptyDataTable()
{
if (_pck == null) _pck = new ExcelPackage();
var ws = _pck.Workbook.Worksheets.Add("Loaded Empty DataTable");
var dt = new DataTable();
dt.Columns.Add(new DataColumn("col1"));
dt.Columns.Add(new DataColumn("col2"));
ws.Cells["A1"].LoadFromDataTable(dt, true);
ws.Cells["D1"].LoadFromDataTable(dt, false);
}
[TestMethod]
public void LoadText_Bug15015()
{
var package = new ExcelPackage();
var ws = package.Workbook.Worksheets.Add("Loaded Text");
ws.Cells["A1"].LoadFromText("\"text with eol,\r\n in a cell\",\"other value\"", new ExcelTextFormat { TextQualifier = '"', EOL = ",\r\n", Delimiter = ',' });
}
[TestMethod]
public void LoadText_Bug15015_Negative()
{
var package = new ExcelPackage();
var ws = package.Workbook.Worksheets.Add("Loaded Text");
bool exceptionThrown = false;
try
{
ws.Cells["A1"].LoadFromText("\"text with eol,\r\n",
new ExcelTextFormat { TextQualifier = '"', EOL = ",\r\n", Delimiter = ',' });
}
catch (Exception e)
{
Assert.AreEqual("Text delimiter is not closed in line : \"text with eol", e.Message, "Exception message");
exceptionThrown = true;
}
Assert.IsTrue(exceptionThrown, "Exception thrown");
}
//[Ignore]
//[TestMethod]
public void LoadText()
{
var ws = _pck.Workbook.Worksheets.Add("Loaded Text");
ws.Cells["A1"].LoadFromText("1.2");
ws.Cells["A2"].LoadFromText("1,\"Test av data\",\"12,2\",\"\"Test\"\"");
ws.Cells["A3"].LoadFromText("\"1,3\",\"Test av \"\"data\",\"12,2\",\"Test\"\"\"", new ExcelTextFormat() { TextQualifier = '"' });
ws = _pck.Workbook.Worksheets.Add("File1");
// ws.Cells["A1"].LoadFromText(new FileInfo(@"c:\temp\csv\et1c1004.csv"), new ExcelTextFormat() {SkipLinesBeginning=3,SkipLinesEnd=1, EOL="\n"});
ws = _pck.Workbook.Worksheets.Add("File2");
//ws.Cells["A1"].LoadFromText(new FileInfo(@"c:\temp\csv\etiv2812.csv"), new ExcelTextFormat() { SkipLinesBeginning = 3, SkipLinesEnd = 1, EOL = "\n" });
//ws = _pck.Workbook.Worksheets.Add("File3");
//ws.Cells["A1"].LoadFromText(new FileInfo(@"c:\temp\csv\last_gics.txt"), new ExcelTextFormat() { SkipLinesBeginning = 1, Delimiter='|'});
ws = _pck.Workbook.Worksheets.Add("File4");
//ws.Cells["A1"].LoadFromText(new FileInfo(@"c:\temp\csv\20060927.custom_open_positions.cdf.SPP"), new ExcelTextFormat() { SkipLinesBeginning = 2, SkipLinesEnd=2, TextQualifier='"', DataTypes=new eDataTypes[] {eDataTypes.Number,eDataTypes.String, eDataTypes.Number, eDataTypes.Number, eDataTypes.Number, eDataTypes.String, eDataTypes.Number, eDataTypes.Number, eDataTypes.String, eDataTypes.String, eDataTypes.Number, eDataTypes.Number, eDataTypes.Number}},
// OfficeOpenXml.Table.TableStyles.Medium27, true);
ws.Cells["A1"].LoadFromText("1,\"Test\",\"\",\"\"\"\",3", new ExcelTextFormat() { TextQualifier = '\"' });
var style = _pck.Workbook.Styles.CreateNamedStyle("RedStyle");
style.Style.Fill.PatternType = ExcelFillStyle.Solid;
style.Style.Fill.BackgroundColor.SetColor(Color.Red);
//var tbl = ws.Tables[ws.Tables.Count - 1];
//tbl.ShowTotal = true;
//tbl.TotalsRowCellStyle = "RedStyle";
//tbl.HeaderRowCellStyle = "RedStyle";
}
[TestMethod]
public void TestRepeatRowsAndColumnsTest()
{
var p = new ExcelPackage();
var w = p.Workbook.Worksheets.Add("RepeatRowsAndColumnsTest");
w.PrinterSettings.RepeatColumns = new ExcelAddress("A:A");
w.PrinterSettings.RepeatRows = new ExcelAddress("1:1");
Assert.IsNotNull(w.PrinterSettings.RepeatColumns);
Assert.IsNotNull(w.PrinterSettings.RepeatRows); // Fails!
}
//[Ignore]
//[TestMethod]
public void Merge()
{
var ws = _pck.Workbook.Worksheets.Add("Merge");
ws.Cells["A1:A4"].Merge = true;
ws.Cells["C1:C4,C8:C12"].Merge = true;
ws.Cells["D13:E18,G5,U32:U45"].Merge = true;
ws.Cells["D13:E18,G5,U32:U45"].Style.WrapText = true;
//ws.Cells["50:52"].Merge = true;
ws.Cells["AA:AC"].Merge = true;
ws.SetValue(13, 4, "Merged\r\nnew row");
}
//[Ignore]
//[TestMethod]
public void DefaultColWidth()
{
var ws = _pck.Workbook.Worksheets.Add("DefColWidth");
ws.DefaultColWidth = 45;
}
//[Ignore]
//[TestMethod]
public void LoadArray()
{
var ws = _pck.Workbook.Worksheets.Add("Loaded Array");
List<object[]> testArray = new List<object[]>() { new object[] { 3, 4, 5, 6 }, new string[] { "Test1", "test", "5", "6" } };
ws.Cells["A1"].LoadFromArrays(testArray);
}
[Ignore]
[TestMethod]
public void DefColWidthBug()
{
ExcelWorkbook book = _pck.Workbook;
ExcelWorksheet sheet = book.Worksheets.Add("Gebruikers");
sheet.DefaultColWidth = 25d;
//sheet.defaultRowHeight = 15d; // needed to make sure the resulting file is valid!
// Create the header row
sheet.Cells[1, 1].Value = "Afdeling code";
sheet.Cells[1, 2].Value = "Afdeling naam";
sheet.Cells[1, 3].Value = "Voornaam";
sheet.Cells[1, 4].Value = "Tussenvoegsel";
sheet.Cells[1, 5].Value = "Achternaam";
sheet.Cells[1, 6].Value = "Gebruikersnaam";
sheet.Cells[1, 7].Value = "E-mail adres";
ExcelRange headerRow = sheet.Cells[1, 1, 1, 7];
headerRow.Style.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
headerRow.Style.Font.Size = 12;
headerRow.Style.Font.Bold = true;
//// Create a context for retrieving the users
//using (PalauDataContext context = new PalauDataContext())
//{
// int currentRow = 2;
// // iterate through all users in the export and add their info
// // to the worksheet.
// foreach (vw_ExportUser user in
// context.vw_ExportUsers
// .OrderBy(u => u.DepartmentCode)
// .ThenBy(u => u.AspNetUserName))
// {
// sheet.Cells[currentRow, 1].Value = user.DepartmentCode;
// sheet.Cells[currentRow, 2].Value = user.DepartmentName;
// sheet.Cells[currentRow, 3].Value = user.UserFirstName;
// sheet.Cells[currentRow, 4].Value = user.UserInfix;
// sheet.Cells[currentRow, 5].Value = user.UserSurname;
// sheet.Cells[currentRow, 6].Value = user.AspNetUserName;
// sheet.Cells[currentRow, 7].Value = user.AspNetEmail;
// currentRow++;
// }
//}
// return the filled Excel workbook
// return pkg
}
[Ignore]
[TestMethod]
public void CloseProblem()
{
ExcelPackage pck = new ExcelPackage();
var ws = pck.Workbook.Worksheets.Add("Manual Receipts");
ws.Cells["A1"].Value = " SpaceNeedle Manual Receipt Form";
using (ExcelRange r = ws.Cells["A1:F1"])
{
r.Merge = true;
r.Style.Font.SetFromFont(new Font("Arial", 18, FontStyle.Italic));
r.Style.Font.Color.SetColor(Color.DarkRed);
r.Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.CenterContinuous;
//r.Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid;
//r.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(23, 55, 93));
}
// ws.Column(1).BestFit = true;
ws.Column(1).Width = 17;
ws.Column(5).Width = 20;
ws.Cells["A2"].Value = "Date Produced";
ws.Cells["A2"].Style.Font.Bold = true;
ws.Cells["B2"].Value = DateTime.Now.ToShortDateString();
ws.Cells["D2"].Value = "Quantity";
ws.Cells["D2"].Style.Font.Bold = true;
ws.Cells["E2"].Value = "txt";
ws.Cells["C4"].Value = "Receipt Number";
ws.Cells["C4"].Style.WrapText = true;
ws.Cells["C4"].Style.Font.Bold = true;
int rowNbr = 5;
for (int entryNbr = 1; entryNbr <= 1; entryNbr += 1)
{
ws.Cells["B" + rowNbr].Value = entryNbr;
ws.Cells["C" + rowNbr].Value = 1 + entryNbr - 1;
rowNbr += 1;
}
pck.SaveAs(new FileInfo(".\\test.xlsx"));
}
[Ignore]
[TestMethod]
public void OpenXlsm()
{
ExcelPackage p = new ExcelPackage(new FileInfo("c:\\temp\\cs1.xlsx"));
int c = p.Workbook.Worksheets.Count;
p.Save();
}
[Ignore]
[TestMethod]
public void Mergebug()
{
var xlPackage = new ExcelPackage();
var xlWorkSheet = xlPackage.Workbook.Worksheets.Add("Test Sheet");
var Cells = xlWorkSheet.Cells;
var TitleCell = Cells[1, 1, 1, 3];
TitleCell.Merge = true;
TitleCell.Value = "Test Spreadsheet";
Cells[2, 1].Value = "Test Sub Heading\r\ntest" + (char)22;
for (int i = 0; i < 256; i++)
{
Cells[3, i + 1].Value = (char)i;
}
Cells[2, 1].Style.WrapText = true;
xlWorkSheet.Row(1).Height = 50;
xlPackage.SaveAs(new FileInfo("c:\\temp\\Mergebug.xlsx"));
}
[Ignore]
[TestMethod]
public void OpenProblem()
{
var xlPackage = new ExcelPackage();
var ws = xlPackage.Workbook.Worksheets.Add("W1");
xlPackage.Workbook.Worksheets.Add("W2");
ws.Cells["A1:A10"].Formula = "W2!A1+C1";
ws.Cells["B1:B10"].FormulaR1C1 = "W2!R1C1+C1";
xlPackage.SaveAs(new FileInfo("c:\\temp\\Mergebug.xlsx"));
}
[Ignore]
[TestMethod]
public void ProtectionProblem()
{
var xlPackage = new ExcelPackage(new FileInfo("c:\\temp\\CovenantsCheckReportTemplate.xlsx"));
var ws = xlPackage.Workbook.Worksheets.First();
ws.Protection.SetPassword("Test");
xlPackage.SaveAs(new FileInfo("c:\\temp\\Mergebug.xlsx"));
}
[Ignore]
[TestMethod]
public void Nametest()
{
var pck = new ExcelPackage(new FileInfo("c:\\temp\\names.xlsx"));
var ws = pck.Workbook.Worksheets.First();
ws.Cells["H37"].Formula = "\"Test\"";
pck.SaveAs(new FileInfo(@"c:\\temp\\nametest_new.xlsx"));
}
//[Ignore]
//[TestMethod]
public void CreatePivotTable()
{
var wsPivot1 = _pck.Workbook.Worksheets.Add("Rows-Data on columns");
var wsPivot2 = _pck.Workbook.Worksheets.Add("Rows-Data on rows");
var wsPivot3 = _pck.Workbook.Worksheets.Add("Columns-Data on columns");
var wsPivot4 = _pck.Workbook.Worksheets.Add("Columns-Data on rows");
var wsPivot5 = _pck.Workbook.Worksheets.Add("Columns/Rows-Data on columns");
var wsPivot6 = _pck.Workbook.Worksheets.Add("Columns/Rows-Data on rows");
var wsPivot7 = _pck.Workbook.Worksheets.Add("Rows/Page-Data on Columns");
var wsPivot8 = _pck.Workbook.Worksheets.Add("Pivot-Group Date");
var wsPivot9 = _pck.Workbook.Worksheets.Add("Pivot-Group Number");
var ws = _pck.Workbook.Worksheets.Add("Data");
ws.Cells["K1"].Value = "Item";
ws.Cells["L1"].Value = "Category";
ws.Cells["M1"].Value = "Stock";
ws.Cells["N1"].Value = "Price";
ws.Cells["O1"].Value = "Date for grouping";
ws.Cells["K2"].Value = "Crowbar";
ws.Cells["L2"].Value = "Hardware";
ws.Cells["M2"].Value = 12;
ws.Cells["N2"].Value = 85.2;
ws.Cells["O2"].Value = new DateTime(2010, 1, 31);
ws.Cells["K3"].Value = "Crowbar";
ws.Cells["L3"].Value = "Hardware";
ws.Cells["M3"].Value = 15;
ws.Cells["N3"].Value = 12.2;
ws.Cells["O3"].Value = new DateTime(2010, 2, 28);
ws.Cells["K4"].Value = "Hammer";
ws.Cells["L4"].Value = "Hardware";
ws.Cells["M4"].Value = 550;
ws.Cells["N4"].Value = 72.7;
ws.Cells["O4"].Value = new DateTime(2010, 3, 31);
ws.Cells["K5"].Value = "Hammer";
ws.Cells["L5"].Value = "Hardware";
ws.Cells["M5"].Value = 120;
ws.Cells["N5"].Value = 11.3;
ws.Cells["O5"].Value = new DateTime(2010, 4, 30);
ws.Cells["K6"].Value = "Crowbar";
ws.Cells["L6"].Value = "Hardware";
ws.Cells["M6"].Value = 120;
ws.Cells["N6"].Value = 173.2;
ws.Cells["O6"].Value = new DateTime(2010, 5, 31);
ws.Cells["K7"].Value = "Hammer";
ws.Cells["L7"].Value = "Hardware";
ws.Cells["M7"].Value = 1;
ws.Cells["N7"].Value = 4.2;
ws.Cells["O7"].Value = new DateTime(2010, 6, 30);
ws.Cells["K8"].Value = "Saw";
ws.Cells["L8"].Value = "Hardware";
ws.Cells["M8"].Value = 4;
ws.Cells["N8"].Value = 33.12;
ws.Cells["O8"].Value = new DateTime(2010, 6, 28);
ws.Cells["K9"].Value = "Screwdriver";
ws.Cells["L9"].Value = "Hardware";
ws.Cells["M9"].Value = 1200;
ws.Cells["N9"].Value = 45.2;
ws.Cells["O9"].Value = new DateTime(2010, 8, 31);
ws.Cells["K10"].Value = "Apple";
ws.Cells["L10"].Value = "Groceries";
ws.Cells["M10"].Value = 807;
ws.Cells["N10"].Value = 1.2;
ws.Cells["O10"].Value = new DateTime(2010, 9, 30);
ws.Cells["K11"].Value = "Butter";
ws.Cells["L11"].Value = "Groceries";
ws.Cells["M11"].Value = 52;
ws.Cells["N11"].Value = 7.2;
ws.Cells["O11"].Value = new DateTime(2010, 10, 31);
ws.Cells["O2:O11"].Style.Numberformat.Format = "yyyy-MM-dd";
var pt = wsPivot1.PivotTables.Add(wsPivot1.Cells["A1"], ws.Cells["K1:N11"], "Pivottable1");
pt.GrandTotalCaption = "Total amount";
pt.RowFields.Add(pt.Fields[1]);
pt.RowFields.Add(pt.Fields[0]);
pt.DataFields.Add(pt.Fields[3]);
pt.DataFields.Add(pt.Fields[2]);
pt.DataFields[0].Function = DataFieldFunctions.Product;
pt.DataOnRows = false;
pt = wsPivot2.PivotTables.Add(wsPivot2.Cells["A1"], ws.Cells["K1:N11"], "Pivottable2");
pt.RowFields.Add(pt.Fields[1]);
pt.RowFields.Add(pt.Fields[0]);
pt.DataFields.Add(pt.Fields[3]);
pt.DataFields.Add(pt.Fields[2]);
pt.DataFields[0].Function = DataFieldFunctions.Average;
pt.DataOnRows = true;
pt = wsPivot3.PivotTables.Add(wsPivot3.Cells["A1"], ws.Cells["K1:N11"], "Pivottable3");
pt.ColumnFields.Add(pt.Fields[1]);
pt.ColumnFields.Add(pt.Fields[0]);
pt.DataFields.Add(pt.Fields[3]);
pt.DataFields.Add(pt.Fields[2]);
pt.DataOnRows = false;
pt = wsPivot4.PivotTables.Add(wsPivot4.Cells["A1"], ws.Cells["K1:N11"], "Pivottable4");
pt.ColumnFields.Add(pt.Fields[1]);
pt.ColumnFields.Add(pt.Fields[0]);
pt.DataFields.Add(pt.Fields[3]);
pt.DataFields.Add(pt.Fields[2]);
pt.DataOnRows = true;
pt = wsPivot5.PivotTables.Add(wsPivot5.Cells["A1"], ws.Cells["K1:N11"], "Pivottable5");
pt.ColumnFields.Add(pt.Fields[1]);
pt.RowFields.Add(pt.Fields[0]);
pt.DataFields.Add(pt.Fields[3]);
pt.DataFields.Add(pt.Fields[2]);
pt.DataOnRows = false;
pt = wsPivot6.PivotTables.Add(wsPivot6.Cells["A1"], ws.Cells["K1:N11"], "Pivottable6");
pt.ColumnFields.Add(pt.Fields[1]);
pt.RowFields.Add(pt.Fields[0]);
pt.DataFields.Add(pt.Fields[3]);
pt.DataFields.Add(pt.Fields[2]);
pt.DataOnRows = true;
wsPivot6.Drawings.AddChart("Pivotchart6", OfficeOpenXml.Drawing.Chart.eChartType.BarStacked3D, pt);
pt = wsPivot7.PivotTables.Add(wsPivot7.Cells["A3"], ws.Cells["K1:N11"], "Pivottable7");
pt.PageFields.Add(pt.Fields[1]);
pt.RowFields.Add(pt.Fields[0]);
pt.DataFields.Add(pt.Fields[3]);
pt.DataFields.Add(pt.Fields[2]);
pt.DataOnRows = false;
pt.Fields[0].SubTotalFunctions = eSubTotalFunctions.Sum | eSubTotalFunctions.Max;
Assert.AreEqual(pt.Fields[0].SubTotalFunctions, eSubTotalFunctions.Sum | eSubTotalFunctions.Max);
pt.Fields[0].SubTotalFunctions = eSubTotalFunctions.Sum | eSubTotalFunctions.Product | eSubTotalFunctions.StdDevP;
Assert.AreEqual(pt.Fields[0].SubTotalFunctions, eSubTotalFunctions.Sum | eSubTotalFunctions.Product | eSubTotalFunctions.StdDevP);
pt.Fields[0].SubTotalFunctions = eSubTotalFunctions.None;
Assert.AreEqual(pt.Fields[0].SubTotalFunctions, eSubTotalFunctions.None);
pt.Fields[0].SubTotalFunctions = eSubTotalFunctions.Default;
Assert.AreEqual(pt.Fields[0].SubTotalFunctions, eSubTotalFunctions.Default);
pt.Fields[0].Sort = eSortType.Descending;
pt.TableStyle = OfficeOpenXml.Table.TableStyles.Medium14;
pt = wsPivot8.PivotTables.Add(wsPivot8.Cells["A3"], ws.Cells["K1:O11"], "Pivottable8");
pt.RowFields.Add(pt.Fields[1]);
pt.RowFields.Add(pt.Fields[4]);
pt.Fields[4].AddDateGrouping(eDateGroupBy.Years | eDateGroupBy.Months | eDateGroupBy.Days | eDateGroupBy.Quarters, new DateTime(2010, 01, 31), new DateTime(2010, 11, 30));
pt.RowHeaderCaption = "År";
pt.Fields[4].Name = "Dag";
pt.Fields[5].Name = "Månad";
pt.Fields[6].Name = "Kvartal";
pt.GrandTotalCaption = "Totalt";
pt.DataFields.Add(pt.Fields[3]);
pt.DataFields.Add(pt.Fields[2]);
pt.DataOnRows = true;
pt = wsPivot9.PivotTables.Add(wsPivot9.Cells["A3"], ws.Cells["K1:N11"], "Pivottable9");
pt.PageFields.Add(pt.Fields[1]);
pt.RowFields.Add(pt.Fields[3]);
pt.RowFields[0].AddNumericGrouping(-3.3, 5.5, 4.0);
pt.DataFields.Add(pt.Fields[2]);
pt.DataOnRows = false;
pt.TableStyle = OfficeOpenXml.Table.TableStyles.Medium14;
pt = wsPivot8.PivotTables.Add(wsPivot8.Cells["H3"], ws.Cells["K1:O11"], "Pivottable10");
pt.RowFields.Add(pt.Fields[1]);
pt.RowFields.Add(pt.Fields[4]);
pt.Fields[4].AddDateGrouping(7, new DateTime(2010, 01, 31), new DateTime(2010, 11, 30));
pt.RowHeaderCaption = "Veckor";
pt.GrandTotalCaption = "Totalt";
pt = wsPivot8.PivotTables.Add(wsPivot8.Cells["A60"], ws.Cells["K1:O11"], "Pivottable11");
pt.RowFields.Add(pt.Fields["Category"]);
pt.RowFields.Add(pt.Fields["Item"]);
pt.RowFields.Add(pt.Fields["Date for grouping"]);
pt.DataFields.Add(pt.Fields[3]);
pt.DataFields.Add(pt.Fields[2]);
pt.DataOnRows = true;
}
[Ignore]
[TestMethod]
public void ReadPivotTable()
{
ExcelPackage pck = new ExcelPackage(new FileInfo(@"c:\temp\pivot\pivotforread.xlsx"));
var pivot1 = pck.Workbook.Worksheets[2].PivotTables[0];
Assert.AreEqual(pivot1.Fields.Count, 24);
Assert.AreEqual(pivot1.RowFields.Count, 3);
Assert.AreEqual(pivot1.DataFields.Count, 7);
Assert.AreEqual(pivot1.ColumnFields.Count, 0);
Assert.AreEqual(pivot1.DataFields[1].Name, "Sum of n3");
Assert.AreEqual(pivot1.Fields[2].Sort, eSortType.Ascending);
Assert.AreEqual(pivot1.DataOnRows, false);
var pivot2 = pck.Workbook.Worksheets[2].PivotTables[0];
var pivot3 = pck.Workbook.Worksheets[3].PivotTables[0];
var pivot4 = pck.Workbook.Worksheets[4].PivotTables[0];
var pivot5 = pck.Workbook.Worksheets[5].PivotTables[0];
pivot5.CacheDefinition.SourceRange = pck.Workbook.Worksheets[1].Cells["Q1:X300"];
var pivot6 = pck.Workbook.Worksheets[6].PivotTables[0];
pck.Workbook.Worksheets[6].Drawings.AddChart("chart1", OfficeOpenXml.Drawing.Chart.eChartType.ColumnStacked3D, pivot6);
pck.SaveAs(new FileInfo(@"c:\temp\pivot\pivotforread_new.xlsx"));
}
[Ignore]
[TestMethod]
public void CreatePivotMultData()
{
FileInfo fi = new FileInfo(@"c:\temp\test.xlsx");
ExcelPackage pck = new ExcelPackage(fi);
var ws = pck.Workbook.Worksheets.Add("Data");
var pv = pck.Workbook.Worksheets.Add("Pivot");
ws.Cells["A1"].Value = "Data1";
ws.Cells["B1"].Value = "Data2";
ws.Cells["A2"].Value = "1";
ws.Cells["B2"].Value = "2";
ws.Cells["A3"].Value = "3";
ws.Cells["B3"].Value = "4";
ws.Select("A1:B3");
var pt = pv.PivotTables.Add(pv.SelectedRange, ws.SelectedRange, "Pivot");
pt.RowFields.Add(pt.Fields["Data2"]);
var df = pt.DataFields.Add(pt.Fields["Data1"]);
df.Function = DataFieldFunctions.Count;
df = pt.DataFields.Add(pt.Fields["Data1"]);
df.Function = DataFieldFunctions.Sum;
df = pt.DataFields.Add(pt.Fields["Data1"]);
df.Function = DataFieldFunctions.StdDev;
df.Name = "DatA1_2";
pck.Save();
}
//[Ignore]
[TestMethod]
public void SetBackground()
{
var ws = _pck.Workbook.Worksheets.Add("backimg");
ws.BackgroundImage.Image = Properties.Resources.Test1;
ws = _pck.Workbook.Worksheets.Add("backimg2");
ws.BackgroundImage.SetFromFile(new FileInfo(Path.Combine(_clipartPath,"Vector Drawing.wmf")));
}
//[Ignore]
[TestMethod]
public void SetHeaderFooterImage()
{
var ws = _pck.Workbook.Worksheets.Add("HeaderImage");
ws.HeaderFooter.OddHeader.CenteredText = "Before ";
var img = ws.HeaderFooter.OddHeader.InsertPicture(Properties.Resources.Test1, PictureAlignment.Centered);
img.Title = "Renamed Image";
img.GrayScale = true;
img.BiLevel = true;
img.Gain = .5;
img.Gamma = .35;
Assert.AreEqual(img.Width, 426);
img.Width /= 4;
Assert.AreEqual(img.Height, 49.5);
img.Height /= 4;
Assert.AreEqual(img.Left, 0);
Assert.AreEqual(img.Top, 0);
ws.HeaderFooter.OddHeader.CenteredText += " After";
img = ws.HeaderFooter.EvenFooter.InsertPicture(new FileInfo(Path.Combine(_clipartPath,"Vector Drawing.wmf")), PictureAlignment.Left);
img.Title = "DiskFile";
img = ws.HeaderFooter.FirstHeader.InsertPicture(new FileInfo(Path.Combine(_clipartPath, "Vector Drawing2.WMF")), PictureAlignment.Right);
img.Title = "DiskFile2";
ws.Cells["A1:A400"].Value = 1;
_pck.Workbook.Worksheets.Copy(ws.Name, "Copied HeaderImage");
}
//[Ignore]
//[TestMethod]
public void NamedStyles()
{
var wsSheet = _pck.Workbook.Worksheets.Add("NamedStyles");
var firstNamedStyle =
_pck.Workbook.Styles.CreateNamedStyle("templateFirst");
var s = firstNamedStyle.Style;
s.Fill.PatternType = ExcelFillStyle.Solid;
s.Fill.BackgroundColor.SetColor(Color.LightGreen);
s.HorizontalAlignment = ExcelHorizontalAlignment.CenterContinuous;
s.VerticalAlignment = ExcelVerticalAlignment.Center;
var secondNamedStyle = _pck.Workbook.Styles.CreateNamedStyle("first", firstNamedStyle.Style).Style;
secondNamedStyle.Font.Bold = true;
secondNamedStyle.Font.SetFromFont(new Font("Arial Black", 8));
secondNamedStyle.Border.Bottom.Style = ExcelBorderStyle.Medium;
secondNamedStyle.Border.Left.Style = ExcelBorderStyle.Medium;
wsSheet.Cells["B2"].Value = "Text Center";
wsSheet.Cells["B2"].StyleName = "first";
_pck.Workbook.Styles.NamedStyles[0].Style.Font.Name = "Arial";
var rowStyle = _pck.Workbook.Styles.CreateNamedStyle("RowStyle", firstNamedStyle.Style).Style;
rowStyle.Fill.BackgroundColor.SetColor(Color.Pink);
wsSheet.Cells.StyleName = "templateFirst";
wsSheet.Cells["C5:H15"].Style.Fill.PatternType = ExcelFillStyle.Solid;
wsSheet.Cells["C5:H15"].Style.Fill.BackgroundColor.SetColor(Color.OrangeRed);
wsSheet.Cells["30:35"].StyleName = "RowStyle";
var colStyle = _pck.Workbook.Styles.CreateNamedStyle("columnStyle", firstNamedStyle.Style).Style;
colStyle.Fill.BackgroundColor.SetColor(Color.CadetBlue);
wsSheet.Cells["D:E"].StyleName = "ColumnStyle";
}
//[Ignore]
//[TestMethod]
public void StyleFill()
{
var ws = _pck.Workbook.Worksheets.Add("Fills");
ws.Cells["A1:C3"].Style.Fill.Gradient.Type = ExcelFillGradientType.Linear;
ws.Cells["A1:C3"].Style.Fill.Gradient.Color1.SetColor(Color.Red);
ws.Cells["A1:C3"].Style.Fill.Gradient.Color2.SetColor(Color.Blue);
ws.Cells["A1"].Style.Fill.PatternType = ExcelFillStyle.MediumGray;
ws.Cells["A1"].Style.Fill.BackgroundColor.SetColor(Color.ForestGreen);
var r = ws.Cells["A2:A3"];
r.Style.Fill.Gradient.Type = ExcelFillGradientType.Path;
r.Style.Fill.Gradient.Left = 0.7;
r.Style.Fill.Gradient.Right = 0.7;
r.Style.Fill.Gradient.Top = 0.7;
r.Style.Fill.Gradient.Bottom = 0.7;
ws.Cells[4, 1, 4, 360].Style.Fill.Gradient.Type = ExcelFillGradientType.Path;
for (double col = 1; col < 360; col++)
{
r = ws.Cells[4, Convert.ToInt32(col)];
r.Style.Fill.Gradient.Degree = col;
r.Style.Fill.Gradient.Left = col / 360;
r.Style.Fill.Gradient.Right = col / 360;
r.Style.Fill.Gradient.Top = col / 360;
r.Style.Fill.Gradient.Bottom = col / 360;
}
r = ws.Cells["A5"];
r.Style.Fill.Gradient.Left = .50;
ws = _pck.Workbook.Worksheets.Add("FullFills");
ws.Cells.Style.Fill.Gradient.Left = 0.25;
ws.Cells["A1"].Value = "test";
ws.Cells["A1"].RichText.Add("Test rt");
ws.Cells.AutoFilter = true;
Assert.AreNotEqual(ws.Cells["A1:D5"].Value, null);
}
[Ignore]
[TestMethod]
public void BuildInStyles()
{
var pck = new ExcelPackage();
var ws = pck.Workbook.Worksheets.Add("Default");
ws.Cells.Style.Font.Name = "Arial";
ws.Cells.Style.Font.Size = 15;
ws.Cells.Style.Border.Bottom.Style = ExcelBorderStyle.MediumDashed;
var n = pck.Workbook.Styles.NamedStyles[0];
n.Style.Numberformat.Format = "yyyy";
n.Style.Font.Name = "Arial";
n.Style.Font.Size = 15;
n.Style.Border.Bottom.Style = ExcelBorderStyle.Dotted;
n.Style.Border.Bottom.Color.SetColor(Color.Red);
n.Style.Fill.PatternType = ExcelFillStyle.Solid;
n.Style.Fill.BackgroundColor.SetColor(Color.Blue);
n.Style.Border.Bottom.Color.SetColor(Color.Red);
n.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
n.Style.VerticalAlignment = ExcelVerticalAlignment.Center;
n.Style.TextRotation = 90;
ws.Cells["a1:c3"].StyleName = "Normal";
// n.CustomBuildin = true;
pck.SaveAs(new FileInfo(@"c:\temp\style.xlsx"));
}
//[Ignore]
//[TestMethod]
public void AutoFitColumns()
{
var ws = _pck.Workbook.Worksheets.Add("Autofit");
ws.Cells["A1:H1"].Value = "Auto fit column that is veeery long...";
ws.Cells["B1"].Style.TextRotation = 30;
ws.Cells["C1"].Style.TextRotation = 45;
ws.Cells["D1"].Style.TextRotation = 75;
ws.Cells["E1"].Style.TextRotation = 90;
ws.Cells["F1"].Style.TextRotation = 120;
ws.Cells["G1"].Style.TextRotation = 135;
ws.Cells["H1"].Style.TextRotation = 180;
ws.Cells["A1:H1"].AutoFitColumns(0);
}
[TestMethod, Ignore]
public void Moveissue()
{
_pck = new ExcelPackage(new FileInfo(@"C:\temp\bug\FormulaIssue\PreDelete.xlsx"));
_pck.Workbook.Worksheets[1].DeleteRow(2, 4);
_pck.SaveAs(new FileInfo(@"c:\temp\move.xlsx"));
}
[TestMethod, Ignore]
public void DelCol()
{
_pck = new ExcelPackage(new FileInfo(@"C:\temp\bug\FormulaIssue\PreDeleteCol.xlsx"));
_pck.Workbook.Worksheets[1].DeleteColumn(5, 1);
_pck.SaveAs(new FileInfo(@"c:\temp\move.xlsx"));
}
[TestMethod, Ignore]
public void InsCol()
{
_pck = new ExcelPackage(new FileInfo(@"C:\temp\bug\FormulaIssue\PreDeleteCol.xlsx"));
_pck.Workbook.Worksheets[1].InsertColumn(4, 5);
_pck.SaveAs(new FileInfo(@"c:\temp\move.xlsx"));
}
[Ignore]
[TestMethod]
public void FileLockedProblem()
{
using (ExcelPackage pck = new ExcelPackage(new FileInfo(@"c:\temp\url.xlsx")))
{
pck.Workbook.Worksheets[1].DeleteRow(1, 1);
pck.Save();
pck.Dispose();
}
}
//[Ignore]
//[TestMethod]
public void CopyOverwrite()
{
var ws = _pck.Workbook.Worksheets.Add("CopyOverwrite");
for (int col = 1; col < 15; col++)
{
for (int row = 1; row < 30; row++)
{
ws.SetValue(row, col, "cell " + ExcelAddressBase.GetAddress(row, col));
}
}
ws.Cells["A1:P30"].Copy(ws.Cells["B1"]);
}
[Ignore]
[TestMethod]
public void RunSample0()
{
FileInfo newFile = new FileInfo(@"c:\temp\bug\sample0.xlsx");
using (ExcelPackage package = new ExcelPackage(newFile))
{
ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
worksheet.InsertColumn(1, 1);
ExcelColumn entireColumn = worksheet.Column(1);
var last = worksheet.Column(6);
last.Style.Fill.PatternType = ExcelFillStyle.Solid;
last.Style.Fill.BackgroundColor.SetColor(Color.Blue);
last.ColumnMax = 7;
worksheet.InsertColumn(7, 1);
//save our new workbook and we are done!
package.Save();
}
}
[Ignore]
[TestMethod]
public void Deletews()
{
FileInfo newFile = new FileInfo(@"c:\temp\bug\worksheet error.xlsx");
using (ExcelPackage package = new ExcelPackage(newFile))
{
var ws1 = package.Workbook.Worksheets.Add("sheet1");
var ws2 = package.Workbook.Worksheets.Add("sheet2");
var ws3 = package.Workbook.Worksheets.Add("sheet3");
package.Workbook.Worksheets.MoveToStart(ws3.Name);
//save our new workbook and we are done!
package.Save();
}
using (ExcelPackage package = new ExcelPackage(newFile))
{
package.Workbook.Worksheets.Delete(1);
var ws3 = package.Workbook.Worksheets.Add("sheet3");
package.SaveAs(new FileInfo(@"c:\temp\bug\worksheet error_save.xlsx"));
}
}
[TestMethod, Ignore]
public void Issue15207()
{
using (ExcelPackage ep = new ExcelPackage(new FileInfo(@"c:\temp\bug\worksheet error.xlsx")))
{
ExcelWorkbook wb = ep.Workbook;
if (wb != null)
{
ExcelWorksheet ws = null;
ws = wb.Worksheets[1];
if (ws != null)
{
//do something with the worksheet
ws.Dispose();
}
wb.Dispose();
} //if wb != null
wb = null;
//do some other things
//running through this next line now throws the null reference exception
//so the inbuilt dispose method doesn't work properly.
} //using (ExcelPackage ep = new ExcelPackage(new FileInfo(some_file))
}
#region Date1904 Test Cases
[TestMethod]
public void TestDate1904WithoutSetting()
{
string file = "test1904.xlsx";
DateTime dateTest1 = new DateTime(2008, 2, 29);
DateTime dateTest2 = new DateTime(1950, 11, 30);
if (File.Exists(file))
File.Delete(file);
ExcelPackage pack = new ExcelPackage(new FileInfo(file));
ExcelWorksheet w = pack.Workbook.Worksheets.Add("test");
w.Cells[1, 1, 2, 1].Style.Numberformat.Format = ExcelNumberFormat.GetFromBuildInFromID(14);
w.Cells[1, 1].Value = dateTest1;
w.Cells[2, 1].Value = dateTest2;
pack.Save();
ExcelPackage pack2 = new ExcelPackage(new FileInfo(file));
ExcelWorksheet w2 = pack2.Workbook.Worksheets["test"];
Assert.AreEqual(dateTest1, w2.Cells[1, 1].Value);
Assert.AreEqual(dateTest2, w2.Cells[2, 1].Value);
}
[TestMethod]
public void TestDate1904WithSetting()
{
string file = "test1904.xlsx";
DateTime dateTest1 = new DateTime(2008, 2, 29);
DateTime dateTest2 = new DateTime(1950, 11, 30);
if (File.Exists(file))
File.Delete(file);
ExcelPackage pack = new ExcelPackage(new FileInfo(file));
pack.Workbook.Date1904 = true;
ExcelWorksheet w = pack.Workbook.Worksheets.Add("test");
w.Cells[1, 1, 2, 1].Style.Numberformat.Format = ExcelNumberFormat.GetFromBuildInFromID(14);
w.Cells[1, 1].Value = dateTest1;
w.Cells[2, 1].Value = dateTest2;
pack.Save();
ExcelPackage pack2 = new ExcelPackage(new FileInfo(file));
ExcelWorksheet w2 = pack2.Workbook.Worksheets["test"];
Assert.AreEqual(dateTest1, w2.Cells[1, 1].Value);
Assert.AreEqual(dateTest2, w2.Cells[2, 1].Value);
}
[TestMethod]
public void TestDate1904SetAndRemoveSetting()
{
string file = "test1904.xlsx";
DateTime dateTest1 = new DateTime(2008, 2, 29);
DateTime dateTest2 = new DateTime(1950, 11, 30);
if (File.Exists(file))
File.Delete(file);
ExcelPackage pack = new ExcelPackage(new FileInfo(file));
pack.Workbook.Date1904 = true;
ExcelWorksheet w = pack.Workbook.Worksheets.Add("test");
w.Cells[1, 1, 2, 1].Style.Numberformat.Format = ExcelNumberFormat.GetFromBuildInFromID(14);
w.Cells[1, 1].Value = dateTest1;
w.Cells[2, 1].Value = dateTest2;
pack.Save();
ExcelPackage pack2 = new ExcelPackage(new FileInfo(file));
pack2.Workbook.Date1904 = false;
pack2.Save();
ExcelPackage pack3 = new ExcelPackage(new FileInfo(file));
ExcelWorksheet w3 = pack3.Workbook.Worksheets["test"];
Assert.AreEqual(dateTest1.AddDays(365.5 * -4), w3.Cells[1, 1].Value);
Assert.AreEqual(dateTest2.AddDays(365.5 * -4), w3.Cells[2, 1].Value);
}
[TestMethod]
public void TestDate1904SetAndSetSetting()
{
string file = "test1904.xlsx";
DateTime dateTest1 = new DateTime(2008, 2, 29);
DateTime dateTest2 = new DateTime(1950, 11, 30);
if (File.Exists(file))
File.Delete(file);
ExcelPackage pack = new ExcelPackage(new FileInfo(file));
pack.Workbook.Date1904 = true;
ExcelWorksheet w = pack.Workbook.Worksheets.Add("test");
w.Cells[1, 1, 2, 1].Style.Numberformat.Format = ExcelNumberFormat.GetFromBuildInFromID(14);
w.Cells[1, 1].Value = dateTest1;
w.Cells[2, 1].Value = dateTest2;
pack.Save();
ExcelPackage pack2 = new ExcelPackage(new FileInfo(file));
pack2.Workbook.Date1904 = true; // Only the cells must be updated when this change, if set the same nothing must change
pack2.Save();
ExcelPackage pack3 = new ExcelPackage(new FileInfo(file));
ExcelWorksheet w3 = pack3.Workbook.Worksheets["test"];
Assert.AreEqual(dateTest1, w3.Cells[1, 1].Value);
Assert.AreEqual(dateTest2, w3.Cells[2, 1].Value);
}
[TestMethod, Ignore]
public void SaveToStream()
{
var stream = new MemoryStream(File.ReadAllBytes(@"c:\temp\book1.xlsx"));
var excelPackage = new ExcelPackage(stream);
excelPackage.Workbook.Worksheets.Add("test");
excelPackage.Save();
var s = stream.ToArray();
}
[TestMethod, Ignore]
public void ColumnsTest()
{
var excelPackage = new ExcelPackage();
var ws = excelPackage.Workbook.Worksheets.Add("ColumnTest");
for (var c = 4; c <= 20; c += 4)
{
var col = ws.Column(c);
col.ColumnMax = c + 3;
}
ws.Column(3).Hidden = true;
ws.Column(6).Hidden = true;
ws.Column(9).Hidden = true;
ws.Column(15).Hidden = true;
ws.Cells["a1:Z1"].Value = "Test";
ws.Cells["a1:FF33"].AutoFitColumns(0);
ws.Column(26).ColumnMax = ExcelPackage.MaxColumns;
excelPackage.SaveAs(new FileInfo(@"c:\temp\autofit.xlsx"));
}
[TestMethod]
public void Comment()
{
InitBase();
var pck = new ExcelPackage();
var ws1 = pck.Workbook.Worksheets.Add("Comment1");
ws1.Cells[1, 1].AddComment("Testing", "test1");
pck.SaveAs(new FileInfo(_worksheetPath + "comment.xlsx"));
pck = new ExcelPackage(new FileInfo(_worksheetPath + "comment.xlsx"));
var ws2 = pck.Workbook.Worksheets[1];
ws2.Cells[1, 2].AddComment("Testing", "test1");
pck.Save();
}
#endregion
}
}