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();
}
}
}
}