public static byte[] GetClientConditionsMonitoring(ClientConditionsMonitoringFilter filter) { var book = new HSSFWorkbook(); var sheet = book.CreateSheet("Мониторинг выставления условий клиенту"); var row = 0; var col = 0; // выбираем данные var report = filter.Find(); // создаем строку var sheetRow = sheet.CreateRow(row++); var headerStyle = NPOIExcelHelper.GetHeaderStype(book); // выводим наименование отчета var headerCell = sheetRow.CreateCell(0); headerCell.CellStyle = headerStyle; headerCell.SetCellValue("Мониторинг выставления условий клиенту"); // дата построения отчета sheetRow = sheet.CreateRow(row++); var dateCell = sheetRow.CreateCell(0); dateCell.SetCellValue(String.Format("Дата подготовки отчета: {0}", DateTime.Now)); // наименование аптеки sheetRow = sheet.CreateRow(row++); dateCell = sheetRow.CreateCell(0); dateCell.SetCellValue(String.Format("Наименование аптеки: {0}", filter.ClientName)); // добавляем пустую строку перед таблицей sheet.CreateRow(row++); sheetRow = sheet.CreateRow(row++); // заполняем наименования столбцов таблицы NPOIExcelHelper.FillNewCell(sheetRow, 0, "Код поставщика", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 1, "Наименование поставщика", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 2, "Регион", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 3, "Прайс лист", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 4, "Тип", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 5, "Ценовая колонка", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 6, "В работе", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 7, "Подключен к прайсам", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 8, "Наценка", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 9, "Код клиента", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 10, "Код доставки", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 11, "Код оплаты", headerStyle); // стиль для ячеек с данными var dataStyle = NPOIExcelHelper.GetDataStyle(book); // стиль для ячеек с данными, выравненный по центру var centerDataStyle = NPOIExcelHelper.GetCenterDataStyle(book); ICellStyle LightORANGE_STYLE; ICellStyle LightYELLOW_STYLE; ICellStyle LightBlue_STYLE; ICellStyle PINK_STYLE; ICellStyle LightGreen_STYLE; ICellStyle LAVENDER_STYLE; dateCell.CellStyle = dataStyle; // выводим данные foreach (var monitoringItem in report) { sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, monitoringItem.SupplierCode.ToString(), centerDataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 1, monitoringItem.SupplierName, dataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 2, monitoringItem.RegionName, dataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 3, monitoringItem.PriceName, dataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 4, monitoringItem.PriceType, dataStyle); if (monitoringItem.CostCollumn) { LightORANGE_STYLE = NPOIExcelHelper.GetCenterDataStyle(book, HSSFColor.LightOrange.Index); NPOIExcelHelper.FillNewCell(sheetRow, 5, monitoringItem.CostName, LightORANGE_STYLE); } else { NPOIExcelHelper.FillNewCell(sheetRow, 5, monitoringItem.CostName, centerDataStyle); } NPOIExcelHelper.FillNewCell(sheetRow, 6, !monitoringItem.AvailableForClient ? "Нет" : string.Empty, centerDataStyle); if (monitoringItem.NoPriceConnected) { LightYELLOW_STYLE = NPOIExcelHelper.GetCenterDataStyle(book, HSSFColor.LightYellow.Index); NPOIExcelHelper.FillNewCell(sheetRow, 7, monitoringItem.CountAvailableForClient, LightYELLOW_STYLE); } else { NPOIExcelHelper.FillNewCell(sheetRow, 7, monitoringItem.CountAvailableForClient, centerDataStyle); } if (monitoringItem.PriceMarkupStyle) { LightBlue_STYLE = NPOIExcelHelper.GetCenterDataStyle(book, HSSFColor.LightBlue.Index); NPOIExcelHelper.FillNewCell(sheetRow, 8, monitoringItem.PriceMarkup > 0 ? monitoringItem.PriceMarkup.ToString() : string.Empty, LightBlue_STYLE); } else { NPOIExcelHelper.FillNewCell(sheetRow, 8, monitoringItem.PriceMarkup > 0 ? monitoringItem.PriceMarkup.ToString() : string.Empty, centerDataStyle); } if (monitoringItem.ClientCodeStyle) { PINK_STYLE = NPOIExcelHelper.GetCenterDataStyle(book, HSSFColor.Pink.Index); NPOIExcelHelper.FillNewCell(sheetRow, 9, monitoringItem.SupplierClientId, PINK_STYLE); } else { NPOIExcelHelper.FillNewCell(sheetRow, 9, monitoringItem.SupplierClientId, centerDataStyle); } if (monitoringItem.DeliveryStyle) { LightGreen_STYLE = NPOIExcelHelper.GetCenterDataStyle(book, HSSFColor.LightGreen.Index); NPOIExcelHelper.FillNewCell(sheetRow, 10, monitoringItem.DeliveryStyle ? monitoringItem.SupplierDeliveryAdresses.Replace("</br>", Environment.NewLine) : string.Empty, LightGreen_STYLE); } else { NPOIExcelHelper.FillNewCell(sheetRow, 10, monitoringItem.DeliveryStyle ? monitoringItem.SupplierDeliveryAdresses.Replace("</br>", Environment.NewLine) : string.Empty, centerDataStyle); } if (!string.IsNullOrEmpty(monitoringItem.SupplierDeliveryAdresses)) { var rows = monitoringItem.SupplierDeliveryAdresses.Split(new[] { "</br>" }, StringSplitOptions.RemoveEmptyEntries); sheetRow.Height = (short)(sheetRow.Height * rows.Count()); } if (monitoringItem.PaymentCodeStyle) { LAVENDER_STYLE = NPOIExcelHelper.GetCenterDataStyle(book, HSSFColor.Lavender.Index); NPOIExcelHelper.FillNewCell(sheetRow, 11, monitoringItem.SupplierPaymentId, LAVENDER_STYLE); } else { NPOIExcelHelper.FillNewCell(sheetRow, 11, monitoringItem.SupplierPaymentId, centerDataStyle); } } // устанавливаем ширину столбцов for (var i = col; i >= 0; i--) { sheet.SetColumnWidth(i, 3500); } sheet.SetColumnWidth(0, sheet.GetColumnWidth(1) * 4); sheet.SetColumnWidth(1, sheet.GetColumnWidth(2) * 4); sheet.SetColumnWidth(3, sheet.GetColumnWidth(3) * 2); sheet.SetColumnWidth(5, sheet.GetColumnWidth(5) * 4); sheet.SetColumnWidth(9, sheet.GetColumnWidth(9) * 2); sheet.SetColumnWidth(10, sheet.GetColumnWidth(10) * 6); sheet.SetColumnWidth(11, sheet.GetColumnWidth(11) * 4); sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 11)); var dataRowCount = row; for (int i = 1; i < 7; i++) { sheet.AddMergedRegion(new CellRangeAddress(dataRowCount + i, dataRowCount + i, 1, 11)); } dataStyle = book.CreateCellStyle(); dataStyle.GetFont(book).Boldweight = (short)FontBoldWeight.None; sheet.CreateRow(row++); sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, string.Empty, NPOIExcelHelper.GetCenterDataStyle(book, HSSFColor.LightOrange.Index)); NPOIExcelHelper.FillNewCell(sheetRow, 1, "- Если у поставщика менее 30% клиентов подключены к базовой ценовой колонке и данной аптеке назначена базовая", dataStyle); sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, string.Empty, NPOIExcelHelper.GetCenterDataStyle(book, HSSFColor.LightYellow.Index)); NPOIExcelHelper.FillNewCell(sheetRow, 1, "- Не подключен ни к одному из прайсов", dataStyle); sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, string.Empty, NPOIExcelHelper.GetCenterDataStyle(book, HSSFColor.LightBlue.Index)); NPOIExcelHelper.FillNewCell(sheetRow, 1, "- Более половины аптек, подключенных к прайсу имеют наценку, отличную от Нуля, а для рассматриваемой аптеки наценка 0", dataStyle); sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, string.Empty, NPOIExcelHelper.GetCenterDataStyle(book, HSSFColor.Pink.Index)); NPOIExcelHelper.FillNewCell(sheetRow, 1, "- Более половины аптек, подключенных к прайсу имеют код клиента, а для рассматриваемой аптеки этот код не прописан", dataStyle); sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, string.Empty, NPOIExcelHelper.GetCenterDataStyle(book, HSSFColor.LightGreen.Index)); NPOIExcelHelper.FillNewCell(sheetRow, 1, "- Более половины аптек, подключенных к прайсу имеют коды адресов доставки, а для рассматриваемой аптеки этот код не прописан, либо для рассматриваемой аптеки прописаны не все коды адресов доставки", dataStyle); sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, string.Empty, NPOIExcelHelper.GetCenterDataStyle(book, HSSFColor.Lavender.Index)); NPOIExcelHelper.FillNewCell(sheetRow, 1, "- Более половины аптек, подключенных к прайсу имеют код оплаты, а для рассматриваемой аптеки этот код не прописан", dataStyle); var buffer = new MemoryStream(); book.Write(buffer); return(buffer.ToArray()); }
public static byte[] GetClientAddressesMonitor(ClientAddressFilter filter) { var book = new HSSFWorkbook(); var sheet = book.CreateSheet("Клиенты и адреса в регионе, по которым не принимаются накладные"); var row = 0; var headerStyle = NPOIExcelHelper.GetHeaderStype(book); var dataStyle = NPOIExcelHelper.GetDataStyle(book); var sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, "Клиенты и адреса в регионе, по которым не принимаются накладные", headerStyle); sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, String.Format("Период: с {0} по {1}", filter.Period.Begin.ToString("dd.MM.yyyy"), filter.Period.End.ToString("dd.MM.yyyy")), book.CreateCellStyle()); sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, String.Format("Дата подготовки отчета: {0}", DateTime.Now), book.CreateCellStyle()); sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, String.Format("Регион: {0}", filter.Region == null ? "Все" : filter.Region.Name), book.CreateCellStyle()); sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, String.Format("Клиент: {0}", filter.ClientText), book.CreateCellStyle()); sheet.CreateRow(row++); var tableHeaderRow = row; sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, "Код клиента", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 1, "Наименование клиента", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 2, "Регион", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 3, "Код адреса", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 4, "Адрес", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 5, "Код поставщика", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 6, "Наименование поставщика", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 7, "Количество непринятых накладных", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 8, "Причина", headerStyle); var items = filter.Find(true); foreach (var item in items) { sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, item.ClientId.ToString(), dataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 1, item.ClientName, dataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 2, item.RegionName, dataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 3, item.AddressId.ToString(), dataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 4, item.AddressName, dataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 5, item.SupplierId.ToString(), dataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 6, item.SupplierName, dataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 7, item.Count.ToString(), dataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 8, item.RejectReasonName, dataStyle); } // добавляем автофильтр sheet.SetAutoFilter(new CellRangeAddress(tableHeaderRow, row, 0, 8)); sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 8)); // устанавливаем ширину столбцов for (int i = 0; i < 9; i++) { sheet.SetColumnWidth(i, sheet.GetColumnWidth(i) * 2); } sheet.SetColumnWidth(4, sheet.GetColumnWidth(4) * 3); sheet.SetColumnWidth(8, sheet.GetColumnWidth(8) * 3); var buffer = new MemoryStream(); book.Write(buffer); return(buffer.ToArray()); }
public static byte[] DocumentsLog(ISession session, DocumentFilter filter) { var book = new HSSFWorkbook(); var sheet = book.CreateSheet("Неразобранные накладные"); var row = 0; var headerStyle = NPOIExcelHelper.GetHeaderStype(book); var dataStyle = NPOIExcelHelper.GetDataStyle(book); var sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, "Неразобранные накладные", headerStyle); sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, String.Format("Период: с {0} по {1}", filter.Period.Begin.ToString("dd.MM.yyyy"), filter.Period.End.ToString("dd.MM.yyyy")), book.CreateCellStyle()); sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, String.Format("Дата подготовки отчета: {0}", DateTime.Now), book.CreateCellStyle()); sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, String.Format("Регион: {0}", filter.Region == null ? "Все" : filter.Region.Name), book.CreateCellStyle()); sheet.CreateRow(row++); var tableHeaderRow = row; sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, "Номер документа", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 1, "Дата получения", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 2, "Тип документа", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 3, "От поставщика", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 4, "Клиенту", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 5, "На адрес", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 6, "Название файла", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 7, "Размер", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 8, "Парсер", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 9, "Комментарий", headerStyle); var items = filter.Find(session, true); foreach (var item in items) { sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, item.Id.ToString(), dataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 1, item.LogTime.ToString(), dataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 2, BindingHelper.GetDescription(item.DocumentType), dataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 3, item.Supplier, dataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 4, item.Client, dataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 5, item.Address, dataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 6, item.FileName, dataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 7, item.DocumentSize == null ? "" : ViewHelper.ConvertToUserFriendlySize(item.DocumentSize.Value), dataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 8, item.Parser, dataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 9, item.Addition, dataStyle); } // добавляем автофильтр sheet.SetAutoFilter(new CellRangeAddress(tableHeaderRow, row, 0, 9)); sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 9)); // устанавливаем ширину столбцов for (int i = 0; i < 10; i++) { sheet.SetColumnWidth(i, sheet.GetColumnWidth(i) * 2); } sheet.SetColumnWidth(5, sheet.GetColumnWidth(5) * 2); var buffer = new MemoryStream(); book.Write(buffer); return(buffer.ToArray()); }