Exemplo n.º 1
0
 public void FormPositionToExcel([DataBind("filter")] FormPositionFilter filter)
 {
     if(filter.Session == null)
         filter.Session = DbSession;
     var result = ExportModel.GetFormPosition(filter);
     this.RenderFile("Отчет о состоянии формализуемых полей.xls", result);
 }
        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);
        }
Exemplo n.º 3
0
        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());
        }