Step by step tutorial on FlexCel reports (VB.Net / netframework)
Note
This demo is available in your FlexCel installation at <FlexCel Install Folder>\samples\vb\VS2022\netframework\20.Reports\A0.Reporting Tutorial and also at https://github.com/tmssoftware/TMS-FlexCel.NET-demos/tree/master/vb/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.vb
Imports System
Imports System.Collections
Imports System.Configuration
Imports System.Data
Imports System.Web
Imports System.Web.Security
Imports System.Web.UI
Imports System.Web.UI.HtmlControls
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Imports FlexCel.Core
Imports FlexCel.XlsAdapter
Imports FlexCel.Render
Imports FlexCel.Report
Imports System.IO
Partial Public Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
End Sub
Private Function CreateReport() As ExcelFile
Dim Result As New XlsFile(True)
Result.Open(MapPath("~/App_Data/template.xls"))
Using fr As New FlexCelReport()
LoadData(fr)
fr.SetValue("ReportCaption", "Hello from FlexCel!")
fr.Run(Result)
Return Result
End Using
End Function
Private Sub LoadData(ByVal fr As FlexCelReport)
Dim Data As New DataSet1()
Dim ProductAdapter As New DataSet1TableAdapters.ProductTableAdapter()
ProductAdapter.Fill(Data.Product)
Dim ProductPhotoAdapter As New DataSet1TableAdapters.ProductPhotoTableAdapter()
ProductPhotoAdapter.Fill(Data.ProductPhoto)
Dim ProductProductPhotoAdapter As New DataSet1TableAdapters.ProductProductPhotoTableAdapter()
ProductProductPhotoAdapter.Fill(Data.ProductProductPhoto)
fr.AddTable(Data)
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim xls As ExcelFile = CreateReport()
FlexCelAspViewer1.HtmlExport.Workbook = xls
End Sub
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim xls As ExcelFile = CreateReport()
Using ms As 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()
End Using
End Sub
Protected Sub Button3_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim xls As ExcelFile = CreateReport()
Using ms As New MemoryStream()
Using pdf As 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()
End Using
End Using
End Sub
End Class