We are under construction!

You may experience downtime, errors or visual oddities, but we anticipate all will be resolved by the end of the day.

Forum Discussion

MarcusH's avatar
MarcusH
Contributor III
2 years ago

Create Excel spreadsheet from Business Rules

Does anyone know if you can create an Excel spreadsheet from Business Rules? I do not mean a csv file - I need to create multiple sheets. The OpenXMLBuilder object doesn't seem to have anything with ...
  • Omkareshwar's avatar
    2 years ago

    You can use this function it takes a data table as parameter and generates an excel file I don't know what your exact requirements are but this can be a good starting point and you can modify it further.

    Imports System
    Imports DocumentFormat.OpenXml
    Imports DocumentFormat.OpenXml.Packaging
    Imports DocumentFormat.OpenXml.Spreadsheet
    
    Public Sub CreateExcelFileFromDataTable(dataTable As DataTable)
    	'Create a new Excel file
    	Dim filePath As String = "C:\example.xlsx"
    	'Create the SpreadsheetDocument object and set its type to Workbook
    	Using document As SpreadsheetDocument = SpreadsheetDocument.Create(filePath, SpreadsheetDocumentType.Workbook)
    		'Create the workbook
    		Dim workbookPart As WorkbookPart = document.AddWorkbookPart()
    		workbookPart.Workbook = New Workbook()
    		'Create the worksheet
    		Dim worksheetPart As WorksheetPart = workbookPart.AddNewPart(Of WorksheetPart)()
    		worksheetPart.Worksheet = New Worksheet()
    		'Create the sheet data
    		Dim sheetData As SheetData = worksheetPart.Worksheet.AppendChild(New SheetData())
    		'Create the header row
    		Dim headerRow As Row = New Row()
    		'Loop through each column in the DataTable and add it to the header row
    		For Each column As DataColumn In dataTable.Columns
    			headerRow.AppendChild(New Cell() With {.DataType = CellValues.String, .CellValue = New CellValue(column.ColumnName)})
    		Next
    
    		'Add the header row to the sheet data
    		sheetData.AppendChild(headerRow)
    		'Populate the data rows
    		For Each dataRow As DataRow In dataTable.Rows
    			Dim row As Row = New Row()
    			'Loop through each column in the DataTable and add the corresponding cell value to the current row
    			For Each column As DataColumn In dataTable.Columns
    				row.AppendChild(New Cell() With {.DataType = CellValues.String, .CellValue = New CellValue(dataRow(column.ColumnName).ToString())})
    			Next
    
    			'Add the row to the sheet data
    			sheetData.AppendChild(row)
    		Next
    
    		'Create the sheets
    		Dim sheets As Sheets = workbookPart.Workbook.AppendChild(New Sheets())
    		Dim sheet As Sheet = New Sheet() With {.Id = workbookPart.GetIdOfPart(worksheetPart), .SheetId = 1, .Name = "Sheet1"}
    		sheets.Append(sheet)
    		'Save changes
    		workbookPart.Workbook.Save()
    	End Using
    End Sub