예제 #1
0
        public void GivenCreateCalled_AndListValuesDataRowHasNull_WhenFillData_ThenIgnoreNullInCommaSeparatedString()
        {
            var values   = new object[] { "bob", null, DateTime.Now };
            var expected = string.Format("{0}, {2}", values);
            var data     = new List <List <object> >
            {
                new List <object> {
                    values
                }
            };
            string outputPath = Path.ChangeExtension(Path.Combine("TestData", MethodBase.GetCurrentMethod().Name), ".xlsx");

            byte[] templateData = File.ReadAllBytes(@"TestData\StudentProfileExportTemplate.xltx");
            using (MemoryStream stream = new MemoryStream())
            {
                stream.Write(templateData, 0, (int)templateData.Length);
                using (var target = new StudentProfileExportFile())
                {
                    target.Create(stream);

                    target.FillData(data);
                }

                File.WriteAllBytes(outputPath, stream.ToArray());
            }
            using (XLWorkbook workbook = new XLWorkbook(outputPath))
            {
                IXLWorksheet worksheet = workbook.Worksheet(1);
                Assert.AreEqual(expected, worksheet.Cell("A3").Value);
            }
        }
예제 #2
0
        public void GivenCreateCalled_AndNullishValuesInDataRow_WhenFillData_ThenNullishCellsEmpty()
        {
            var expectedNonString = "non-nullish";
            var data = new List <List <object> >
            {
                new List <object> {
                    null, new Nullable <DateTime>(), "", " \r\n\t", expectedNonString
                }
            };
            string outputPath = Path.ChangeExtension(Path.Combine("TestData", MethodBase.GetCurrentMethod().Name), ".xlsx");

            byte[] templateData = File.ReadAllBytes(@"TestData\StudentProfileExportTemplate.xltx");
            using (MemoryStream stream = new MemoryStream())
            {
                stream.Write(templateData, 0, (int)templateData.Length);
                using (var target = new StudentProfileExportFile())
                {
                    target.Create(stream);

                    target.FillData(data);
                }

                File.WriteAllBytes(outputPath, stream.ToArray());
            }
            using (XLWorkbook workbook = new XLWorkbook(outputPath))
            {
                IXLWorksheet worksheet = workbook.Worksheet(1);
                Assert.AreEqual(string.Empty, worksheet.Cell("A3").Value);
                Assert.AreEqual(string.Empty, worksheet.Cell("B3").Value);
                Assert.AreEqual(string.Empty, worksheet.Cell("C3").Value);
                Assert.AreEqual(string.Empty, worksheet.Cell("D3").Value);
                Assert.AreEqual(expectedNonString, worksheet.Cell("E3").Value);
            }
        }
예제 #3
0
        public void GivenCreateCalled_AndListValuesInDataRow_WhenFillData_ThenListItemsCommaSeparated()
        {
            string expected = "bob, smith";
            var    data     = new List <List <object> >
            {
                new List <object> {
                    expected.Split(new [] { ", " }, StringSplitOptions.None)
                }
            };
            string outputPath = Path.ChangeExtension(Path.Combine("TestData", MethodBase.GetCurrentMethod().Name), ".xlsx");

            byte[] templateData = File.ReadAllBytes(@"TestData\StudentProfileExportTemplate.xltx");
            using (MemoryStream stream = new MemoryStream())
            {
                stream.Write(templateData, 0, (int)templateData.Length);
                using (var target = new StudentProfileExportFile())
                {
                    target.Create(stream);

                    target.FillData(data);
                }

                File.WriteAllBytes(outputPath, stream.ToArray());
            }
            using (XLWorkbook workbook = new XLWorkbook(outputPath))
            {
                IXLWorksheet worksheet = workbook.Worksheet(1);
                Assert.AreEqual(expected, worksheet.Cell("A3").Value);
            }
        }
예제 #4
0
        public void GivenCreateCalled_AndNumericDataRow_WhenFillData_ThenDataValuesPreserved()
        {
            var data = new List <List <object> >
            {
                new List <object> {
                    273451076528.23824732952M, 4728237293822871085L, 235
                }
            };
            string outputPath = Path.ChangeExtension(Path.Combine("TestData", MethodBase.GetCurrentMethod().Name), ".xlsx");

            byte[] templateData = File.ReadAllBytes(@"TestData\StudentProfileExportTemplate.xltx");
            using (MemoryStream stream = new MemoryStream())
            {
                stream.Write(templateData, 0, (int)templateData.Length);
                using (var target = new StudentProfileExportFile())
                {
                    target.Create(stream);

                    target.FillData(data);
                }

                File.WriteAllBytes(outputPath, stream.ToArray());
            }
            using (XLWorkbook workbook = new XLWorkbook(outputPath))
            {
                IXLWorksheet worksheet = workbook.Worksheet(1);
                var          value1    = worksheet.Cell("A3").GetValue <decimal>();
                var          value2    = worksheet.Cell("B3").GetValue <long>();
                var          value3    = worksheet.Cell("C3").GetValue <int>();
                Assert.AreEqual(data[0][0], value1);
                Assert.AreEqual(data[0][1], value2);
                Assert.AreEqual(data[0][2], value3);
            }
        }
