public void LargeFileTest()
        {
            using (var stream = new MemoryStream()) {
                using (var excel = new ExcelWriterC1(stream)) {
                    // Write out 66K rows
                    for (var i = 0; i < 66000; i++)
                    {
                        excel.WriteCell(i, 0, i.ToString());
                    }
                    excel.Close();

                    // Now read it back
                    stream.Position = 0;
                    using (var book = new C1XLBook()) {
                        book.Load(stream, FileFormat.OpenXml);
                        var sheet = book.Sheets[0];

                        // Verify 66K rows
                        for (var i = 0; i < 66000; i++)
                        {
                            Assert.AreEqual(i.ToString(), sheet[i, 0].Value);
                        }
                    }
                }
            }
        }
        public void NullReferenceTest()
        {
            var records = new List <A> {
                new A {
                    Id = "1",
                }
            };

            using (var stream = new MemoryStream()) {
                using (var excel = new ExcelWriterC1(stream)) {
                    excel.Configuration.RegisterClassMap <AMap>();
                    excel.WriteRecords(records);
                    excel.Close();

                    stream.Position = 0;
                    using (var book = new XLWorkbook(stream)) {
                        var sheet = book.Worksheets.Worksheet(1);

                        // Check the header row
                        Assert.AreEqual("AId", sheet.Cell(1, 1).Value);
                        Assert.AreEqual("BId", sheet.Cell(1, 2).Value);
                        Assert.AreEqual("CId", sheet.Cell(1, 3).Value);
                        Assert.AreEqual("DId", sheet.Cell(1, 4).Value);

                        // Check the first record
                        Assert.AreEqual("1", sheet.Cell(2, 1).Value);
                        Assert.AreEqual("", sheet.Cell(2, 2).Value);
                        Assert.AreEqual("", sheet.Cell(2, 3).Value);
                        Assert.AreEqual("", sheet.Cell(2, 4).Value);
                    }
                }
            }
        }
        public void SameNameMultipleTimesTest()
        {
            var records = new List <SameNameMultipleTimesClass> {
                new SameNameMultipleTimesClass {
                    Name1 = "1",
                    Name2 = "2",
                    Name3 = "3"
                }
            };

            using (var stream = new MemoryStream()) {
                using (var excel = new ExcelWriterC1(stream)) {
                    excel.Configuration.RegisterClassMap <SameNameMultipleTimesClassMap>();
                    excel.WriteRecords(records);
                    excel.Close();

                    stream.Position = 0;
                    using (var book = new C1XLBook()) {
                        book.Load(stream, FileFormat.OpenXml);
                        var sheet = book.Sheets[0];

                        // Check the header row
                        Assert.AreEqual("ColumnName", sheet[0, 0].Value);
                        Assert.AreEqual("ColumnName", sheet[0, 1].Value);
                        Assert.AreEqual("ColumnName", sheet[0, 2].Value);

                        // Check the first record
                        Assert.AreEqual("1", sheet[1, 0].Value);
                        Assert.AreEqual("2", sheet[1, 1].Value);
                        Assert.AreEqual("3", sheet[1, 2].Value);
                    }
                }
            }
        }
        public void WriteNoGetterTest()
        {
            using (var stream = new MemoryStream()) {
                using (var excel = new ExcelWriterC1(stream)) {
                    var list = new List <TestPrivateGet> {
                        new TestPrivateGet {
                            ID   = 1,
                            Name = "one"
                        }
                    };
                    excel.WriteRecords(list);
                    excel.Close();

                    stream.Position = 0;
                    using (var book = new C1XLBook()) {
                        book.Load(stream, FileFormat.OpenXml);
                        var sheet = book.Sheets[0];
                        Assert.AreEqual("ID", sheet[0, 0].Value);
                        Assert.AreEqual(null, sheet[0, 1].Value);
                        Assert.AreEqual((double)1, sheet[1, 0].Value);
                        Assert.AreEqual(null, sheet[1, 1].Value);
                    }
                }
            }
        }
