示例#1
0
        public async Task ExportAsync(string filename)
        {
            this.ValidateExport(filename);
            var path           = PathUtility.GetFullPath(filename, this.CommandContext.BaseDirectory);
            var authentication = this.CommandContext.GetAuthentication(this);
            var dataBase       = this.DataBaseContext.Dispatcher.Invoke(() => this.DataBaseContext[this.DataBaseName]);
            var revision       = dataBase.Dispatcher.Invoke(() => this.Revision ?? dataBase.DataBaseInfo.Revision);
            var dataSet        = await dataBase.GetDataSetAsync(authentication, CremaDataSetFilter.Default, revision);

            var settings = new SpreadsheetWriterSettings()
            {
                OmitAttribute     = this.OmitAttribute,
                OmitSignatureDate = this.OmitSignatureDate,
                OmitType          = DataSetTypeProperties.TableOnly,
                OmitTable         = DataSetTypeProperties.TypeOnly,
            };

            if (this.SaveEach == true)
            {
                settings.Sort = this.Comparison;
            }
            settings.Properties.Add(nameof(Revision), revision);
            settings.Properties.Add(nameof(FilterProperties.FilterExpression), FilterProperties.FilterExpression);
            settings.Properties.Add(nameof(DataBaseName), this.DataBaseName);
            if (this.SaveEach == true)
            {
                this.WriteDataSetToDirectory(dataSet, path, settings);
            }
            else
            {
                this.WriteDataSet(dataSet, path, settings);
            }
        }
示例#2
0
        public void Export(string itemPath, CremaDataSet dataSet)
        {
            if (dataSet.Tables.Any() == false)
            {
                return;
            }

            var spreadsheetWriterSettings = new SpreadsheetWriterSettings()
            {
                OmitAttribute     = this.settings.OmitAttribute,
                OmitSignatureDate = this.settings.OmitSignatureDate,
            };

            var writer   = new SpreadsheetWriter(dataSet, spreadsheetWriterSettings);
            var filename = this.OutputPath;

            if (this.settings.IsSeparable == true)
            {
                var outputPath = itemPath.Trim(PathUtility.SeparatorChar).Replace(PathUtility.SeparatorChar, '.');
                if (outputPath == string.Empty)
                {
                    outputPath = this.cremaAppHost.DataBaseName;
                }
                if (this.settings.IsIncludeDate)
                {
                    //------------------------------------------------------
                    // TableName_2017-02-17_05_11.xlsx
                    string szDate = DateTime.Now.ToString($"{this.settings.OutputDateFormat}");
                    filename = FileUtility.Prepare(this.outputPath, $"{outputPath}_{szDate}.xlsx");
                }
                else
                {
                    filename = FileUtility.Prepare(this.outputPath, outputPath + ".xlsx");
                }
            }

            using (var stream = new FileStream(filename, FileMode.Create))
            {
                writer.Write(stream);
            }
            this.configs.Commit(this.settings);
            this.configs.Commit(this);
        }
示例#3
0
        private void WriteTables(CremaDataSet dataSet, string filename)
        {
            var path     = Path.Combine(this.CommandContext.BaseDirectory, filename);
            var settings = new SpreadsheetWriterSettings()
            {
                OmitAttribute     = this.OmitAttribute,
                OmitSignatureDate = this.OmitSignatureDate,
                Tags = (TagInfo)TagsProperties.Tags,
            };
            var progress = new ConsoleProgress(this.Out)
            {
                Style = ConsoleProgressStyle.None
            };

            using (var writer = new SpreadsheetWriter(dataSet, settings))
            {
                writer.Write(path, progress);
            }
            this.Out.WriteLine($"export: \"{path}\"");
        }