Export Excel to XpsDocument in WPF
Besides converting a workbook to a different file format (like PDF, HTML, and image), GemBox.Spreadsheet also supports converting a workbook to an XpsDocument
object with the ExcelFile.ConvertToXpsDocument
method.
If you require more than displaying a file's content, for instance if you want to be able to modify the spreadsheet data with some Graphical User Interface (GUI) control, then what you could do is export Excel to DataTable and bind it to DataGrid control or you could export Excel to DataGridView control.
The following example shows how you can convert an Excel file to XPS and attach it to WPF's DocumentViewer
control.

<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Export to XpsDocument Example"
SizeToContent="WidthAndHeight">
<DocumentViewer x:Name="DocumentViewer"/>
</Window>
using System.Windows;
using System.Windows.Controls;
using System.Windows.Xps.Packaging;
using GemBox.Spreadsheet;
partial class MainWindow : Window
{
XpsDocument xpsDocument;
public MainWindow()
{
InitializeComponent();
SetDocumentViewer(this.DocumentViewer);
}
private void SetDocumentViewer(DocumentViewer documentViewer)
{
SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");
var workbook = new ExcelFile();
var worksheet = workbook.Worksheets.Add("Sheet1");
worksheet.Cells[0, 0].Value = "English:";
worksheet.Cells[0, 1].Value = "Hello";
worksheet.Cells[1, 0].Value = "Russian:";
worksheet.Cells[1, 1].Value = new string(new char[] { '\u0417', '\u0434', '\u0440', '\u0430', '\u0432', '\u0441', '\u0442', '\u0432', '\u0443', '\u0439', '\u0442', '\u0435' });
worksheet.Cells[2, 0].Value = "Chinese:";
worksheet.Cells[2, 1].Value = new string(new char[] { '\u4f60', '\u597d' });
worksheet.Cells[4, 0].Value = "In order to see Russian and Chinese characters you need to have appropriate fonts on your PC.";
worksheet.Cells.GetSubrangeAbsolute(4, 0, 4, 7).Merged = true;
worksheet.HeadersFooters.DefaultPage.Header.CenterSection.Content = "Export To XpsDocument / DocumentViewer Control Example";
worksheet.PrintOptions.PrintGridlines = true;
// XpsDocument needs to stay referenced so that DocumentViewer can access additional required resources.
// Otherwise, GC will collect/dispose XpsDocument and DocumentViewer will not work.
this.xpsDocument = workbook.ConvertToXpsDocument(SaveOptions.XpsDefault);
documentViewer.Document = this.xpsDocument.GetFixedDocumentSequence();
}
}
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Xps.Packaging
Imports GemBox.Spreadsheet
Class MainWindow
Dim xpsDocument As XpsDocument
Public Sub New()
InitializeComponent()
SetDocumentViewer(Me.DocumentViewer)
End Sub
Private Sub SetDocumentViewer(documentViewer As DocumentViewer)
SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY")
Dim workbook = New ExcelFile
Dim worksheet = workbook.Worksheets.Add("Sheet1")
worksheet.Cells(0, 0).Value = "English:"
worksheet.Cells(0, 1).Value = "Hello"
worksheet.Cells(1, 0).Value = "Russian:"
worksheet.Cells(1, 1).Value = New String(New Char() {ChrW(&H417), ChrW(&H434), ChrW(&H440), ChrW(&H430), ChrW(&H432), ChrW(&H441), ChrW(&H442), ChrW(&H432), ChrW(&H443), ChrW(&H439), ChrW(&H442), ChrW(&H435)})
worksheet.Cells(2, 0).Value = "Chinese:"
worksheet.Cells(2, 1).Value = New String(New Char() {ChrW(&H4F60), ChrW(&H597D)})
worksheet.Cells(4, 0).Value = "In order to see Russian and Chinese characters you need to have appropriate fonts on your PC."
worksheet.Cells.GetSubrangeAbsolute(4, 0, 4, 7).Merged = True
worksheet.HeadersFooters.DefaultPage.Header.CenterSection.Content = "Export To XpsDocument / DocumentViewer Control Example"
worksheet.PrintOptions.PrintGridlines = True
' XpsDocument needs to stay referenced so that DocumentViewer can access additional required resources.
' Otherwise, GC will collect/dispose XpsDocument and DocumentViewer will not work.
xpsDocument = workbook.ConvertToXpsDocument(SaveOptions.XpsDefault)
documentViewer.Document = xpsDocument.GetFixedDocumentSequence()
End Sub
End Class
See also
Next steps
Published: December 13, 2018 | Modified: December 2, 2021 | Author: Damir Stipinovic