Hi, i try to export data table to excel file using following code https://docs.telerik.com/devtools/aspnet-ajax/knowledge-base/common-export-large-amount-of-data-to-pdf-xlsx-and-csv-using-the-telerik-document-processing-libraries?_ga=2.266990472.785509911.1678626449-162692405.1645090225&_gl=1*1ns64vr*_ga*MTYyNjkyNDA1LjE2NDUwOTAyMjU.*_ga_9JSNBCSF54*MTY3ODY3Nzk2OS4xMTguMS4xNjc4Njc4MzQwLjM1LjAuMA.. , in data table we have number columns which is not export correct format ,we need to change format for apply formulas, we need to avoid this, bcz each time need to change that format in order to sum the column,
Private Sub SpreadStreamProcessingForXLSXAndCSV(ByVal dt As DataTable, ByVal filename As String, ByVal Optional docFormat As SpreadDocumentFormat = SpreadDocumentFormat.Xlsx, ByVal Optional sheetName As String = "Sheet1")
If dt Is Nothing Then
Dim manager As RadAjaxManager = RadAjaxManager.GetCurrent(Page)
manager.Alert("No records to export to excel!")
Exit Sub
End If
Using stream As MemoryStream = New MemoryStream()
Using workbook As IWorkbookExporter = SpreadExporter.CreateWorkbookExporter(docFormat, stream)
Using worksheetExporter As IWorksheetExporter = workbook.CreateWorksheetExporter(sheetName)
For i As Integer = 0 To dt.Columns.Count - 1
Using columnExporter As IColumnExporter = worksheetExporter.CreateColumnExporter()
columnExporter.SetWidthInPixels(100)
End Using
Next
ExportHeaderRows(worksheetExporter, dt)
For Each row As DataRow In dt.Rows
Using rowExporter As IRowExporter = worksheetExporter.CreateRowExporter()
For Each item In row.ItemArray
Dim normalFormat As SpreadCellFormat = New SpreadCellFormat()
normalFormat.FontSize = 10
normalFormat.VerticalAlignment = SpreadVerticalAlignment.Center
normalFormat.HorizontalAlignment = SpreadHorizontalAlignment.Center
Using cellExporter As ICellExporter = rowExporter.CreateCellExporter()
cellExporter.SetValue(item.ToString())
cellExporter.SetFormat(normalFormat)
End Using
Next
End Using
Next
End Using
End Using
Dim output As Byte() = stream.ToArray()
If docFormat = SpreadDocumentFormat.Csv Then
FileExtension = "csv"
filename = filename
ContentType = "text/csv"
ElseIf docFormat = SpreadDocumentFormat.Xlsx Then
FileExtension = "xlsx"
filename = filename
ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
End If
WriteFileToResponse(output, filename)
End Using
End Sub
Private Sub ExportHeaderRows(ByVal worksheetExporter As IWorksheetExporter, ByVal dt As DataTable)
Using rowExporter As IRowExporter = worksheetExporter.CreateRowExporter()
Dim HeaderRowHeight As Double = 50
rowExporter.SetHeightInPoints(HeaderRowHeight)
Dim format As SpreadCellFormat = New SpreadCellFormat()
format.IsBold = True
format.Fill = SpreadPatternFill.CreateSolidFill(New SpreadColor(142, 196, 65))
format.ForeColor = New SpreadThemableColor(New SpreadColor(255, 255, 255))
format.HorizontalAlignment = SpreadHorizontalAlignment.Center
format.VerticalAlignment = SpreadVerticalAlignment.Center
For i As Integer = 0 To dt.Columns.Count - 1
Using cellExporter As ICellExporter = rowExporter.CreateCellExporter()
cellExporter.SetFormat(format)
cellExporter.SetValue(dt.Columns(i).ColumnName)
End Using
Next
End Using
End Sub
Private Sub WriteFileToResponse(ByVal content As Byte(), ByVal strfilename As String)
Response.ContentType = ContentType
Response.Headers.Remove("Content-Disposition")
Response.AppendHeader("Content-Disposition", String.Format("attachment; filename={0}.{1}", strfilename, FileExtension))
Response.BinaryWrite(content)
Response.[End]()
End SubNote: We don't know which column is number column, so we need to pass General format for number column.
Regards
Aravind