示例#1
0
        public void ReadAdHocTableExcelDataReader()
        {
            ITableReader reader = AdoTableReader.ReadContiguousExcelTableWithHeader(XlsTestFilePath, null, 17);
            //Trace(reader);

            var xlsResult = reader.Rows.ToListOfDictionaries();

            reader = AdoTableReader.ReadContiguousExcelTableWithHeader(TestFilePath, null, 17);
            //Trace(reader);

            var xlsxResult = reader.Rows.ToListOfDictionaries();

            Assert.AreEqual(xlsResult, xlsxResult);

            Assert.AreEqual(1895, xlsResult.Count);
        }
示例#2
0
        public void ReadAdHocTableXlsx()
        {
            IList <IDictionary <string, object> > epplusResult;

            using (var package = new ExcelPackage(new FileInfo(TestFilePath)))
            {
                package.Compatibility.IsWorksheets1Based = true;
                var workbook     = package.Workbook;
                var epplusReader = ExcelTableReader.ReadContiguousTableWithHeader(workbook.Worksheets[1], 17);
                //Trace(reader);
                epplusResult = epplusReader.Rows.ToListOfDictionaries();
            }

            var reader = AdoTableReader.ReadContiguousExcelTableWithHeader(TestFilePath, null, 17);
            //Trace(reader);
            var excelDataReaderResult = reader.Rows.ToListOfDictionaries();


            Assert.AreEqual(1895, excelDataReaderResult.Count);
            Assert.AreEqual(epplusResult.Count, excelDataReaderResult.Count);
            Assert.AreEqual(epplusResult, excelDataReaderResult);
        }
示例#3
0
        public void OneTable()
        {
            var outPath  = GetNewOutFilePath("-from-ado.net");
            var workbook = new ExcelPackage(new FileInfo(outPath));

            var dataSet   = new DataSet();
            var tableName = "LastSegments";
            var dataTable = dataSet.Tables.Add(tableName);

            dataTable.Columns.Add("Id", typeof(long));
            dataTable.Columns.Add("Description", typeof(string));
            dataTable.Columns.Add("Authority", typeof(string));
            dataTable.Columns.Add("MaterialLotID", typeof(string));
            dataTable.Columns.Add("LotType", typeof(string));
            dataTable.Columns.Add("Designation", typeof(string));
            dataTable.Columns.Add("SegmentState", typeof(string));

            var designations  = new [] { "Production", "R&D", "Baseline" };
            var segmentStates = new[] { "Commenced", "Completed", "Aborted" };
            var rowCount      = 1000;

            var random = new Random();

            for (var n = 0; n < rowCount; ++n)
            {
                dataTable.Rows.Add(
                    rowCount * 5 - n
                    , $"Description{n}"
                    , $"Authority{n % 3}"
                    , $"Lot#{n}"
                    , $"LotType{n%2}"
                    , designations[random.Next(0, designations.Length)]
                    , segmentStates[random.Next(0, segmentStates.Length)]);
            }

            var config = new DataSetExportAutoConfig(dataSet);

            var tableConfig  = config.GetTableConfig(tableName);
            var columnConfig = tableConfig.GetAutoColumnConfig("Description");

            columnConfig.MinimumWidth = 40;
            columnConfig.WrapText     = true;

            tableConfig.SheetName = "Last Segments";

            tableConfig.GetAutoColumnConfig("Authority").AutoFit     = true;
            tableConfig.GetAutoColumnConfig("MaterialLotID").AutoFit = true;
            tableConfig.GetAutoColumnConfig("LotType").AutoFit       = true;
            tableConfig.GetAutoColumnConfig("Designation").AutoFit   = true;

            columnConfig         = tableConfig.GetAutoColumnConfig("SegmentState");
            columnConfig.Caption = "Segment State";
            columnConfig.AutoFit = true;
            columnConfig.BackgroundColorExtractor = (d, n) => "Aborted".Equals(((DataRow)d)["SegmentState"]) ? Color.LightCoral : (Color?)null;

            var exporter = new DataSetToWorkbookExporter(config)
            {
                DataSet = new DataSetAdapter(dataSet)
            };

            var start = DateTime.Now;

            exporter.Export(workbook);

            var duration = DateTime.Now - start;

            Console.WriteLine("Duration: {0}", duration);

            workbook.Save();

            TestContext.WriteLine($"Saved {outPath}.");

            workbook.Dispose();
            var readTable = AdoTableReader.GetWorksheetDataTable(outPath);

            Assert.AreEqual(tableConfig.Columns.Count, readTable.Columns.Count);

            for (var i = 0; i < tableConfig.Columns.Count; ++i)
            {
                //ExcelDataReader does not set column name, caption and contains header as first data row
                Assert.AreEqual(tableConfig.Columns[i].Caption, readTable.Rows[0][i]);
                // since header is first data row, only string type will be set correctly
                //Assert.AreEqual(tableConfig.Columns[i].ColumnDataSource.DataType, readTable.Columns[i].DataType);
            }

            Assert.AreEqual(rowCount, readTable.Rows.Count - 1);

            for (int i = 0; i < rowCount; ++i)
            {
                var savedRow = dataTable.Rows[i];
                var readRow  = readTable.Rows[i + 1];
                for (var c = 0; c < tableConfig.Columns.Count; ++c)
                {
                    Assert.AreEqual(savedRow[c], readRow[c]);
                }
            }

            if (_deleteExportedFiles)
            {
                File.Delete(outPath);
            }
        }