コード例 #1
0
        public override void Generate(ICollection <Table> inputTables, Stream outputStream)
        {
            Logger.Info("Created ZIP file.");

            var progressReporter = new ProgressReporter("CsvExporter", Parameters.Instance.Targets.Databases.Count(), s => Console.Error.WriteLine(s));

            using (var zipArchive = new ZipArchive(outputStream, ZipArchiveMode.Create))
            {
                var tableIndex = 0;

                foreach (var table in inputTables)
                {
                    if (!Parameters.Instance.ShowInformationMessages && table.Id == Table.InformationMessagesId && inputTables.Count > 1)
                    {
                        continue;
                    }

                    Logger.Info("Adding new CSV file.");

                    var partName = GetPartName(table, tableIndex);
                    AddCsv(zipArchive, table, partName);
                    progressReporter.Increment();
                    tableIndex++;
                }

                progressReporter.Done();

                MemoryManager.Clean();

                var target = GetLogTableTarget();

                // Showing built-in parts with the diagnostic.
                var forceBuiltInSheets = tableIndex == 0;

                if (forceBuiltInSheets)
                {
                    Logger.Warn("No data sets to export. Forcing built-in parts.");
                }

                Logger.Info("CSV file logging horizon. Check console output to see beyond horizon.");

                if (Parameters.Instance.ShowLogSheet || forceBuiltInSheets)
                {
                    var logTable = target.Logs;
                    var partName = GetPartName(logTable, tableIndex++);
                    AddCsv(zipArchive, logTable, partName);
                }

                if (Parameters.Instance.ShowParameterSheet || forceBuiltInSheets)
                {
                    var parameterTable = ParametersToTable(Parameters.Instance);
                    var partName       = GetPartName(parameterTable, tableIndex++);
                    AddCsv(zipArchive, parameterTable, partName);
                }

                MemoryManager.Clean();

                Logger.Info("Finalizing CSV file writing.");
            }
        }
コード例 #2
0
        public override void Generate(ICollection <Table> inputTables, Stream outputStream)
        {
            using (var spreadSheet = SpreadsheetDocument.Create(outputStream, SpreadsheetDocumentType.Workbook))
            {
                Logger.Info("Created excel file.");
                spreadSheet.AddWorkbookPart();

                var wbsp = spreadSheet.WorkbookPart.AddNewPart <WorkbookStylesPart>();
                wbsp.Stylesheet = CreateStylesheet();
                wbsp.Stylesheet.Save();

                spreadSheet.WorkbookPart.Workbook = new Workbook
                {
                    Sheets = new Sheets()
                };

                var progressReporter = new ProgressReporter("ExcelExporter", Parameters.Instance.Targets.Databases.Count(), s => Console.Error.WriteLine(s));

                var tableIndex = 0;
                foreach (var table in inputTables)
                {
                    if (!Parameters.Instance.ShowInformationMessages && table.Id == Table.InformationMessagesId && inputTables.Count > 1)
                    {
                        continue;
                    }

                    Logger.Info("Adding new excel sheet.");

                    if (table.Rows.Count > ExcelTotalNumberRowsMaximumLimit - 1)
                    {
                        Logger.Error($"Table '{table.Id}' not exported in excel file because it had too many rows. The table has {table.Rows.Count} rows and {table.Columns.Length} columns. The maximum number of rows supported by excel is {ExcelTotalNumberRowsMaximumLimit}.");
                        continue;
                    }

                    var sheetName = GetPartName(table, tableIndex);
                    AddSheet(spreadSheet, table, sheetName);
                    progressReporter.Increment();
                    tableIndex++;
                }

                progressReporter.Done();

                MemoryManager.Clean();

                var target = GetLogTableTarget();

                // If no data sheets were added, we must force adding built-in sheets because an excel file without sheet would be invalid.
                // Showing built-in sheets also helps with the diagnostic.
                var forceBuiltInSheets = tableIndex == 0;

                if (forceBuiltInSheets)
                {
                    Logger.Warn("No data sets to export. Forcing built-in sheets.");
                }

                Logger.Info("Excel file logging horizon. Check console output to see beyond horizon.");

                if (Parameters.Instance.ShowLogSheet || forceBuiltInSheets)
                {
                    var logTable = target.Logs;
                    var partName = GetPartName(logTable, tableIndex++);
                    AddSheet(spreadSheet, logTable, partName);
                }

                if (Parameters.Instance.ShowParameterSheet || forceBuiltInSheets)
                {
                    var parameterTable = ParametersToTable(Parameters.Instance);
                    var partName       = GetPartName(parameterTable, tableIndex++);
                    AddSheet(spreadSheet, parameterTable, partName);
                }

                MemoryManager.Clean();

                Logger.Info("Finalizing excel file writing.");
            }
        }