private async void btPrint_Click(object sender, EventArgs e) { var result = await Task <bool> .Factory.StartNew(() => { if (dtData == null || dtData.Rows.Count == 0 || dtData.DefaultView.Count == 0) { MessageBox.Show("Нет данных для формирования отчёта.", "Печать", MessageBoxButtons.OK, MessageBoxIcon.Information); return(false); } report = new Nwuram.Framework.ToExcelNew.ExcelUnLoad(); int indexRow = 1; int maxColumns = 0; Config.DoOnUIThread(() => { blockers.SaveControlsEnabledState(this); blockers.SetControlsEnabled(this, false); progressBar1.Visible = true; Logging.StartFirstLevel(79); Logging.Comment("Произведена выгрузка отчета из формы \"Сравнение наименований товаров\" со следующими фильтрами:"); Logging.Comment($"Отдел ID:{cmbDeps.SelectedValue}; Наименование:{cmbDeps.Text}"); Logging.Comment($"Т/У группа ID:{cmbTU.SelectedValue}; Наименование:{cmbTU.Text}"); Logging.Comment($"Инв. группа ID:{cmbInv.SelectedValue}; Наименование:{cmbInv.Text}"); Logging.Comment($"Тип товара:{(rbAll.Checked ? rbAll.Text : rbSingle.Checked ? rbSingle.Text : rbMass.Text)}"); if (tbEan.Text.Trim().Length > 0) { Logging.Comment($"EAN:{tbEan.Text}"); } if (tbNameTerminal.Text.Trim().Length > 0) { Logging.Comment($"Наименование товара на кассе:{tbNameTerminal.Text}"); } if (tbName.Text.Trim().Length > 0) { Logging.Comment($"Короткое наименование товар на сайте:{tbName.Text}"); } Logging.StopFirstLevel(); }, this); foreach (DataGridViewColumn col in dgvData.Columns) { if (!col.Visible || col.Name.Equals(cV.Name)) { continue; } maxColumns++; if (col.Name.Equals(cEan.Name)) { setWidthColumn(indexRow, maxColumns, 17, report); } else { setWidthColumn(indexRow, maxColumns, 60, report); } } #region "Head" report.Merge(indexRow, 1, indexRow, maxColumns); report.SetWrapText(indexRow, 1, indexRow, 1); report.SetRowHeight(indexRow, 1, indexRow, 1, 45); report.AddSingleValue($"Сравнение наименований товаров", indexRow, 1); report.SetFontBold(indexRow, 1, indexRow, 1); report.SetFontSize(indexRow, 1, indexRow, 1, 16); report.SetCellAlignmentToCenter(indexRow, 1, indexRow, 1); indexRow++; indexRow++; Config.DoOnUIThread(() => { report.Merge(indexRow, 1, indexRow, maxColumns); report.AddSingleValue($"Отдел: {cmbDeps.Text}", indexRow, 1); indexRow++; report.Merge(indexRow, 1, indexRow, maxColumns); report.AddSingleValue($"Т/У группа: {cmbTU.Text}", indexRow, 1); indexRow++; report.Merge(indexRow, 1, indexRow, maxColumns); report.AddSingleValue($"Инв. группа: {cmbInv.Text}", indexRow, 1); indexRow++; string typeGoods = rbAll.Checked ? rbAll.Text : rbMass.Checked ? rbMass.Text : rbSingle.Checked ? rbSingle.Text : ""; report.Merge(indexRow, 1, indexRow, maxColumns); report.AddSingleValue($"Тип товара: {typeGoods}", indexRow, 1); indexRow++; report.Merge(indexRow, 1, indexRow, maxColumns); report.AddSingleValue($"Отдел: {cmbDeps.Text}", indexRow, 1); indexRow++; report.Merge(indexRow, 1, indexRow, maxColumns); report.AddSingleValue("Выгрузил: " + Nwuram.Framework.Settings.User.UserSettings.User.FullUsername, indexRow, 1); indexRow++; report.Merge(indexRow, 1, indexRow, maxColumns); report.AddSingleValue("Дата выгрузки: " + DateTime.Now.ToString(), indexRow, 1); }, this); indexRow++; indexRow++; #endregion int j = 0; foreach (DataGridViewColumn col in dgvData.Columns) { if (!col.Visible || col.Name.Equals(cV.Name)) { continue; } j++; report.AddSingleValue(col.HeaderText, indexRow, j); } report.SetFontBold(indexRow, 1, indexRow, maxColumns); report.SetBorders(indexRow, 1, indexRow, maxColumns); report.SetCellAlignmentToCenter(indexRow, 1, indexRow, maxColumns); report.SetCellAlignmentToJustify(indexRow, 1, indexRow, maxColumns); report.SetWrapText(indexRow, 1, indexRow, maxColumns); indexRow++; foreach (DataRowView row in dtData.DefaultView) { j = 0; foreach (DataGridViewColumn col in dgvData.Columns) { if (!col.Visible || col.Name.Equals(cV.Name)) { continue; } j++; setValueToCell(indexRow, j, row[col.DataPropertyName]); } report.SetBorders(indexRow, 1, indexRow, maxColumns); report.SetCellAlignmentToCenter(indexRow, 1, indexRow, maxColumns); report.SetCellAlignmentToJustify(indexRow, 1, indexRow, maxColumns); report.SetWrapText(indexRow, 1, indexRow, maxColumns); indexRow++; } Config.DoOnUIThread(() => { blockers.RestoreControlEnabledState(this); progressBar1.Visible = false; }, this); report.SetPageSetup(1, 9999, true); report.ShowPreview(); return(true); }); }