Exemplo n.º 1
0
        /// <summary>
        /// Формирует Excel документ из формы и запроса выборки данных
        /// </summary>
        /// <param name="form">Форма, задающая оформление данных в выходном документе</param>
        /// <param name="queryDef">Запрос для выборки данных из БД</param>
        /// <returns>Массив двоичных данных тела Excel файла</returns>
        public byte[] ExcelFromQuery(BizForm form, QueryDef queryDef)
        {
            var sqb = _sqlQueryBuilderFactory.Create();

            using (var sqlQuery = sqb.Build(queryDef, form, null, null))
            {
                sqlQuery.AddAttribute("&Id");

                using (var sqlReader = _sqlQueryReaderFactory.Create(sqlQuery) /*new SqlQueryReader(DataContext, sqlQuery)*/)
                {
                    var defBuilder = new XlsGridDefBuilder(Provider, form, sqlReader);

                    using (var def = defBuilder.BuildFromBizForm())
                    {
                        var builder = new XlsBuilder(def);
                        using (var workbook = builder.Build())
                        {
                            using (var stream = new MemoryStream())
                            {
                                workbook.Write(stream);

                                return(stream.ToArray());
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Формирует Excel документ из формы и критериев выборки
        /// </summary>
        /// <param name="form">Форма, задающая оформление данных в выходном документе</param>
        /// <param name="docStateId">Идентификатор статуса документа в качестве критерия выборки документов из БД</param>
        /// <param name="filter">Форма фильтра с данными для ограничения выборки документов</param>
        /// <returns>Массив двоичных данных тела Excel файла</returns>
        public byte[] ExcelFromFormFilter(BizForm form, Guid?docStateId, BizForm filter)
        {
            var sqb = _sqlQueryBuilderFactory.Create();

            using (var query = sqb.Build(form, docStateId, filter, null))
            {
                using (var reader = _sqlQueryReaderFactory.Create(query))
                {
                    var defBuilder = new XlsGridDefBuilder(Provider, form, reader);
                    using (var def = defBuilder.BuildFromBizForm())
                    {
                        var builder = new XlsBuilder(def);
                        using (var workbook = builder.Build())
                        {
                            using (var stream = new MemoryStream())
                            {
                                workbook.Write(stream);

                                return(stream.ToArray());
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Формирует Excel документ из формы и списка документов
        /// </summary>
        /// <param name="form">Форма, задающая оформление данных в выходном документе</param>
        /// <param name="docIdList">Список идентификаторов документов, которые необходимо вывести в файл</param>
        /// <returns>Массив двоичных данных тела Excel файла</returns>
        public byte[] ExcelFromDocIdList(BizForm form, List <Guid> docIdList)
        {
            var defBuilder = new XlsGridDefBuilder(DataContext, form, docIdList, CurrentUserId);

            using (var def = defBuilder.BuildFromBizForm())
            {
                var builder = new XlsBuilder(def);
                using (var workbook = builder.Build())
                {
                    using (var stream = new MemoryStream())
                    {
                        workbook.Write(stream);

                        return(stream.ToArray());
                    }
                }
            }
        }
Exemplo n.º 4
0
        public void TestMethod3()
        {
            using (var connection = new SqlConnection(CissaConnectionString))
            {
                using (var dataContext = new DataContext(connection))
                {
                    using (var provider = AppProvider.CreateProvider(dataContext))
                    {
                        var formRepo = provider.Get <IFormRepository>(); //new FormRepository(dataContext);
                        var form     = formRepo.GetTableForm(Guid.Parse("{B46A77AB-3F36-42CD-998A-018BE911AD16}"));

                        var defRepo = provider.Get <IDocDefRepository>(); // new DocDefRepository(dataContext);
                        var docDef  = defRepo.DocDefById(form.DocumentDefId ?? Guid.Empty);

                        var qb = new QueryBuilder(docDef.Id);
                        qb.Where("PostCode").Eq("10");
                        var sqlQueryBuilder = provider.Get <ISqlQueryBuilder>();
                        //var query = new DocQuery(qb.Def, dataContext);
                        using (var query = sqlQueryBuilder.Build(qb.Def, form, null))
                        {
                            query.TopNo = 100;
                            using (var reader = new SqlQueryReader(dataContext, query))
                            {
                                var defBuilder = new XlsGridDefBuilder(provider, form, reader /*.All()*/);
                                var def        = defBuilder.BuildFromBizForm();
                                def.Style.FontName = "Arial Narrow";
                                def.Style.VAlign   = VAlignment.Middle;

                                var builder  = new XlsBuilder(def);
                                var workbook = builder.Build();

                                using (
                                    var stream = new FileStream(@"c:\distr\cissa\testXlsDefApps.xls", FileMode.Create))
                                {
                                    workbook.Write(stream);
                                }
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 5
0
        public byte[] ExcelFromDocumentListForm(Guid documentId, BizDocumentListForm docListForm)
        {
            var form = docListForm.TableForm;

            if (form == null && docListForm.FormId != null)
            {
                form = FormRepo.GetTableForm((Guid)docListForm.FormId);
            }
            if (form == null)
            {
                throw new ApplicationException("Табличная форма не указана!");
            }

            var sqb = _sqlQueryBuilderFactory.Create();

            if (docListForm.AttributeDefId != null)
            {
                using (var query = sqb.BuildAttrList(form, documentId, (Guid)docListForm.AttributeDefId, null, null))
                {
                    query.WithNoLock = true;

                    using (var reader = _sqlQueryReaderFactory.Create(query))
                    {
                        var defBuilder = new XlsGridDefBuilder(Provider, form, reader);
                        using (var def = defBuilder.BuildFromBizForm())
                        {
                            var builder = new XlsBuilder(def);
                            using (var workbook = builder.Build())
                            {
                                using (var stream = new MemoryStream())
                                {
                                    workbook.Write(stream);

                                    return(stream.ToArray());
                                }
                            }
                        }
                    }
                }
            }

            if (docListForm.FormAttributeDefId != null)
            {
                using (var query = sqb.BuildRefList(form, documentId, (Guid)docListForm.FormAttributeDefId, null, null))
                {
                    using (var reader = _sqlQueryReaderFactory.Create(query)) //new SqlQueryReader(DataContext, query))
                    {
                        var defBuilder = new XlsGridDefBuilder(Provider, form, reader);
                        using (var def = defBuilder.BuildFromBizForm())
                        {
                            var builder = new XlsBuilder(def);
                            using (var workbook = builder.Build())
                            {
                                using (var stream = new MemoryStream())
                                {
                                    workbook.Write(stream);

                                    return(stream.ToArray());
                                }
                            }
                        }
                    }
                }
            }

            throw new ApplicationException("Не могу сформировать Excel файл! Атрибут не указан!");
        }