예제 #5
0
        public void GivenCreateCalled_AndNullDataRows_WhenFillData_ThenNullRowsIgnored()
        {
            var data = new List <List <object> >
            {
                null,
                null,
                null,
                new List <object> {
                    1
                }
            };
            string outputPath = Path.ChangeExtension(Path.Combine("TestData", MethodBase.GetCurrentMethod().Name), ".xlsx");

            byte[] templateData = File.ReadAllBytes(@"TestData\StudentProfileExportTemplate.xltx");
            using (MemoryStream stream = new MemoryStream())
            {
                stream.Write(templateData, 0, (int)templateData.Length);
                using (var target = new StudentProfileExportFile())
                {
                    target.Create(stream);

                    target.FillData(data);
                }

                File.WriteAllBytes(outputPath, stream.ToArray());
            }
            using (XLWorkbook workbook = new XLWorkbook(outputPath))
            {
                IXLWorksheet worksheet = workbook.Worksheet(1);
                Assert.AreEqual(data[3][0], worksheet.Cell("A3").GetValue <int>());
            }
        }
예제 #6
0
        public void GivenCreateCalled_AndStringDataRows_WhenFillData_ThenFileContainsDataInColumns()
        {
            var data = new List <List <object> >
            {
                new List <object> {
                    "bob", "smith"
                },
                new List <object> {
                    "george", "jones"
                }
            };
            string outputPath = Path.ChangeExtension(Path.Combine("TestData", MethodBase.GetCurrentMethod().Name), ".xlsx");

            byte[] templateData = File.ReadAllBytes(@"TestData\StudentProfileExportTemplate.xltx");
            using (MemoryStream stream = new MemoryStream())
            {
                stream.Write(templateData, 0, (int)templateData.Length);
                using (var target = new StudentProfileExportFile())
                {
                    target.Create(stream);

                    target.FillData(data);
                }

                File.WriteAllBytes(outputPath, stream.ToArray());
            }
            using (XLWorkbook workbook = new XLWorkbook(outputPath))
            {
                IXLWorksheet worksheet = workbook.Worksheet(1);
                Assert.AreEqual(data[0][0], worksheet.Cell("A3").Value);
                Assert.AreEqual(data[0][1], worksheet.Cell("B3").Value);
                Assert.AreEqual(data[1][0], worksheet.Cell("A4").Value);
                Assert.AreEqual(data[1][1], worksheet.Cell("B4").Value);
            }
        }
예제 #7
0
 public void GivenNullObjects_WhenFillData_ThenThrowException()
 {
     using (var target = new StudentProfileExportFile())
     {
         target.ExpectException <ArgumentNullException>(() => target.FillData(null));
     }
 }
예제 #8
0
 public void GivenCreateNotCalled_WhenFillData_ThenThrowException()
 {
     using (var target = new StudentProfileExportFile())
     {
         target.ExpectException <InvalidOperationException>(() => target.FillData(new List <IEnumerable <object> > {
             new[] { new object() }
         }));
     }
 }
예제 #9
0
        public void GivenCreateCalled_WhenFillData_ThenSuceed()
        {
            byte[] templateData = File.ReadAllBytes(@"TestData\StudentProfileExportTemplate.xltx");
            using (MemoryStream stream = new MemoryStream())
            {
                stream.Write(templateData, 0, (int)templateData.Length);
                using (var target = new StudentProfileExportFile())
                {
                    target.Create(stream);

                    target.FillData(new List <IEnumerable <object> > {
                        new[] { new object() }
                    });
                }
            }
        }
예제 #10
0
        public void GivenCreateCalled_AndDateDataRows_WhenFillData_ThenDatePrecisionToSecondsPreserved()
        {
            var nowWithSecondPrecision = DateTime.Now.Truncate(TimeSpan.FromSeconds(1));
            var data = new List <List <object> >
            {
                new List <object> {
                    nowWithSecondPrecision
                },
                new List <object> {
                    nowWithSecondPrecision.AddDays(2)
                },
                new List <object> {
                    nowWithSecondPrecision.TimeOfDay
                }
            };
            string outputPath = Path.ChangeExtension(Path.Combine("TestData", MethodBase.GetCurrentMethod().Name), ".xlsx");

            byte[] templateData = File.ReadAllBytes(@"TestData\StudentProfileExportTemplate.xltx");
            using (MemoryStream stream = new MemoryStream())
            {
                stream.Write(templateData, 0, (int)templateData.Length);
                using (var target = new StudentProfileExportFile())
                {
                    target.Create(stream);

                    target.FillData(data);
                }

                File.WriteAllBytes(outputPath, stream.ToArray());
            }
            using (XLWorkbook workbook = new XLWorkbook(outputPath))
            {
                IXLWorksheet worksheet = workbook.Worksheet(1);
                var          date1     = worksheet.Cell("A3").GetDateTime();
                var          date2     = worksheet.Cell("A4").GetDateTime();
                var          timeSpan  = worksheet.Cell("A5").GetTimeSpan();
                Assert.AreEqual(data[0][0], date1);
                Assert.AreEqual(data[1][0], date2);
                Assert.AreEqual(data[2][0], timeSpan);
            }
        }