public void FindTest() { var supplier = TestSupplier.Create(); var price = supplier.Prices[0]; var itemFormat = price.Costs[0].PriceItem.Format; itemFormat.PriceFormat = PriceFormatType.NativeDbf; itemFormat.FCode = "F1"; session.Save(itemFormat); session.Flush(); session.Save(price); Reopen(); var filter = new FormPositionFilter(); filter.Session = session; var result = filter.Find(); var sourceData = result.FirstOrDefault(r => ((FormPositionItem)r).PriceCode == price.Id); Assert.That(sourceData != null); Assert.That(((FormPositionItem)sourceData).FCode, Is.Not.Null); }
public static byte[] GetFormPosition(FormPositionFilter filter) { var book = new HSSFWorkbook(); var sheet = book.CreateSheet("Лист1"); var row = 0; var col = 0; // выбираем данные var report = filter.Find(); var type = typeof(FormPositionItem); // получаем список всех свойств var infos = type.GetProperties(); // создаем строку 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.SupplierName)); // регион работы прайса sheetRow = sheet.CreateRow(row++); dateCell = sheetRow.CreateCell(0); dateCell.SetCellValue(String.Format("Регион работы прайса: {0}", filter.Region != null ? filter.Region.Name : "Все")); sheetRow = sheet.CreateRow(row++); dateCell = sheetRow.CreateCell(0); dateCell.SetCellValue(String.Format("* В отчет не включены прайс-листы с фиксированной шириной колонки")); // добавляем пустую строку перед таблицей sheet.CreateRow(row++); var tableHeaderRow = row; sheetRow = sheet.CreateRow(row++); // заполняем наименования столбцов таблицы foreach (PropertyInfo prop in infos) { var cell = sheetRow.CreateCell(col++); cell.CellStyle = headerStyle; var value = ((DisplayAttribute)prop.GetCustomAttributes(typeof(DisplayAttribute), false).First()).Name; cell.SetCellValue(value); } // стиль для ячеек с данными var dataStyle = NPOIExcelHelper.GetDataStyle(book); // стиль для ячеек с данными, выравненный по центру var centerDataStyle = NPOIExcelHelper.GetCenterDataStyle(book); dateCell.CellStyle = dataStyle; // выводим данные foreach (var formPositionItem in report) { col = 0; sheetRow = sheet.CreateRow(row++); foreach (PropertyInfo prop in infos) { var value = prop.GetValue(formPositionItem, null); var cell = sheetRow.CreateCell(col++); if (value != null && value.ToString() == "*") { cell.CellStyle = centerDataStyle; } else { cell.CellStyle = dataStyle; } if (value != null) { cell.SetCellValue(value.ToString()); } } } // устанавливаем ширину столбцов for (var i = col; i >= 0; i--) { sheet.SetColumnWidth(i, 2700); } sheet.SetColumnWidth(1, sheet.GetColumnWidth(1) * 2); sheet.SetColumnWidth(2, sheet.GetColumnWidth(2) * 2); sheet.SetColumnWidth(4, sheet.GetColumnWidth(4) * 2); // добавляем автофильтр sheet.SetAutoFilter(new CellRangeAddress(tableHeaderRow, row, 0, col - 1)); sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, col - 1)); var buffer = new MemoryStream(); book.Write(buffer); return(buffer.ToArray()); }