Table of Contents

Step by step tutorial on FlexCel reports (C# / netframework)

Note

This demo is available in your FlexCel installation at <FlexCel Install Folder>\samples\csharp\VS2022\netframework\20.Reports\A0.Reporting Tutorial and also at https:​//​github.​com/​tmssoftware/​TMS-​FlexCel.​NET-​demos/​tree/​master/​csharp/​VS2022/​netframework/​Modules/​20.​Reports/​A0.​Reporting Tutorial

Overview

This demo is the completed project from the FlexCel reporting tutorial video at

https://www.tmssoftware.com/flexcel/tutorial.htm

Note: This demo does not run from MainDemo and it needs .NET 2.0 or newer.

It also needs the Adventure Works demo database from

http://www.codeplex.com/MSFTDBProdSamples/Release/ProjectReleases.aspx?ReleaseId=4004 (SQLServer 2005)

or

http://www.codeplex.com/MSFTDBProdSamples/Release/ProjectReleases.aspx?ReleaseId=8392 (SQLServer 2008)

In order to run this demo, open the website from Visual Studio 2005 or newer, by doing: Menu->File->Open->Website

and pointing to the "Modules\20.Reports\A0.Reporting Tutorial" folder.

Concepts

  • Concepts are explained in the video. This is just the finished code and template so you can take a look at it.

  • In order to actually run this demo, you might need to edit web.config and change the connection settings for your SQL Server.

Files

Default.aspx.cs

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using FlexCel.Core;
using FlexCel.XlsAdapter;
using FlexCel.Render;
using FlexCel.Report;
using System.IO;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    private ExcelFile CreateReport()
    {
        XlsFile Result = new XlsFile(true);
        Result.Open(MapPath("~/App_Data/template.xls"));
        using (FlexCelReport fr = new FlexCelReport())
        {
            LoadData(fr);

            fr.SetValue("ReportCaption", "Hello from FlexCel!");
            fr.Run(Result);
            return Result;
        }
    }

    private void LoadData(FlexCelReport fr)
    {
        DataSet1 Data = new DataSet1();
        DataSet1TableAdapters.ProductTableAdapter ProductAdapter = new DataSet1TableAdapters.ProductTableAdapter();
        ProductAdapter.Fill(Data.Product);

        DataSet1TableAdapters.ProductPhotoTableAdapter ProductPhotoAdapter = new DataSet1TableAdapters.ProductPhotoTableAdapter();
        ProductPhotoAdapter.Fill(Data.ProductPhoto);

        DataSet1TableAdapters.ProductProductPhotoTableAdapter ProductProductPhotoAdapter = new DataSet1TableAdapters.ProductProductPhotoTableAdapter();
        ProductProductPhotoAdapter.Fill(Data.ProductProductPhoto);

        fr.AddTable(Data);
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        ExcelFile xls = CreateReport();
        FlexCelAspViewer1.HtmlExport.Workbook = xls;
    }
    protected void Button2_Click(object sender, EventArgs e)
    {
        ExcelFile xls = CreateReport();

        using (MemoryStream ms = new MemoryStream())
        {
            xls.Save(ms);
            ms.Position = 0;
            Response.Clear();
            Response.AddHeader("Content-Disposition", "attachment; filename=Test.xls");
            Response.AddHeader("Content-Length", ms.Length.ToString());
            Response.ContentType = "application/excel"; //octet-stream";
            Response.BinaryWrite(ms.ToArray());
            Response.End();
        }


    }
    protected void Button3_Click(object sender, EventArgs e)
    {
        ExcelFile xls = CreateReport();

        using (MemoryStream ms = new MemoryStream())
        {
            using (FlexCelPdfExport pdf = new FlexCelPdfExport())
            {
                pdf.Workbook = xls;
                pdf.BeginExport(ms);
                pdf.ExportAllVisibleSheets(false, "FlexCel");
                pdf.EndExport();
                ms.Position = 0;
                Response.Clear();
                Response.AddHeader("Content-Disposition", "attachment; filename=Test.pdf");
                Response.AddHeader("Content-Length", ms.Length.ToString());
                Response.ContentType = "application/pdf"; //octet-stream";
                Response.BinaryWrite(ms.ToArray());
                Response.End();
            }
        }

    }
}