Esempio n. 5
0
 public void EnsureInternalsAreSetupWhenPasingWriterAndConfigTest()
 {
     using (var stream = new MemoryStream()) {
         var config = new ExcelConfiguration();
         using (var excel = new ExcelWriterC1(stream, config)) {
             Assert.AreSame(config, excel.Configuration);
         }
     }
 }
        public void NestedReferencesTest()
        {
            var records = new List <A>();

            for (var i = 0; i < 2; i++)
            {
                var row = i + 1;
                records.Add(
                    new A {
                    Id = "a" + row,
                    B  = new B {
                        Id = "b" + row,
                        C  = new C {
                            Id = "c" + row,
                            D  = new D {
                                Id = "d" + row
                            }
                        }
                    }
                });
            }

            using (var stream = new MemoryStream()) {
                using (var excel = new ExcelWriterC1(stream)) {
                    excel.Configuration.RegisterClassMap <AMap>();
                    excel.WriteRecords(records);
                    excel.Close();

                    stream.Position = 0;
                    using (var book = new XLWorkbook(stream)) {
                        var sheet = book.Worksheets.Worksheet(1);

                        // Check the header row
                        Assert.AreEqual("AId", sheet.Cell(1, 1).Value);
                        Assert.AreEqual("BId", sheet.Cell(1, 2).Value);
                        Assert.AreEqual("CId", sheet.Cell(1, 3).Value);
                        Assert.AreEqual("DId", sheet.Cell(1, 4).Value);

                        // Check the first record
                        Assert.AreEqual("a1", sheet.Cell(2, 1).Value);
                        Assert.AreEqual("b1", sheet.Cell(2, 2).Value);
                        Assert.AreEqual("c1", sheet.Cell(2, 3).Value);
                        Assert.AreEqual("d1", sheet.Cell(2, 4).Value);

                        // Check the second record
                        Assert.AreEqual("a2", sheet.Cell(3, 1).Value);
                        Assert.AreEqual("b2", sheet.Cell(3, 2).Value);
                        Assert.AreEqual("c2", sheet.Cell(3, 3).Value);
                        Assert.AreEqual("d2", sheet.Cell(3, 4).Value);
                    }
                }
            }
        }
        public void WriteRecordsTest()
        {
            var date      = DateTime.Today;
            var yesterday = DateTime.Today.AddDays(-1);
            var records   = new List <TestRecord> {
                new TestRecord {
                    IntColumn           = 1,
                    StringColumn        = "string column",
                    IgnoredColumn       = "ignored column",
                    FirstColumn         = "first column",
                    TypeConvertedColumn = "written as test",
                    BoolColumn          = true,
                    DoubleColumn        = 12.34,
                    DateTimeColumn      = date,
                    NullStringColumn    = null,
                    FormulaColumn       = "=1+2",
                },
                new TestRecord {
                    IntColumn           = 2,
                    StringColumn        = "string column 2",
                    IgnoredColumn       = "ignored column 2",
                    FirstColumn         = "first column 2",
                    TypeConvertedColumn = "written as test",
                    BoolColumn          = false,
                    DoubleColumn        = 43.21,
                    DateTimeColumn      = yesterday,
                    NullStringColumn    = null,
                    FormulaColumn       = "not a formula",
                },
            };

            using (var stream = new MemoryStream()) {
                using (var excel = new ExcelWriterC1(stream)) {
                    excel.Configuration.RegisterClassMap <TestRecordMap>();
                    excel.WriteRecords(records);
                    excel.ChangeSheet(2);
                    excel.WriteRecords(records);
                    excel.Close();

                    stream.Position = 0;
                    using (var book = new C1XLBook()) {
                        book.Load(stream, FileFormat.OpenXml);
                        var sheet = book.Sheets[0];
                        CheckRecords(sheet, date, yesterday);
                        Assert.AreEqual(3, book.Sheets.Count);
                        sheet = book.Sheets[2];
                        CheckRecords(sheet, date, yesterday);
                    }
                }
            }
        }
        public void WriteMultipleNamesTest()
        {
            var records = new List <MultipleNamesClass> {
                new MultipleNamesClass {
                    IntColumn    = 1,
                    StringColumn = "one"
                },
                new MultipleNamesClass {
                    IntColumn    = 2,
                    StringColumn = "two"
                }
            };

            using (var stream = new MemoryStream()) {
                using (var excel = new ExcelWriterC1(stream)) {
                    excel.Configuration.RegisterClassMap <MultipleNamesClassMap>();
                    excel.WriteRecords(records);
                    excel.Close();

                    stream.Position = 0;
                    using (var book = new C1XLBook()) {
                        book.Load(stream, FileFormat.OpenXml);
                        var sheet = book.Sheets[0];

                        // Check the header row
                        Assert.AreEqual("int1", sheet[0, 0].Value);
                        Assert.AreEqual("string1", sheet[0, 1].Value);

                        // Check the first record
                        Assert.AreEqual((double)1, sheet[1, 0].Value);
                        Assert.AreEqual("one", sheet[1, 1].Value);

                        // Check the second record
                        Assert.AreEqual((double)2, sheet[2, 0].Value);
                        Assert.AreEqual("two", sheet[2, 1].Value);
                    }
                }
            }
        }
        public void WriteRecordsNoIndexesTest()
        {
            var records = new List <TestRecordNoIndexes> {
                new TestRecordNoIndexes {
                    IntColumn           = 1,
                    StringColumn        = "string column",
                    IgnoredColumn       = "ignored column",
                    FirstColumn         = "first column",
                    TypeConvertedColumn = "written as test",
                },
            };

            using (var stream = new MemoryStream()) {
                using (var excel = new ExcelWriterC1(stream)) {
                    excel.Configuration.RegisterClassMap <TestRecordNoIndexesMap>();
                    excel.WriteRecords(records);
                    excel.Close();

                    stream.Position = 0;
                    using (var book = new C1XLBook()) {
                        book.Load(stream, FileFormat.OpenXml);
                        var sheet = book.Sheets[0];

                        // Check the header row
                        Assert.AreEqual("Int Column", sheet[0, 0].Value);
                        Assert.AreEqual("StringColumn", sheet[0, 1].Value);
                        Assert.AreEqual("FirstColumn", sheet[0, 2].Value);
                        Assert.AreEqual("TypeConvertedColumn", sheet[0, 3].Value);

                        // Check the first record
                        Assert.AreEqual((double)1, sheet[1, 0].Value);
                        Assert.AreEqual("string column", sheet[1, 1].Value);
                        Assert.AreEqual("first column", sheet[1, 2].Value);
                        Assert.AreEqual("test", sheet[1, 3].Value);
                    }
                }
            }
        }
