windowsforms-2653-controls-and-libraries-chart-control-examples-producing-output-how-to-export-a-chart-to-xls.md
The following example exports a chart as an image to an XLS document. In this example, the form contains the Export to File and Export to Stream buttons that allow you to save the XLS document with the chart image to a file or a stream.
Follow the steps below to implement this scenario:
Add a Chart Control object to the form. Make sure that the Chart Control Name is chartControl1 in the Visual Studio Properties window. For more information, see the following topic: How to: Add a Chart to a Windows Forms Application.
Create a Series object in the Form1_Load event handler. Use the ChartControl.Series.Add method to add this series to the chart.
Specify the ChartControl.DataSource, Series.ArgumentDataMember, and Series.ValueDataMembers properties to populate the chart with data. In this example, the GetSales method returns the chart data source.
Add two SimpleButtons to the form. Set the first button’s Text property to Export to File and the second button’s property to Export to Stream.
The Chart Control uses the DevExpress Printing Library to export a chart. To use this library, add references to the following assemblies to the project:
Handle the first button’s Click event and use the ChartControl.IsPrintingAvailable property to check whether the chart can be exported. Call the ChartControl.ExportToXls(System.String) method to export the chart to a file. Pass the path to this file as a parameter to this method.
Handle the second button’s Click event and use the ChartControl.IsPrintingAvailable property to check whether the chart can be exported. Call the ChartControl.ExportToXls(System.IO.Stream) method to export the chart to a stream. This example uses FileStream, and you can open the file where the stream is saved to check the export result.
View Example: How to: Export a Chart to XLS
using DevExpress.XtraCharts;
using System;
using System.Data;
using System.IO;
using System.Windows.Forms;
namespace ExportToXLS {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e) {
Series series = new Series("Series1", ViewType.Bar);
chartControl1.Series.Add(series);
chartControl1.DataSource = GetSales();
series.ArgumentDataMember = "Region";
series.ValueDataMembers.AddRange(new string[] { "Sales" });
}
private DataTable GetSales() {
int prevYear = DateTime.Now.Year - 1;
DataTable table = new DataTable();
table.Columns.Add("Region", typeof(string));
table.Columns.Add("Sales", typeof(decimal));
table.Rows.Add("Asia", 4.2372D);
table.Rows.Add("Australia", 1.7871D);
table.Rows.Add("Europe", 3.0884D);
table.Rows.Add("North America", 3.4855D);
table.Rows.Add("South America", 1.6027D);
return table;
}
private void simpleButton1_Click(object sender, EventArgs e) {
if (chartControl1.IsPrintingAvailable) {
// The XLS file name.
string fileName = "Output.xls";
// Path to an XLS file.
string filePath = "c:\\temp";
if (!Directory.Exists(filePath))
Directory.CreateDirectory(filePath);
string fullPath = String.Format("{0}\\{1}", filePath, fileName);
// Exports to an XLS file.
chartControl1.ExportToXls(fullPath);
}
}
private void simpleButton2_Click(object sender, EventArgs e) {
if (chartControl1.IsPrintingAvailable) {
// The XLS file name.
string fileName = "Output.xls";
// Path to an XLS file.
string filePath = "c:\\temp";
if (!Directory.Exists(filePath))
Directory.CreateDirectory(filePath);
string fullPath = String.Format("{0}\\{1}", filePath, fileName);
// Exports to a stream as XLS.
FileStream xlsStream = new FileStream(fullPath, FileMode.Create);
chartControl1.ExportToXls(xlsStream);
xlsStream.Close();
}
}
}
}
Imports DevExpress.XtraCharts
Imports System
Imports System.Data
Imports System.IO
Imports System.Windows.Forms
Namespace ExportToXLS
Public Partial Class Form1
Inherits Form
Public Sub New()
InitializeComponent()
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)
Dim series As Series = New Series("Series1", ViewType.Bar)
chartControl1.Series.Add(series)
chartControl1.DataSource = GetSales()
series.ArgumentDataMember = "Region"
series.ValueDataMembers.AddRange(New String() {"Sales"})
End Sub
Private Function GetSales() As DataTable
Dim prevYear As Integer = Date.Now.Year - 1
Dim table As DataTable = New DataTable()
table.Columns.Add("Region", GetType(String))
table.Columns.Add("Sales", GetType(Decimal))
table.Rows.Add("Asia", 4.2372R)
table.Rows.Add("Australia", 1.7871R)
table.Rows.Add("Europe", 3.0884R)
table.Rows.Add("North America", 3.4855R)
table.Rows.Add("South America", 1.6027R)
Return table
End Function
Private Sub simpleButton1_Click(ByVal sender As Object, ByVal e As EventArgs)
If chartControl1.IsPrintingAvailable Then
' The XLS file name.
Dim fileName As String = "Output.xls"
' Path to an XLS file.
Dim filePath As String = "c:\temp"
If Not Directory.Exists(filePath) Then Directory.CreateDirectory(filePath)
Dim fullPath As String = String.Format("{0}\{1}", filePath, fileName)
' Exports to an XLS file.
chartControl1.ExportToXls(fullPath)
End If
End Sub
Private Sub simpleButton2_Click(ByVal sender As Object, ByVal e As EventArgs)
If chartControl1.IsPrintingAvailable Then
' The XLS file name.
Dim fileName As String = "Output.xls"
' Path to an XLS file.
Dim filePath As String = "c:\temp"
If Not Directory.Exists(filePath) Then Directory.CreateDirectory(filePath)
Dim fullPath As String = String.Format("{0}\{1}", filePath, fileName)
' Exports to a stream as XLS.
Dim xlsStream As FileStream = New FileStream(fullPath, FileMode.Create)
chartControl1.ExportToXls(xlsStream)
xlsStream.Close()
End If
End Sub
End Class
End Namespace
See Also
Chart Control. Print and Export.
Spreadsheet Document API. How to: Create and Modify a Chart.