Note
Before exporting a grid, the ASPxGridExporterBase component creates an export document on a server. Therefore, when you export a large amount of data to a server with limited memory, the OutOfMemoryException exception may appear.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register Assembly="DevExpress.Web.v15.1, Version=15.1.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web" TagPrefix="dx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="frmMain" runat="server">
<dx:ASPxGridView ID="Grid" runat="server" KeyFieldName="ID" OnDataBinding="Grid_DataBinding">
<Columns>
<dx:GridViewDataTextColumn FieldName="C1" />
<dx:GridViewDataSpinEditColumn FieldName="C2" />
<dx:GridViewDataTextColumn FieldName="C3" />
<dx:GridViewDataCheckColumn FieldName="C4" />
<dx:GridViewDataDateColumn FieldName="C5" />
</Columns>
</dx:ASPxGridView>
<dx:ASPxGridViewExporter ID="Exporter" runat="server" GridViewID="Grid">
</dx:ASPxGridViewExporter>
<dx:ASPxButton ID="BtnExportToCSV" runat="server" Text="Export To CSV" OnClick="BtnExportToCSV_Click">
</dx:ASPxButton>
<dx:ASPxButton ID="BtnExportToPDF" runat="server" Text="Export To PDF" OnClick="BtnExportToPDF_Click">
</dx:ASPxButton>
<dx:ASPxButton ID="BtnExportToRTF" runat="server" Text="Export To RTF" OnClick="BtnExportToRTF_Click">
</dx:ASPxButton>
<dx:ASPxButton ID="BtnExportToXLS" runat="server" Text="Export To XLS" OnClick="BtnExportToXLS_Click">
</dx:ASPxButton>
<dx:ASPxButton ID="BtnExportToXLSX" runat="server" Text="Export To XLSX" OnClick="BtnExportToXLSX_Click">
</dx:ASPxButton>
</form>
</body>
</html>
using System;
using System.Linq;
using System.IO;
public partial class _Default: System.Web.UI.Page {
protected string DocumentsFolder = "~/App_Data/";
protected string DocumentFileName = "Document";
protected void Page_Load(object sender, EventArgs e) {
if (!IsCallback && !IsPostBack) {
Directory.EnumerateFiles(MapPath(DocumentsFolder)).ToList().ForEach(File.Delete);
Grid.DataBind();
}
}
protected void Grid_DataBinding(object sender, EventArgs e) {
Grid.DataSource = Enumerable.Range(0, 100).Select(i => new {
ID = i,
C1 = i % 2,
C2 = i * 0.5 % 3,
C3 = "C3 " + i,
C4 = i % 2 == 0,
C5 = new DateTime(2015 + i, 12, 16)
}).ToList();
}
protected void BtnExportToCSV_Click(object sender, EventArgs e) {
SaveFile(actionToCall => Exporter.WriteCsv(actionToCall), "csv");
}
protected void BtnExportToPDF_Click(object sender, EventArgs e) {
SaveFile(actionToCall => Exporter.WritePdf(actionToCall), "pdf");
}
protected void BtnExportToRTF_Click(object sender, EventArgs e) {
SaveFile(actionToCall => Exporter.WriteRtf(actionToCall), "rtf");
}
protected void BtnExportToXLS_Click(object sender, EventArgs e) {
SaveFile(actionToCall => Exporter.WriteXls(actionToCall), "xls");
}
protected void BtnExportToXLSX_Click(object sender, EventArgs e) {
SaveFile(actionToCall => Exporter.WriteXlsx(actionToCall), "xlsx");
}
protected void SaveFile(Action<Stream> action, string format) {
using (MemoryStream memoryStream = new MemoryStream()) {
action(memoryStream);
memoryStream.Seek(0, SeekOrigin.Begin);
using (FileStream fileStream = new FileStream(MapPath(
string.Format("{0}/{1}.{2}",
DocumentsFolder,
DocumentFileName,
format)
),
FileMode.Create,
FileAccess.Write)) {
memoryStream.WriteTo(fileStream);
}
}
}
}
Imports System
Imports System.Linq
Imports System.IO
Partial Public Class _Default
Inherits System.Web.UI.Page
Protected DocumentsFolder As String = "~/App_Data/"
Protected DocumentFileName As String = "Document"
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
If (Not IsCallback) AndAlso (Not IsPostBack) Then
Directory.EnumerateFiles(MapPath(DocumentsFolder)).ToList().ForEach(Sub(f) File.Delete(f))
Grid.DataBind()
End If
End Sub
Protected Sub Grid_DataBinding(ByVal sender As Object, ByVal e As EventArgs)
Grid.DataSource = Enumerable.Range(0, 100).Select(Function(i) New With {Key .ID = i, Key .C1 = i Mod 2, Key .C2 = i * 0.5 Mod 3, Key .C3 = "C3 " & i, Key .C4 = i Mod 2 = 0, Key .C5 = New Date(2015 + i, 12, 16)}).ToList()
End Sub
Protected Sub BtnExportToCSV_Click(ByVal sender As Object, ByVal e As EventArgs)
SaveFile(Sub(actionToCall) Exporter.WriteCsv(actionToCall), "csv")
End Sub
Protected Sub BtnExportToPDF_Click(ByVal sender As Object, ByVal e As EventArgs)
SaveFile(Sub(actionToCall) Exporter.WritePdf(actionToCall), "pdf")
End Sub
Protected Sub BtnExportToRTF_Click(ByVal sender As Object, ByVal e As EventArgs)
SaveFile(Sub(actionToCall) Exporter.WriteRtf(actionToCall), "rtf")
End Sub
Protected Sub BtnExportToXLS_Click(ByVal sender As Object, ByVal e As EventArgs)
SaveFile(Sub(actionToCall) Exporter.WriteXls(actionToCall), "xls")
End Sub
Protected Sub BtnExportToXLSX_Click(ByVal sender As Object, ByVal e As EventArgs)
SaveFile(Sub(actionToCall) Exporter.WriteXlsx(actionToCall), "xlsx")
End Sub
Protected Sub SaveFile(ByVal action As Action(Of Stream), ByVal format As String)
Using memoryStream As New MemoryStream()
action(memoryStream)
memoryStream.Seek(0, SeekOrigin.Begin)
Using fileStream As New FileStream(MapPath(String.Format("{0}/{1}.{2}", DocumentsFolder, DocumentFileName, format)), FileMode.Create, FileAccess.Write)
memoryStream.WriteTo(fileStream)
End Using
End Using
End Sub
End Class
<%@ Page Language="vb" AutoEventWireup="true" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<%@ Register Assembly="DevExpress.Web.v15.1, Version=15.1.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web" TagPrefix="dx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="frmMain" runat="server">
<dx:ASPxGridView ID="Grid" runat="server" KeyFieldName="ID" OnDataBinding="Grid_DataBinding">
<Columns>
<dx:GridViewDataTextColumn FieldName="C1" />
<dx:GridViewDataSpinEditColumn FieldName="C2" />
<dx:GridViewDataTextColumn FieldName="C3" />
<dx:GridViewDataCheckColumn FieldName="C4" />
<dx:GridViewDataDateColumn FieldName="C5" />
</Columns>
</dx:ASPxGridView>
<dx:ASPxGridViewExporter ID="Exporter" runat="server" GridViewID="Grid">
</dx:ASPxGridViewExporter>
<dx:ASPxButton ID="BtnExportToCSV" runat="server" Text="Export To CSV" OnClick="BtnExportToCSV_Click">
</dx:ASPxButton>
<dx:ASPxButton ID="BtnExportToPDF" runat="server" Text="Export To PDF" OnClick="BtnExportToPDF_Click">
</dx:ASPxButton>
<dx:ASPxButton ID="BtnExportToRTF" runat="server" Text="Export To RTF" OnClick="BtnExportToRTF_Click">
</dx:ASPxButton>
<dx:ASPxButton ID="BtnExportToXLS" runat="server" Text="Export To XLS" OnClick="BtnExportToXLS_Click">
</dx:ASPxButton>
<dx:ASPxButton ID="BtnExportToXLSX" runat="server" Text="Export To XLSX" OnClick="BtnExportToXLSX_Click">
</dx:ASPxButton>
</form>
</body>
</html>