Esempio n. 10
0
        public void WriteRecordsWithReferencesTest()
        {
            var records = new List <Person> {
                new Person {
                    FirstName   = "First Name",
                    LastName    = "Last Name",
                    HomeAddress = new Address {
                        Street = "Home Street",
                        City   = "Home City",
                        State  = "Home State",
                        Zip    = "Home Zip",
                        ID     = 2,
                    },
                    WorkAddress = new Address {
                        Street = "Work Street",
                        City   = "Work City",
                        State  = "Work State",
                        Zip    = "Work Zip",
                        ID     = 3,
                    },
                    NullAddress = null,
                },
            };

            using (var stream = new MemoryStream()) {
                using (var excel = new ExcelWriterC1(stream)) {
                    excel.Configuration.RegisterClassMap <PersonMap>();
                    excel.WriteRecords(records);
                    excel.Close();

                    stream.Position = 0;
                    using (var book = new C1XLBook()) {
                        book.Load(stream, FileFormat.OpenXml);
                        var sheet = book.Sheets[0];

                        // Check the header row
                        Assert.AreEqual("FirstName", sheet[0, 0].Value);
                        Assert.AreEqual("LastName", sheet[0, 1].Value);
                        Assert.AreEqual("HomeStreet", sheet[0, 2].Value);
                        Assert.AreEqual("HomeCity", sheet[0, 3].Value);
                        Assert.AreEqual("HomeState", sheet[0, 4].Value);
                        Assert.AreEqual("HomeZip", sheet[0, 5].Value);
                        Assert.AreEqual("HomeID", sheet[0, 6].Value);
                        Assert.AreEqual("WorkStreet", sheet[0, 7].Value);
                        Assert.AreEqual("WorkCity", sheet[0, 8].Value);
                        Assert.AreEqual("WorkState", sheet[0, 9].Value);
                        Assert.AreEqual("WorkZip", sheet[0, 10].Value);
                        Assert.AreEqual("WorkID", sheet[0, 11].Value);
                        Assert.AreEqual("NullStreet", sheet[0, 12].Value);
                        Assert.AreEqual("NullCity", sheet[0, 13].Value);
                        Assert.AreEqual("NullState", sheet[0, 14].Value);
                        Assert.AreEqual("NullZip", sheet[0, 15].Value);
                        Assert.AreEqual("NullID", sheet[0, 16].Value);

                        // Check the record
                        Assert.AreEqual("First Name", sheet[1, 0].Value);
                        Assert.AreEqual("Last Name", sheet[1, 1].Value);
                        Assert.AreEqual("Home Street", sheet[1, 2].Value);
                        Assert.AreEqual("Home City", sheet[1, 3].Value);
                        Assert.AreEqual("Home State", sheet[1, 4].Value);
                        Assert.AreEqual("Home Zip", sheet[1, 5].Value);
                        Assert.AreEqual(2.0, sheet[1, 6].Value);
                        Assert.AreEqual("Work Street", sheet[1, 7].Value);
                        Assert.AreEqual("Work City", sheet[1, 8].Value);
                        Assert.AreEqual("Work State", sheet[1, 9].Value);
                        Assert.AreEqual("Work Zip", sheet[1, 10].Value);
                        Assert.AreEqual(3.0, sheet[1, 11].Value);
                        Assert.AreEqual(null, sheet[1, 12].Value);
                        Assert.AreEqual(null, sheet[1, 13].Value);
                        Assert.AreEqual(null, sheet[1, 14].Value);
                        Assert.AreEqual(null, sheet[1, 15].Value);
                        Assert.AreEqual(0.0, sheet[1, 16].Value);
                    }
                }
            }
        }
