public void Serialize(Type itemType, object value, IXlsxDocumentBuilder document, string sheetName, string columnPrefix, XlsxExportImport.Base.Builders.SqadXlsxSheetBuilder sheetBuilderOverride) { if (!(value is DataSet dataSet)) { throw new ArgumentException($"{nameof(value)} has invalid type!"); } var tables = dataSet.Tables; if (!string.Equals(_dataTableName, ExportViewConstants.UnformattedViewDataSheetName)) { var dataTable = tables[ExportViewConstants.UnformattedViewDataSheetName]; dataTable.TableName = _dataTableName; } ProcessInstructionsSheet(document, tables); var settings = GetSettings(tables); ProcessDataSheet(document, tables); var needCreatePivotSheet = tables.Contains(PivotTableName); var scriptBuilder = new SqadXlsxUnformattedViewScriptSheetBuilder(settings, needCreatePivotSheet, _dataTableName); document.AppendSheet(scriptBuilder); }
public void CreatePreserveCell(ExcelCell cell, IXlsxDocumentBuilder document) { string _PreservationSheetName_ = "PreservationSheet"; var preservationSheet = document.GetPreservationSheet() as XlsxExportImport.Base.Builders.SqadXlsxSheetBuilder; if (preservationSheet == null) { preservationSheet = new XlsxExportImport.Base.Builders.SqadXlsxSheetBuilder(_PreservationSheetName_, false, true, true); document.AppendSheet(preservationSheet); } else { preservationSheet.AddAndActivateNewTable(_PreservationSheetName_); } preservationSheet.AppendColumnHeaderRowItem(cell.CellHeader); Dictionary <string, object> resolveRow = new Dictionary <string, object>(); resolveRow.Add(cell.CellHeader, cell.CellValue); PopulateRows(resolveRow.Keys.ToList(), resolveRow, preservationSheet); }
private void CreatePropertySheet(IXlsxDocumentBuilder document, ActualExport value) { string name = "Properties"; //var instructionsDataTable = tables[InstructionsTableName]; var properties = new XlsxExportImport.Base.Builders.SqadXlsxSheetBuilder(name); properties.ActualRow = true; document.AppendSheet(properties); AppendColumnsAndRows(properties, value); }
private void PopulateSheets(IXlsxDocumentBuilder document, ActualExport export) { foreach (var item in export.Sheets) { var sheet = new XlsxExportImport.Base.Builders.SqadXlsxSheetBuilder(item.MediaType.Name); sheet.ExternalActualsLabel = export.ExternalActualsLabel; sheet.ActualRow = true; sheet.ColNames = PopulateNameCollection(item); // get offset var offset = export.Flights.FirstOrDefault(x => x.MediaTypeID == item.MediaType.Id); item.SetActualWorksheet(offset.CustomColumnsValues.Count); FormatWorkSheet(sheet, item, offset.CustomColumnsValues); PopulateSheetData(export.Flights.Where(x => x.MediaTypeID == item.MediaType.Id).ToList(), sheet, item); //HideShowMeasureColumns(sheet, item); document.AppendSheet(sheet); } }
public void Serialize(Type itemType, object value, IXlsxDocumentBuilder document, string sheetName, string columnPrefix, XlsxExportImport.Base.Builders.SqadXlsxSheetBuilder sheetbuilderOverride) { if (!(value is DeliverySourceExportDataModel exportData)) { throw new ArgumentException($"{nameof(value)} has invalid type!"); } var dataTable = CreateDataTable(exportData); var sheetBuilder = new SqadDeliverySourceDataSheetBuilder("Data", dataTable, exportData.DeliveryPeriods.Count); document.AppendSheet(sheetBuilder); }
private void PopulateReferenceSheet(XlsxExportImport.Base.Builders.SqadXlsxSheetBuilder referenceSheet, DataTable ReferenceSheet) { //SqadXlsxSheetBuilder sb = new SqadXlsxSheetBuilder(ReferenceSheet.TableName, true); referenceSheet.AppendColumns(ReferenceSheet.Columns); foreach (DataRow r in ReferenceSheet.Rows) { Dictionary <string, object> resolveRow = new Dictionary <string, object>(); foreach (DataColumn c in ReferenceSheet.Columns) { if (c.DataType == typeof(int)) { int i = 0; if (int.TryParse(r[c].ToString(), out i)) { resolveRow.Add(c.Caption, Convert.ToInt32(i)); } } else if (c.DataType == typeof(DateTime)) { if (r[c] is System.DBNull) { resolveRow.Add(c.Caption, string.Empty); } else { resolveRow.Add(c.Caption, Convert.ToDateTime(r[c])); } } else { resolveRow.Add(c.Caption, r[c].ToString()); } } PopulateRows(resolveRow.Keys.ToList(), resolveRow, referenceSheet); } //return sb; }
private void CreateReferenceSheet(IXlsxDocumentBuilder document, int id) { var builder = new XlsxExportImport.Base.Builders.SqadXlsxSheetBuilder("Reference", isPreservationSheet: true, isHidden: true); builder.ActualRow = true; document.AppendSheet(builder); var excelinfo = new ExcelColumnInfo(id.ToString(), null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(" ", null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo("Version", null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo("2.1", null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); }
private void PopulateSheetData(List <ActualFlight> list, XlsxExportImport.Base.Builders.SqadXlsxSheetBuilder sheet, ActualWorksheet item) { NumberFormatInfo format = CultureInfo.CurrentCulture.NumberFormat; string currencyFormat = "#,##0.00"; currencyFormat = currencyFormat.Replace(",", format.CurrencyGroupSeparator).Replace(".", format.CurrencyDecimalSeparator); List <ExcelCell> row = new List <ExcelCell>(); ExcelCell cell = new ExcelCell(); foreach (var rec in list) { cell = new ExcelCell(); cell.CellHeader = item.Data; cell.CellValue = rec.DataToString(); row.Add(cell); cell = new ExcelCell(); cell.CellHeader = item.PlanName; cell.CellValue = rec.PlanName; row.Add(cell); cell = new ExcelCell(); cell.CellHeader = item.VehicleName; cell.CellValue = rec.VehicleName; row.Add(cell); cell = new ExcelCell(); cell.CellHeader = item.ProductName; cell.CellValue = rec.ProductName; row.Add(cell); cell = new ExcelCell(); cell.CellHeader = item.SubtypeName; cell.CellValue = rec.SubtypeName; row.Add(cell); cell = new ExcelCell(); cell.CellHeader = item.UnitName; cell.CellValue = rec.UnitName; row.Add(cell); cell = new ExcelCell(); cell.CellHeader = item.MarketName; cell.CellValue = rec.MarketName; row.Add(cell); cell = new ExcelCell(); cell.CellHeader = item.DemoName; cell.CellValue = rec.DemoName; row.Add(cell); foreach (var it in rec.CustomColumnsValues) { cell = new ExcelCell(); cell.CellHeader = it.Key; cell.CellValue = it.Value; row.Add(cell); } if (rec.CustomColumnsValues == null || rec.CustomColumnsValues.Count == 0) { cell = new ExcelCell(); cell.CellHeader = item.CreativeName; cell.CellValue = rec.CreativeName; row.Add(cell); cell = new ExcelCell(); cell.CellHeader = item.FundingSourceName; cell.CellValue = rec.FundingSourceName; row.Add(cell); } cell = new ExcelCell(); cell.CellHeader = item.StartDate; cell.CellValue = string.Format("{0:MM/dd/yyyy}", rec.StartDate); row.Add(cell); cell = new ExcelCell(); cell.CellHeader = item.EndDate; cell.CellValue = string.Format("{0:MM/dd/yyyy}", rec.EndDate); row.Add(cell); //planned cell = new ExcelCell(); cell.CellHeader = item.PlannedGRPs; cell.CellValue = rec.Planned.GRPs; row.Add(cell); cell = new ExcelCell(); cell.CellHeader = item.PlannedGross; cell.CellValue = rec.Planned.GrossCost; if (sheet.SheetColumns.Any(x => x.Header == item.PlannedGross)) { row.Add(cell); } cell = new ExcelCell(); cell.CellHeader = item.PlannedNet; cell.CellValue = rec.Planned.NetCost; if (sheet.SheetColumns.Any(x => x.Header == item.PlannedNet)) { row.Add(cell); } cell = new ExcelCell(); cell.CellHeader = item.PlannedProduction; cell.CellValue = rec.Planned.Production; if (sheet.SheetColumns.Any(x => x.Header == item.PlannedProduction)) { row.Add(cell); } cell = new ExcelCell(); cell.CellHeader = item.PlannedImpressions; cell.CellValue = rec.Planned.Impressions; if (sheet.SheetColumns.Any(x => x.Header == item.PlannedImpressions)) { row.Add(cell); } cell = new ExcelCell(); cell.CellHeader = item.PlannedClicks; cell.CellValue = rec.Planned.Clicks; if (sheet.SheetColumns.Any(x => x.Header == item.PlannedClicks)) { row.Add(cell); } cell = new ExcelCell(); cell.CellHeader = item.PlannedLeads; cell.CellValue = rec.Planned.Leads; if (sheet.SheetColumns.Any(x => x.Header == item.PlannedLeads)) { row.Add(cell); } cell = new ExcelCell(); cell.CellHeader = item.PlannedRichMedia; cell.CellValue = rec.Planned.RichMedia; if (sheet.SheetColumns.Any(x => x.Header == item.PlannedRichMedia)) { row.Add(cell); } cell = new ExcelCell(); cell.CellHeader = item.PlannedAdServing; cell.CellValue = rec.Planned.AdServing; if (sheet.SheetColumns.Any(x => x.Header == item.PlannedAdServing)) { row.Add(cell); } cell = new ExcelCell(); cell.CellHeader = item.PlannedTRPs; cell.CellValue = rec.Planned.TRPs; row.Add(cell); cell = new ExcelCell(); cell.CellHeader = item.PlannedReach; cell.CellValue = rec.Planned.Reach; if (sheet.SheetColumns.Any(x => x.Header == item.PlannedReach)) { row.Add(cell); } cell = new ExcelCell(); cell.CellHeader = item.PlannedFrequency; cell.CellValue = rec.Planned.Frequency; if (sheet.SheetColumns.Any(x => x.Header == item.PlannedFrequency)) { row.Add(cell); } if (rec.Actualized) { cell = new ExcelCell(); cell.CellHeader = item.DateActualized; cell.CellValue = string.Format("{0:MM/dd/yyyy}", rec.DateActualized); row.Add(cell); cell = new ExcelCell(); cell.CellHeader = item.ActualizedBy; cell.CellValue = rec.ActualizedBy; row.Add(cell); } else { cell.CellHeader = item.DateActualized; cell.CellValue = string.Empty; row.Add(cell); cell = new ExcelCell(); cell.CellHeader = item.ActualizedBy; cell.CellValue = string.Empty; row.Add(cell); } ////actual //if (rec.Actual == null) //{ // sheet.AppendRow(row); // continue; //} cell = new ExcelCell(); cell.CellHeader = item.ActualGRPs; cell.CellValue = (rec.Actual == null) ? 0 : rec.Actual.GRPs; row.Add(cell); cell = new ExcelCell(); cell.CellHeader = item.ActualGross; cell.CellValue = (rec.Actual == null) ? 0 : rec.Actual.GrossCost; if (sheet.SheetColumns.Any(x => x.Header == item.ActualGross)) { row.Add(cell); } cell = new ExcelCell(); cell.CellHeader = item.ActualNet; cell.CellValue = (rec.Actual == null) ? 0 : rec.Actual.NetCost; if (sheet.SheetColumns.Any(x => x.Header == item.ActualNet)) { row.Add(cell); } cell = new ExcelCell(); cell.CellHeader = item.ActualProduction; cell.CellValue = (rec.Actual == null) ? 0 : rec.Actual.Production; if (sheet.SheetColumns.Any(x => x.Header == item.ActualProduction)) { row.Add(cell); } cell = new ExcelCell(); cell.CellHeader = item.ActualImpressions; cell.CellValue = (rec.Actual == null) ? 0 : rec.Actual.Impressions; if (sheet.SheetColumns.Any(x => x.Header == item.ActualImpressions)) { row.Add(cell); } cell = new ExcelCell(); cell.CellHeader = item.ActualClicks; cell.CellValue = (rec.Actual == null) ? 0 : rec.Actual.Clicks; if (sheet.SheetColumns.Any(x => x.Header == item.ActualClicks)) { row.Add(cell); } cell = new ExcelCell(); cell.CellHeader = item.ActualLeads; cell.CellValue = (rec.Actual == null) ? 0 : rec.Actual.Leads; if (sheet.SheetColumns.Any(x => x.Header == item.ActualLeads)) { row.Add(cell); } cell = new ExcelCell(); cell.CellHeader = item.ActualRichMedia; cell.CellValue = (rec.Actual == null) ? 0 : rec.Actual.RichMedia; if (sheet.SheetColumns.Any(x => x.Header == item.ActualRichMedia)) { row.Add(cell); } cell = new ExcelCell(); cell.CellHeader = item.ActualAdServing; cell.CellValue = (rec.Actual == null) ? 0 : rec.Actual.AdServing; if (sheet.SheetColumns.Any(x => x.Header == item.ActualAdServing)) { row.Add(cell); } cell = new ExcelCell(); cell.CellHeader = item.ActualTRPs; cell.CellValue = (rec.Actual == null) ? 0 : rec.Actual.TRPs; row.Add(cell); cell = new ExcelCell(); cell.CellHeader = item.ActualReach; cell.CellValue = (rec.Actual == null) ? 0 : rec.Actual.Reach; if (sheet.SheetColumns.Any(x => x.Header == item.ActualReach)) { row.Add(cell); } cell = new ExcelCell(); cell.CellHeader = item.ActualFrequency; cell.CellValue = (rec.Actual == null) ? 0 : rec.Actual.Frequency; if (sheet.SheetColumns.Any(x => x.Header == item.ActualFrequency)) { row.Add(cell); } sheet.AppendRow(row); } }
private void FormatWorkSheet(XlsxExportImport.Base.Builders.SqadXlsxSheetBuilder builder, ActualWorksheet item, Dictionary <string, string> custom) { var excelinfo = new ExcelColumnInfo(item.Data, null, new ExcelColumnAttribute() { IsHidden = true }, null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.PlanName, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.VehicleName, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.ProductName, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.SubtypeName, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.UnitName, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.MarketName, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.DemoName, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); if (custom != null && custom.Count > 0) { foreach (var it in custom) { excelinfo = new ExcelColumnInfo(it.Key, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); } } else { excelinfo = new ExcelColumnInfo(item.CreativeName, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.FundingSourceName, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); } excelinfo = new ExcelColumnInfo(item.StartDate, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.EndDate, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); //planned excelinfo = new ExcelColumnInfo(item.PlannedGRPs, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.PlannedTRPs, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); var hidden = !(Convert.ToBoolean(item.MediaType.EnableWeeklyReach) || Convert.ToInt16(item.MediaType.ReachType) > 0); excelinfo = new ExcelColumnInfo(item.PlannedReach, null, new ExcelColumnAttribute() { IsHidden = hidden }, null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.PlannedFrequency, null, new ExcelColumnAttribute() { IsHidden = hidden }, null); builder.AppendColumnHeaderRowItem(excelinfo); var shownet = Convert.ToBoolean(item.MediaType.ExternalActualsNet); excelinfo = new ExcelColumnInfo(item.PlannedGross, null, new ExcelColumnAttribute() { IsHidden = shownet }, null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.PlannedNet, null, new ExcelColumnAttribute() { IsHidden = !shownet }, null); builder.AppendColumnHeaderRowItem(excelinfo); PopulatePlannedActualColumns(builder, item); //actual excelinfo = new ExcelColumnInfo(item.ActualGRPs, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.ActualTRPs, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.ActualReach, null, new ExcelColumnAttribute() { IsHidden = hidden }, null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.ActualFrequency, null, new ExcelColumnAttribute() { IsHidden = hidden }, null); builder.AppendColumnHeaderRowItem(excelinfo); //if (!shownet) //{ // excelinfo = new ExcelColumnInfo(item.ActualGross, null, new ExcelColumnAttribute(), null); // builder.AppendColumnHeaderRowItem(excelinfo); //} //else //{ // excelinfo = new ExcelColumnInfo(item.ActualNet, null, new ExcelColumnAttribute(), null); // builder.AppendColumnHeaderRowItem(excelinfo); //} excelinfo = new ExcelColumnInfo(item.ActualGross, null, new ExcelColumnAttribute() { IsHidden = shownet }, null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.ActualNet, null, new ExcelColumnAttribute() { IsHidden = !shownet }, null); builder.AppendColumnHeaderRowItem(excelinfo); PopulatePlannedActualColumns(builder, item, true); excelinfo = new ExcelColumnInfo(item.DateActualized, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.ActualizedBy, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); }
public void Serialize(Type itemType, object value, IXlsxDocumentBuilder document, string sheetName, string columnPrefix, XlsxExportImport.Base.Builders.SqadXlsxSheetBuilder sheetBuilderOverride) { if (!(value is ActualExport ae)) { throw new ArgumentException($"{nameof(value)} has invalid type!"); } var export = (ActualExport)value; CreatePropertySheet(document, export); PopulateSheets(document, export); CreateReferenceSheet(document, export.Id); }
private void PopulatePlannedActualColumns(XlsxExportImport.Base.Builders.SqadXlsxSheetBuilder builder, ActualWorksheet item, bool actual = false) { switch (item.MediaType.MediaClass) { case (int)MediaClass.Print: case (int)MediaClass.Newspaper: case (int)MediaClass.ReachBased: if (!actual) { //visible var excelinfo = new ExcelColumnInfo(item.PlannedProduction, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); //unvisible excelinfo = new ExcelColumnInfo(item.PlannedImpressions, null, new ExcelColumnAttribute() { IsHidden = true }, null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.PlannedClicks, null, new ExcelColumnAttribute() { IsHidden = true }, null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.PlannedLeads, null, new ExcelColumnAttribute() { IsHidden = true }, null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.PlannedRichMedia, null, new ExcelColumnAttribute() { IsHidden = true }, null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.PlannedAdServing, null, new ExcelColumnAttribute() { IsHidden = true }, null); builder.AppendColumnHeaderRowItem(excelinfo); } else { var excelinfo = new ExcelColumnInfo(item.ActualProduction, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.ActualImpressions, null, new ExcelColumnAttribute() { IsHidden = true }, null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.ActualClicks, null, new ExcelColumnAttribute() { IsHidden = true }, null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.ActualLeads, null, new ExcelColumnAttribute() { IsHidden = true }, null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.ActualRichMedia, null, new ExcelColumnAttribute() { IsHidden = true }, null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.ActualAdServing, null, new ExcelColumnAttribute() { IsHidden = true }, null); builder.AppendColumnHeaderRowItem(excelinfo); } break; case (int)MediaClass.Interactive: if (!actual) { var excelinfo = new ExcelColumnInfo(item.PlannedProduction, null, new ExcelColumnAttribute() { IsHidden = true }, null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.PlannedImpressions, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.PlannedClicks, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.PlannedLeads, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.PlannedRichMedia, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.PlannedAdServing, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); } else { var excelinfo = new ExcelColumnInfo(item.ActualProduction, null, new ExcelColumnAttribute() { IsHidden = true }, null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.ActualImpressions, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.ActualClicks, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.ActualLeads, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.ActualRichMedia, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.ActualAdServing, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); } break; default: if (!actual) { var excelinfo = new ExcelColumnInfo(item.PlannedProduction, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.PlannedImpressions, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.PlannedClicks, null, new ExcelColumnAttribute() { IsHidden = true }, null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.PlannedLeads, null, new ExcelColumnAttribute() { IsHidden = true }, null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.PlannedRichMedia, null, new ExcelColumnAttribute() { IsHidden = true }, null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.PlannedAdServing, null, new ExcelColumnAttribute() { IsHidden = true }, null); builder.AppendColumnHeaderRowItem(excelinfo); } else { var excelinfo = new ExcelColumnInfo(item.ActualProduction, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.ActualImpressions, null, new ExcelColumnAttribute(), null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.ActualClicks, null, new ExcelColumnAttribute() { IsHidden = true }, null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.ActualLeads, null, new ExcelColumnAttribute() { IsHidden = true }, null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.ActualRichMedia, null, new ExcelColumnAttribute() { IsHidden = true }, null); builder.AppendColumnHeaderRowItem(excelinfo); excelinfo = new ExcelColumnInfo(item.ActualAdServing, null, new ExcelColumnAttribute() { IsHidden = true }, null); builder.AppendColumnHeaderRowItem(excelinfo); } break; } }
public void Serialize(Type itemType, object value, IXlsxDocumentBuilder document, string sheetName, string columnPrefix, XlsxExportImport.Base.Builders.SqadXlsxSheetBuilder sheetBuilderOverride) { if (!(value is DataTable dataTable)) { throw new ArgumentException($"{nameof(value)} has invalid type!"); } var dataRows = dataTable.Rows.Cast <DataRow>(); var records = dataRows.Select(x => new FormattedExcelDataRow(x)).ToList(); var columns = dataTable.Columns; columns.RemoveAt(columns.Count - 1); var sheetBuilder = new SqadXlsxFormattedViewSheetBuilder(records.Count(x => x.IsHeader), _viewLabel); document.AppendSheet(sheetBuilder); sheetBuilder.AppendColumns(columns); PopulateData(sheetBuilder, columns, records); var scriptBuilder = new SqadXlsxFormattedViewScriptsSheetBuilder(_viewLabel); document.AppendSheet(scriptBuilder); }
public void Serialize(Type itemType, object value, IXlsxDocumentBuilder document, string sheetName, string columnPrefix, XlsxExportImport.Base.Builders.SqadXlsxSheetBuilder sheetbuilderOverride) { if (!(value is ApprovalReportExportRequestModel approvalReportExportRequest)) { throw new ArgumentException($"{nameof(value)} has invalid type!"); } var approvalReportDataTable = CreateApprovalReportDataTable(approvalReportExportRequest); var columns = approvalReportDataTable.Columns; var rows = approvalReportDataTable.Rows; var startDateApprovalReport = approvalReportExportRequest.StartDate; var endDateApprovalReport = approvalReportExportRequest.EndDate; var approvalType = string.Join(',', approvalReportExportRequest.ApprovalReports.Select(item => item.ApprovalType).Distinct()); //We should minus 2 for count columns for delete IsEvenGroup and CurrencySymbol from Worksheet. Because it's flag field var sheetBuilder = new SqadXlsxApprovalReportSheetBuilder(startHeaderIndex: 5, startDataIndex: 6, totalCountColumns: columns.Count - 2, totalCountRows: rows.Count, startDateApprovalReport: startDateApprovalReport, endDateApprovalReport: endDateApprovalReport, approvalType: approvalType); document.AppendSheet(sheetBuilder); sheetBuilder.AppendColumns(columns); PopulateData(sheetBuilder, columns, rows.Cast <DataRow>().Select(item => new ExcelDataRow(item))); }
public void CreateReferenceCell(ExcelColumnInfo info, string columnName, IXlsxDocumentBuilder document, ref ExcelCell cell) { if (_staticValuesResolver == null) { return; } DataTable columntResolveTable = null; if (info.PropertyType != null && info.PropertyType.BaseType == typeof(Enum)) { columntResolveTable = _staticValuesResolver.GetRecordsFromEnum(info.PropertyType); info.ExcelColumnAttribute.ResolveFromTable = columnName; } else if (string.IsNullOrEmpty(info.ExcelColumnAttribute.ResolveFromTable) == false) { _resolveTables.TryGetValue(info.ExcelColumnAttribute.ResolveFromTable, out columntResolveTable); if (columntResolveTable == default(DataTable)) { columntResolveTable = _staticValuesResolver.GetRecordsByTableName(info.ExcelColumnAttribute.ResolveFromTable); if (columntResolveTable != null) { _resolveTables.Add(info.ExcelColumnAttribute.ResolveFromTable, columntResolveTable); } } } if (!_isExportJsonToXls) { if (columntResolveTable != null) { columntResolveTable.TableName = info.ExcelColumnAttribute.ResolveFromTable; if (string.IsNullOrEmpty(info.ExcelColumnAttribute.OverrideResolveTableName) == false) { columntResolveTable.TableName = info.ExcelColumnAttribute.OverrideResolveTableName; } cell.DataValidationSheet = columntResolveTable.TableName; var referenceSheet = document.GetReferenceSheet() as XlsxExportImport.Base.Builders.SqadXlsxSheetBuilder; if (referenceSheet == null) { referenceSheet = new XlsxExportImport.Base.Builders.SqadXlsxSheetBuilder(cell.DataValidationSheet, true); document.AppendSheet(referenceSheet); } else { referenceSheet.AddAndActivateNewTable(cell.DataValidationSheet); } cell.DataValidationBeginRow = referenceSheet.GetNextAvailableRow(); this.PopulateReferenceSheet(referenceSheet, columntResolveTable); cell.DataValidationRowsCount = referenceSheet.GetCurrentRowCount; if (string.IsNullOrEmpty(info.ExcelColumnAttribute.ResolveName) == false) { cell.DataValidationNameCellIndex = referenceSheet.GetColumnIndexByColumnName(info.ExcelColumnAttribute.ResolveName); } if (string.IsNullOrEmpty(info.ExcelColumnAttribute.ResolveValue) == false) { cell.DataValidationValueCellIndex = referenceSheet.GetColumnIndexByColumnName(info.ExcelColumnAttribute.ResolveValue); } } else if (string.IsNullOrEmpty(info.ExcelColumnAttribute.ResolveFromTable) == false) { columntResolveTable = _staticValuesResolver.GetRecordsByTableName(info.ExcelColumnAttribute.ResolveFromTable); } } }
public void Serialize(Type itemType, object value, IXlsxDocumentBuilder document, string sheetName = null, string columnPrefix = null, XlsxExportImport.Base.Builders.SqadXlsxSheetBuilder sheetBuilderOverride = null) { ExcelColumnInfoCollection columnInfo = _columnResolver.GetExcelColumnInfo(itemType, value, sheetName); XlsxExportImport.Base.Builders.SqadXlsxSheetBuilder sheetBuilder = null; if (sheetName == null) { var sheetAttribute = itemType.GetCustomAttributes(true).SingleOrDefault(s => s is ExcelSheetAttribute); sheetName = sheetAttribute != null ? (sheetAttribute as ExcelSheetAttribute).SheetName : itemType.Name; } if (columnInfo.Any()) { if (sheetBuilderOverride == null) { sheetBuilder = document.GetSheetByName(sheetName) as XlsxExportImport.Base.Builders.SqadXlsxSheetBuilder; } else { sheetBuilder = sheetBuilderOverride; } if (sheetBuilder == null) { sheetBuilder = new XlsxExportImport.Base.Builders.SqadXlsxSheetBuilder(sheetName); //Move this to attribute hidden property //if (new List<string>() { "Formulas", "LeftTableColumn", "Cells" }.Contains(sheetName)) //{ // sheetBuilder.IsHidden = true; //} document.AppendSheet(sheetBuilder); } //Convert Dictionary Column foreach (var col in columnInfo) { if (col.PropertyName.EndsWith("_Dict_")) { string columnName = col.PropertyName.Replace("_Dict_", ""); object colValueDict = null; if (sheetName == col.PropertyName.Replace("_Dict_", "")) { colValueDict = value; } else { colValueDict = GetFieldOrPropertyValue(value, col.PropertyName.Replace("_Dict_", "")); } if (columnName.Contains(":") && (colValueDict == null || (colValueDict != null && string.IsNullOrEmpty(colValueDict.ToString())))) { colValueDict = GetFieldPathValue(value, columnName); } if (colValueDict == null || string.IsNullOrEmpty(colValueDict.ToString())) { continue; } object dictionaryKeys = colValueDict.GetType().GetProperty("Keys").GetValue(colValueDict); int count = 0; foreach (var key in (System.Collections.IEnumerable)dictionaryKeys) { ExcelColumnInfo temlKeyColumn = col.Clone() as ExcelColumnInfo; temlKeyColumn.PropertyName = temlKeyColumn.PropertyName.Replace("_Dict_", $":Key:{count}"); sheetBuilder.AppendColumnHeaderRowItem(temlKeyColumn); var currentItem = colValueDict.GetType().GetProperty("Item").GetValue(colValueDict, new object[] { key }); if (FormatterUtils.IsSimpleType(currentItem.GetType())) { ExcelColumnInfo temlValueColumn = col.Clone() as ExcelColumnInfo; temlValueColumn.PropertyName = temlValueColumn.PropertyName.Replace("_Dict_", $":Value:{count}"); sheetBuilder.AppendColumnHeaderRowItem(temlValueColumn); } else { string path = col.PropertyName.Replace("_Dict_", $":Value:{count}"); this.Serialize(currentItem.GetType(), value, document, sheetName, path, sheetBuilderOverride); } count++; } } else if (col.PropertyName.EndsWith("_List_")) { string columnName = col.PropertyName.Replace("_List_", ""); List <object> colListValue = GetFieldOrPropertyValue(value, col.PropertyName.Replace("_List_", "")) as List <object>; if (columnName.Contains(":") && (colListValue == null || (colListValue != null && string.IsNullOrEmpty(colListValue.ToString())))) { colListValue = GetFieldPathValue(value, columnName) as List <object>; } if (colListValue == null) { continue; } int dictColumnCount = colListValue.Count(); for (int i = 0; i < dictColumnCount; i++) { string listColumnPrefix = col.PropertyName.Replace("_List_", $":{i}"); if (FormatterUtils.IsSimpleType(colListValue[i].GetType())) { ExcelColumnInfo colToAppend = (ExcelColumnInfo)col.Clone(); colToAppend.PropertyName = listColumnPrefix; sheetBuilder.AppendColumnHeaderRowItem(colToAppend); } else { this.Serialize(colListValue[i].GetType(), colListValue[i], document, null, listColumnPrefix, sheetBuilder); } } } else if (col.PropertyName.EndsWith("_CustomField_") || col.PropertyName.EndsWith("_CustomField_Single_")) { string columnName = col.PropertyName.Replace("_CustomField_", "").Replace("Single_", ""); List <object> colCustomFields = GetFieldOrPropertyValue(value, columnName) as List <object>; if (columnName.Contains(":") && (colCustomFields == null || (colCustomFields != null && string.IsNullOrEmpty(colCustomFields.ToString())))) { colCustomFields = GetFieldPathValue(value, columnName) as List <object>; } if (colCustomFields == null) { continue; } foreach (var customField in colCustomFields) { int customFieldId = ((dynamic)customField).ID; bool isActual = ((dynamic)customField).Actual; ExcelColumnInfo temlKeyColumn = col.Clone() as ExcelColumnInfo; string propetyActual = isActual ? ":Actual" : string.Empty; string customFieldDef = _staticValuesResolver.GetCustomFieldName(customFieldId); if (col.PropertyName.EndsWith("_CustomField_Single_")) { customFieldDef = string.Empty; temlKeyColumn.PropertyName = temlKeyColumn.PropertyName.Replace("_CustomField_Single_", $"{propetyActual}"); temlKeyColumn.ExcelColumnAttribute.Header = temlKeyColumn.Header = temlKeyColumn.PropertyName; } else { temlKeyColumn.PropertyName = temlKeyColumn.PropertyName.Replace("_CustomField_", $"{propetyActual}:{customFieldId}"); temlKeyColumn.ExcelColumnAttribute.Header = temlKeyColumn.Header = temlKeyColumn.PropertyName + ":" + customFieldDef; } sheetBuilder.AppendColumnHeaderRowItem(temlKeyColumn); } } else { if (columnPrefix != null) { ExcelColumnInfo temlKeyColumn = col.Clone() as ExcelColumnInfo; temlKeyColumn.PropertyName = $"{columnPrefix}:{temlKeyColumn.PropertyName}"; sheetBuilder.AppendColumnHeaderRowItem(temlKeyColumn); } else { sheetBuilder.AppendColumnHeaderRowItem(col); } } } } //if its recursive do not populate rows and return to parent if (columnPrefix != null) { return; } if (sheetName != null && sheetBuilder == null) { sheetBuilder = (XlsxExportImport.Base.Builders.SqadXlsxSheetBuilder)document.GetSheetByName(sheetName); } //adding rows data if (value != null) { var columns = columnInfo.Keys.ToList(); if (value is IEnumerable <object> && (value as IEnumerable <object>).Count() > 0) { foreach (var dataObj in value as IEnumerable <object> ) { PopulateRows(columns, dataObj, sheetBuilder, columnInfo, document); var deepSheetsInfo = _sheetResolver.GetExcelSheetInfo(itemType, dataObj); PopulateInnerObjectSheets(deepSheetsInfo, document, itemType); } } else if (!(value is IEnumerable <object>)) { PopulateRows(columns, value, sheetBuilder, columnInfo, document); var sheetsInfo = _sheetResolver.GetExcelSheetInfo(itemType, value); PopulateInnerObjectSheets(sheetsInfo, document, itemType); } } if (sheetBuilder != null) { sheetBuilder.ShouldAddHeaderRow = true; } }
private void PopulateRows(List <string> columns, object value, XlsxExportImport.Base.Builders.SqadXlsxSheetBuilder sheetBuilder, ExcelColumnInfoCollection columnInfo = null, IXlsxDocumentBuilder document = null, List <ExcelCell> rowOverride = null) { if (sheetBuilder == null) { return; } List <ExcelCell> row = new List <ExcelCell>(); if (rowOverride != null) { row = rowOverride; } for (int i = 0; i <= columns.Count - 1; i++) { string columnName = columns[i]; if (columnName.EndsWith("_Dict_")) { columnName = columnName.Replace("_Dict_", ""); object dictionaryObj = null; if (sheetBuilder.GetCurrentTableName == columnName) { dictionaryObj = value; } else if (columnName.Contains(":")) { dictionaryObj = GetFieldPathValue(value, columnName); } else { dictionaryObj = (Dictionary <int, double>)GetFieldOrPropertyValue(value, columnName); } if (dictionaryObj == null || string.IsNullOrEmpty(dictionaryObj.ToString())) { continue; } object dictionaryKeys = dictionaryObj.GetType().GetProperty("Keys").GetValue(dictionaryObj); int colCount = 0; foreach (var key in (System.Collections.IEnumerable)dictionaryKeys) { ExcelCell keyCell = new ExcelCell(); keyCell.CellHeader = columnName + $":Key:{colCount}"; keyCell.CellValue = key; ExcelColumnInfo info = null; if (columnInfo != null) { info = columnInfo[i]; CreateReferenceCell(info, columnName, document, ref keyCell); } row.Add(keyCell); var currentItem = dictionaryObj.GetType().GetProperty("Item").GetValue(dictionaryObj, new object[] { key }); if (FormatterUtils.IsSimpleType(currentItem.GetType())) { ExcelCell valueCell = new ExcelCell(); valueCell.CellHeader = columnName + $":Value:{colCount}"; valueCell.CellValue = currentItem; row.Add(valueCell); } else { string path = columnName + $":Value:{colCount}"; ExcelColumnInfoCollection listInnerObjectColumnInfo = _columnResolver.GetExcelColumnInfo(currentItem.GetType(), currentItem, path, true); PopulateRows(listInnerObjectColumnInfo.Keys.ToList(), currentItem, sheetBuilder, listInnerObjectColumnInfo, document, row); } colCount++; } } else if (columnName.EndsWith("_List_")) { columnName = columnName.Replace("_List_", ""); List <object> listValue = new List <object>(); if (columnName.Contains(":")) { var valueObject = GetFieldPathValue(value, columnName); if (valueObject != null && string.IsNullOrEmpty(valueObject.ToString()) == false) { listValue = (List <object>)valueObject; } } else { listValue = (List <object>)GetFieldOrPropertyValue(value, columnName); } int colCount = 0; foreach (var kv in listValue) { string listColumnPrefix = columnName + $":{colCount}"; if (FormatterUtils.IsSimpleType(kv.GetType())) { ExcelCell listValueCell = new ExcelCell(); listValueCell.CellHeader = listColumnPrefix; listValueCell.CellValue = kv; row.Add(listValueCell); } else { ExcelColumnInfoCollection listInnerObjectColumnInfo = _columnResolver.GetExcelColumnInfo(kv.GetType(), kv, listColumnPrefix, true); PopulateRows(listInnerObjectColumnInfo.Keys.ToList(), kv, sheetBuilder, listInnerObjectColumnInfo, document, row); } colCount++; } } else if (columnName.EndsWith("_CustomField_") || columnName.EndsWith("_CustomField_Single_")) { bool isSingleValue = columnName.Contains("Single_"); columnName = columnName.Replace("_CustomField_", "").Replace("Single_", ""); List <object> customFields = null; if (columnName.Contains(":")) { var valueObject = GetFieldPathValue(value, columnName); if (valueObject != null && string.IsNullOrEmpty(valueObject.ToString()) == false) { customFields = (List <object>)valueObject; } } else { customFields = (List <object>)GetFieldOrPropertyValue(value, columnName); } if (customFields == null) { continue; } //need to get all custom columns List <ExcelColumnInfo> allCustomColumns = null; if (isSingleValue) { allCustomColumns = sheetBuilder.SheetColumns.Where(w => w.PropertyName == columnName).ToList(); } else { allCustomColumns = sheetBuilder.SheetColumns.Where(w => w.PropertyName.StartsWith(columnName)).ToList(); } var objID = GetFieldOrPropertyValue(value, "ID"); foreach (var customColumn in allCustomColumns) { object objectCustomField = customFields.Where(w => customColumn.PropertyName.EndsWith($":{((dynamic)w).ID}")).Where(w => customColumn.PropertyName.Contains("Actual") ? ((dynamic)w).Actual == true : ((dynamic)w).Actual == false).FirstOrDefault(); ExcelCell customValueHeaderCell = new ExcelCell(); if (objectCustomField == null && !isSingleValue) { customValueHeaderCell.IsLocked = true; customValueHeaderCell.CellHeader = customColumn.Header; customValueHeaderCell.CellValue = "n/a"; } else { dynamic customFieldItem = (dynamic)objectCustomField; string isActualText = string.Empty; string columnNameCombined = string.Empty; if (isSingleValue) { isActualText = columnName.Contains("Actual") ? ":Actual" : string.Empty; columnNameCombined = $"{columnName}{isActualText}"; customFieldItem = (dynamic)customFields.First(); } else { isActualText = customFieldItem.Actual ? ":Actual" : string.Empty; columnNameCombined = $"{columnName}{isActualText}:{customFieldItem.ID}"; } customValueHeaderCell.CellHeader = customColumn.Header; if (customFieldItem is CustomFieldModel) { if (!String.IsNullOrEmpty((customFieldItem as CustomFieldModel).Key)) { ExcelCell keyPreservationCell = new ExcelCell(); keyPreservationCell.CellHeader = $"{columnNameCombined}:Key:{objID}"; keyPreservationCell.CellValue = customFieldItem.Key?.ToString(); CreatePreserveCell(keyPreservationCell, document); } } ExcelCell valuePreservationCell = new ExcelCell(); valuePreservationCell.CellHeader = $"{columnNameCombined}:Value:{objID}"; if (customFieldItem != null) { valuePreservationCell.CellValue = customFieldItem.Value; customValueHeaderCell.CellValue = customFieldItem.Value; if (customFieldItem.Override != null) { customValueHeaderCell.CellValue = customFieldItem.Override; } } if (valuePreservationCell.CellValue != null && valuePreservationCell.CellValue.GetType() == typeof(DateTime)) { valuePreservationCell.CellValue = valuePreservationCell.CellValue.ToString(); } if (customValueHeaderCell.CellValue != null && customValueHeaderCell.CellValue.GetType() == typeof(DateTime)) { customValueHeaderCell.CellValue = customValueHeaderCell.CellValue.ToString(); } CreatePreserveCell(valuePreservationCell, document); ExcelCell overridePreservationCell = new ExcelCell(); overridePreservationCell.CellHeader = $"{columnNameCombined}:Override:{objID}"; overridePreservationCell.CellValue = customFieldItem.Override?.ToString(); CreatePreserveCell(overridePreservationCell, document); ExcelCell textPreservationCell = new ExcelCell(); textPreservationCell.CellHeader = $"{columnNameCombined}:Text:{objID}"; textPreservationCell.CellValue = customFieldItem.Text; CreatePreserveCell(textPreservationCell, document); ExcelCell hiddenTextPreservationCell = new ExcelCell(); hiddenTextPreservationCell.CellHeader = $"{columnNameCombined}:HiddenText:{objID}"; hiddenTextPreservationCell.CellValue = $"\"{customFieldItem.HiddenText}\""; CreatePreserveCell(hiddenTextPreservationCell, document); try { if (customFieldItem is CustomFieldModel && (customFieldItem as CustomFieldModel).ValueMix != null) { foreach (var valueM in (customFieldItem as CustomFieldModel).ValueMix) { string valueMKey = valueM.Key; decimal valueMValue = valueM.Value; ExcelCell mixedPropertyPreservationCell = new ExcelCell(); mixedPropertyPreservationCell.CellHeader = $"{columnNameCombined}:ValueMix:{valueM.Key}:{objID}"; mixedPropertyPreservationCell.CellValue = $"\"{valueM.Value.ToString()}\""; CreatePreserveCell(mixedPropertyPreservationCell, document); } } } catch (Exception ex) { string s = ex.Message; } ExcelCell commonPropertyPreservationCell = new ExcelCell(); commonPropertyPreservationCell.CellHeader = $"{columnNameCombined}:Common:{objID}"; commonPropertyPreservationCell.CellValue = $"\"{customFieldItem.Common}\""; CreatePreserveCell(commonPropertyPreservationCell, document); } row.Add(customValueHeaderCell); } } else { ExcelCell cell = new ExcelCell(); cell.CellHeader = columnName; var cellValue = GetFieldOrPropertyValue(value, columnName); if (columnName.Contains(":") && (cellValue == null || (cellValue != null && string.IsNullOrEmpty(cellValue.ToString())))) { cellValue = GetFieldPathValue(value, columnName); } ExcelColumnInfo info = null; if (columnInfo != null) { info = columnInfo[i]; CreateReferenceCell(info, columnName, document, ref cell); } if (cellValue != null) { cell.CellValue = FormatCellValue(cellValue, info); } if (info != null) { if (info.IsExcelHeaderDefined) { cell.CellHeader = info.Header; } } row.Add(cell); } } if (row.Count() > 0 && rowOverride == null) { sheetBuilder.AppendRow(row.ToList()); } }