コード例 #1
0
        public void CreateExcelReport(string templateID, int userID)
        {
            var template = Storage.Select <Template>(templateID);

            entityID = template.Entity.ID.ToString();
            var table = Storage.Select <BusinessContent>(entityID).GetTable(userID);

            if (!Frame.IsNeedAllInstances.Checked)
            {
                var       instancesID = GetInstancesID();
                DataRow[] rows        = table.AsEnumerable().Where(x => instancesID.Contains(x["objID"].ToString())).ToArray();
                table = rows.CopyToDataTable();
            }

            string file = template.FileName;

            using (var stream = new MemoryStream())
            {
                var builder = new ReportViewExcelBuilder();
                builder.Create(stream, Teleform.Reporting.GroupReport.Make(template, table));

                Response.Clear();
                Response.ContentType = "text/html";
                Response.AddHeader("content-disposition", string.Format("attachment;fileName={0}.xlsx", file));
                Response.ContentEncoding = Encoding.UTF8;
                Response.BinaryWrite(stream.ToArray());
                Response.Flush();
                Response.End();
            }
        }
コード例 #2
0
        public void ExcelReport(IQueryable <Rest> rests)
        {
            DataTableClass dt = new DataTableClass(rests);

            using (var stream = new MemoryStream())
            {
                //var builder = new ExcelReportBuilder();
                var builder = new ReportViewExcelBuilder();
                builder.Create(stream, dt.dt);

                Response.Clear();
                Response.ContentType = "text/html";
                Response.AddHeader("content-disposition", "attachment;fileName=RestReport" + DateTime.Now.ToString("_dd_MM_yyyy") + ".xlsx");
                Response.ContentEncoding = Encoding.UTF8;
                Response.BinaryWrite(stream.ToArray());
                Response.Flush();
                Response.End();
            }

            // XLWorkbook wb = new XLWorkbook();
            // wb.Worksheets.Add(dt.dt, "WorksheetName");
            // var work = wb.Worksheets;
            // var z = "C:\\Users\\" + wb.Author + "\\Downloads\\RestReport" + DateTime.Now.ToString("_dd_MM_yyyy") + ".xlsx";
            //wb.SaveAs("C:\\Users\\" + wb.Author + "\\Downloads\\RestReport" + DateTime.Now.ToString("_dd_MM_yyyy") + ".xlsx");

            //ViewBag.Rests = db.GetRests();

            //return RedirectToAction("Index");
        }
コード例 #3
0
        protected void CreateExcelReportButton_Click(object sender, EventArgs e)
        {
#if truef
            ReportView rv = new ReportView();
            if (TemplateList.Items.Count == 0)
            {
                return;
            }
            rv.CreateExcelReport(TemplateList.SelectedValue);
#else
            //Что бы ничего не выскакивало если нет событий, то есть нет для них шаблонов
            if (string.IsNullOrEmpty(TemplateList.SelectedValue))
            {
                return;
            }

            EventObjectsGridView.AllowPaging = false;
            EventObjectsGridView.DataBind();

            var    templateID = TemplateList.SelectedValue;
            var    output     = new MemoryStream();
            var    report     = new DataSet();
            var    listID     = new StringBuilder();
            string fileName;

            for (int j = 0; j < EventObjectsGridView.Rows.Count; j++)
            {
                listID.Append(EventObjectsGridView.DataKeys[j]["objID"].ToString()).Append(",");
            }
            if (listID.Length == 0)
            {
                throw new Exception("Для генерации отчёта нет строк");
            }
            var objID = listID.ToString().Substring(0, listID.Length - 1);

            using (var connection = new SqlConnection(Global.ConnectionString))
            {
                var queryString = "EXEC [report].[getReportData] @templateID, @objID, @cyr=1, @flFormat=1";
                var command     = new SqlCommand(queryString, connection);
                command.Parameters.AddRange(
                    new SqlParameter[]
                {
                    new SqlParameter {
                        ParameterName = "templateID", DbType = DbType.Int32, Value = templateID
                    },
                    new SqlParameter {
                        ParameterName = "objID", DbType = DbType.String, Value = objID
                    },
                });

                SqlDataAdapter da = new SqlDataAdapter(command);
                da.Fill(report);

                queryString = "SELECT [fileName] FROM [model].[R$Template] where [objID] =  @templateID";
                command     = new SqlCommand(queryString, connection);
                command.Parameters.AddRange(
                    new SqlParameter[]
                {
                    new SqlParameter {
                        ParameterName = "templateID", DbType = DbType.String, Value = templateID
                    },
                });
                connection.Open();
                try
                {
                    fileName = command.ExecuteScalar().ToString() + ".xlsx";
                }
                catch (NullReferenceException)
                {
                    throw new Exception("Для генерации отчёта необходимо выбрать шаблон.");
                }
                connection.Close();

                //var ExcelReportOpenXML = new ExcelReportBuilder();

                var ExcelReportOpenXML = new ReportViewExcelBuilder();
                ExcelReportOpenXML.CreateExcel(output, report);
            }

            //Загрузить файл с отчетом на комп пользователя
            Response.Clear();
            Response.ContentType = "text/html";
            Response.AddHeader("content-disposition", "attachment;fileName =" + fileName);
            Response.ContentEncoding = Encoding.UTF8;
            Response.BinaryWrite(output.ToArray());
            Response.Flush();
            Response.End();

            EventObjectsGridView.AllowPaging = true;
#endif
        }