Esempio n. 11
0
        public void WriteCellTest()
        {
            using (var stream = new MemoryStream()) {
                using (var excel = new ExcelWriterC1(stream)) {
                    // Set up our row and column formats first
                    excel.SetRowFormat(1, fontStyle: FontStyle.Bold, fontSize: 16);
                    excel.SetColumnFormat(7, fontStyle: FontStyle.Italic, fontSize: 24);

                    var date = DateTime.Today;
                    var guid = new Guid("bfb9c599-bc9e-4f97-ae59-25f2ca09cfdf");
                    excel.WriteCell(0, 0, "one");
                    excel.WriteCell(0, 1, "one, two", fontStyle: FontStyle.Bold);
                    excel.WriteCell(0, 2, "one \"two\" three", fontSize: 18);
                    excel.WriteCell(0, 3, " one ", fontName: "Times");
                    excel.WriteCell(0, 4, date);
                    excel.WriteCell(0, 5, date, null, "d");
                    excel.WriteCell(0, 6, date, null, "D", FontStyle.Bold);
                    excel.WriteCell(0, 7, (byte)1);
                    excel.WriteCell(0, 8, (short)2);
                    excel.WriteCell(0, 9, 3);
                    excel.WriteCell(0, 10, "=1+2");

                    excel.WriteCell(1, 0, (long)4);
                    excel.WriteCell(1, 1, (float)5);
                    excel.WriteCell(1, 2, (double)6);
                    excel.WriteCell(1, 3, (decimal)123.456, "C");
                    excel.WriteCell(1, 4, guid);
                    excel.WriteCell(1, 5, true);
                    excel.WriteCell(1, 6, false);
                    excel.WriteCell(1, 7, (string)null);
                    excel.WriteCell(1, 8, new TimeSpan(1, 2, 3));
                    excel.WriteCell(1, 9, new TimeSpan(1, 2, 3), "g");
                    excel.WriteCell(1, 10, "=2*3");

                    // Auto size the columns
                    excel.AdjustColumnsToContent(0, 10000);

                    // Override some column and row sizes
                    excel.SetRowHeight(1, 600);
                    excel.SetColumnWidth(1, 500);
                    excel.SetColumnWidth(11, 700);

                    // Change to third sheet and write a cell
                    excel.ChangeSheet(2);
                    excel.WriteCell(0, 0, "third sheet");

                    excel.Close();

                    stream.Position = 0;
                    using (var book = new C1XLBook()) {
                        book.Load(stream, FileFormat.OpenXml);
                        var sheet = book.Sheets[0];

                        // Verify row and column styles
                        Assert.AreEqual(FontStyle.Bold, sheet.Rows[1].Style.Font.Style);
                        Assert.AreEqual(16.0, sheet.Rows[1].Style.Font.SizeInPoints);
                        Assert.AreEqual(FontStyle.Italic, sheet.Columns[7].Style.Font.Style);
                        Assert.AreEqual(24.0, sheet.Columns[7].Style.Font.SizeInPoints);

                        // Verify the overridden row and column sizes
                        Assert.AreEqual(600, sheet.Rows[1].Height);
                        Assert.AreEqual(495, sheet.Columns[1].Width);
                        Assert.AreEqual(700, sheet.Columns[11].Width);

                        // Check some automatically sizes column widths
                        Assert.AreEqual(2655, sheet.Columns[2].Width);
                        Assert.AreEqual(2347, sheet.Columns[4].Width);

                        // Verify first row
                        Assert.AreEqual("one", sheet[0, 0].Value);
                        Assert.AreEqual("", sheet[0, 0].Style.Format);
                        Assert.AreEqual("one, two", sheet[0, 1].Value);
                        Assert.AreEqual(FontStyle.Bold, sheet[0, 1].Style.Font.Style);
                        Assert.AreEqual("one \"two\" three", sheet[0, 2].Value);
                        Assert.AreEqual(18.0, sheet[0, 2].Style.Font.SizeInPoints);
                        Assert.AreEqual(" one ", sheet[0, 3].Value);
                        Assert.AreEqual("Times New Roman", sheet[0, 3].Style.Font.Name);
                        Assert.AreEqual(date, sheet[0, 4].Value);
                        Assert.AreEqual(@"m\/D\/YYYY\ H:mm:ss\ AM/PM", sheet[0, 4].Style.Format);
                        Assert.AreEqual(date, sheet[0, 5].Value);
                        Assert.AreEqual(@"m\/D\/YYYY", sheet[0, 5].Style.Format);
                        Assert.AreEqual(date, sheet[0, 6].Value);
                        Assert.AreEqual(@"DDDD,\ mmmm\ D,\ YYYY", sheet[0, 6].Style.Format);
                        Assert.AreEqual(FontStyle.Bold, sheet[0, 6].Style.Font.Style);
                        Assert.AreEqual((double)1, sheet[0, 7].Value);
                        Assert.AreEqual((double)2, sheet[0, 8].Value);
                        Assert.AreEqual((double)3, sheet[0, 9].Value);
                        Assert.AreEqual("=1+2", sheet[0, 10].Formula);
                        Assert.AreEqual(null, sheet[0, 10].Value);

                        // Verify second row
                        Assert.AreEqual((double)4, sheet[1, 0].Value);
                        Assert.AreEqual("", sheet[1, 0].Style.Format);
                        Assert.AreEqual((double)5, sheet[1, 1].Value);
                        Assert.AreEqual((double)6, sheet[1, 2].Value);
                        Assert.AreEqual(123.456, sheet[1, 3].Value);
                        Assert.AreEqual(@"$#,##0.00;($#,##0.00)", sheet[1, 3].Style.Format);
                        Assert.AreEqual("bfb9c599-bc9e-4f97-ae59-25f2ca09cfdf", sheet[1, 4].Value);
                        Assert.AreEqual("true", sheet[1, 5].Value);
                        Assert.AreEqual("false", sheet[1, 6].Value);
                        Assert.AreEqual(null, sheet[1, 7].Value);
                        Assert.AreEqual("01:02:03", sheet[1, 8].Value);
                        Assert.AreEqual("", sheet[1, 8].Style.Format);
                        Assert.AreEqual("01:02:03", sheet[1, 9].Value);
                        Assert.AreEqual("", sheet[1, 9].Style.Format);
                        Assert.AreEqual("=2*3", sheet[1, 10].Formula);
                        Assert.AreEqual(null, sheet[1, 10].Value);

                        // Verify third sheet
                        Assert.AreEqual(3, book.Sheets.Count);
                        sheet = book.Sheets[2];
                        Assert.AreEqual("third sheet", sheet[0, 0].Value);
                    }
                }
            }
        }