The OneStream Community is temporarily frozen until June 29th due to the ongoing maintenance. Please read the blog post here to learn more.
Forum Discussion
MarcusH
3 years agoValued Contributor
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 ...
- 3 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
pjbwilson
1 year agoNew Contributor II
I am testing an upgrade to 8.5 and my rule creating a spreadsheet does not compile anymore, has anyone else seen this issue?
MarcusH
1 year agoValued Contributor
I had to make changes to get it to run in 8.4. I haven't tried 8.5. What error are you getting? In 8.4 you need to add these to the referenced assemblies:
DocumentFormat.OpenXml.dll; XF\System.IO.Packaging.dll
And these imports:
Imports DocumentFormat.OpenXml
Imports DocumentFormat.OpenXml.Packaging
Imports DocumentFormat.OpenXml.Spreadsheet
- Sridhar_M1 year agoContributor
Those referenced assemblies are compatible with version 8.5 as well.
The only modification from earlier versions to version 8 is due to the latest .NET changes introduced in version 8.
Related Content
- 7 months ago
- 2 months ago