Table of Contents

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