- Demo
- App.xaml
- App.xaml.cs
- App.xaml.vb
- MainPage.xaml
- MainPage.xaml.cs
- MainPage.xaml.vb
The sample demonstrates how to create Excel group in Silverlight via Spire.XLS.

<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="group.App">
<Application.Resources>
</Application.Resources>
</Application>
using System;
using System.Windows;
namespace group
{
public partial class App : Application
{
public App()
{
this.Startup += this.Application_Startup;
this.Exit += this.Application_Exit;
this.UnhandledException += this.Application_UnhandledException;
InitializeComponent();
}
private void Application_Startup(object sender, StartupEventArgs e)
{
this.RootVisual = new MainPage();
}
private void Application_Exit(object sender, EventArgs e)
{
}
private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
{
// If the app is running outside of the debugger then report the exception using
// the browser's exception mechanism. On IE this will display it a yellow alert
// icon in the status bar and Firefox will display a script error.
if (!System.Diagnostics.Debugger.IsAttached)
{
// NOTE: This will allow the application to continue running after an exception has been thrown
// but not handled.
// For production applications this error handling should be replaced with something that will
// report the error to the website and stop the application.
e.Handled = true;
Deployment.Current.Dispatcher.BeginInvoke(delegate { ReportErrorToDOM(e); });
}
}
private void ReportErrorToDOM(ApplicationUnhandledExceptionEventArgs e)
{
try
{
string errorMsg = e.ExceptionObject.Message + e.ExceptionObject.StackTrace;
errorMsg = errorMsg.Replace('"', '\'').Replace("\r\n", @"\n");
System.Windows.Browser.HtmlPage.Window.Eval("throw new Error(\"Unhandled Error in Silverlight Application " + errorMsg + "\");");
}
catch (Exception)
{
}
}
}
}
Imports System.Net
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Documents
Imports System.Windows.Input
Imports System.Windows.Media
Imports System.Windows.Media.Animation
Imports System.Windows.Shapes
Namespace group
Partial Public Class App
Inherits Application
Public Sub New()
AddHandler Me.Startup, AddressOf Application_Startup
AddHandler Me.Exit, AddressOf Application_Exit
AddHandler Me.UnhandledException, AddressOf Application_UnhandledException
InitializeComponent()
End Sub
Private Sub Application_Startup(ByVal sender As Object, ByVal e As StartupEventArgs)
Me.RootVisual = New MainPage()
End Sub
Private Sub Application_Exit(ByVal sender As Object, ByVal e As EventArgs)
End Sub
Private Sub Application_UnhandledException(ByVal sender As Object, ByVal e As ApplicationUnhandledExceptionEventArgs)
' If the app is running outside of the debugger then report the exception using
' the browser's exception mechanism. On IE this will display it a yellow alert
' icon in the status bar and Firefox will display a script error.
If Not Debugger.IsAttached Then
' NOTE: This will allow the application to continue running after an exception has been thrown
' but not handled.
' For production applications this error handling should be replaced with something that will
' report the error to the website and stop the application.
e.Handled = True
Deployment.Current.Dispatcher.BeginInvoke(Sub() ReportErrorToDOM(e))
End If
End Sub
Private Sub ReportErrorToDOM(ByVal e As ApplicationUnhandledExceptionEventArgs)
Try
Dim errorMsg As String = e.ExceptionObject.Message + e.ExceptionObject.StackTrace
errorMsg = errorMsg.Replace(""""c, "'"c).Replace(vbCrLf, vbLf)
System.Windows.Browser.HtmlPage.Window.Eval("throw new Error(""Unhandled Error in Silverlight Application " & errorMsg & """);")
Catch e1 As Exception
End Try
End Sub
End Class
End Namespace
<UserControl x:Class="group.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="298" d:DesignWidth="491" xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk">
<Grid x:Name="LayoutRoot" Background="#FFB5FFFF" Loaded="LayoutRoot_Loaded" Height="272" Width="491">
<Button Content="Run" Height="23" HorizontalAlignment="Left" Margin="387,206,0,0" Name="buttonRun" VerticalAlignment="Top" Width="75" Click="buttonRun_Click" />
<sdk:Label Height="53" HorizontalAlignment="Center" Margin="12,86,29,133" Name="label1" VerticalAlignment="Center" Width="450" Content="This sample demonstrate how to create a group in xls" FontSize="14" FontWeight="Bold" HorizontalContentAlignment="Center" IsEnabled="False" />
</Grid>
</UserControl>
using System;
using System.Windows;
using System.Windows.Controls;
using System.Reflection;
using System.IO;
using Spire.Xls;
namespace group
{
public partial class MainPage : UserControl
{
Workbook workbook = null;
SaveFileDialog saveFileDialog = new SaveFileDialog();
public MainPage()
{
InitializeComponent();
this.workbook = new Workbook();
this.saveFileDialog.Filter = "Excel Document(*.xls)|*.xls";
}
private void LayoutRoot_Loaded(object sender, RoutedEventArgs e)
{
//load the workbook through stream
Assembly assembly = this.GetType().Assembly;
foreach (String name in assembly.GetManifestResourceNames())
{
if(name.EndsWith(".xls"))
{
using(Stream fileStr=assembly.GetManifestResourceStream(name))
{
this.workbook.LoadFromStream(fileStr);
}
}
}
}
private void buttonRun_Click(object sender, RoutedEventArgs e)
{
//group the third,fourth and fifth rows
Worksheet sheet = this.workbook.Worksheets[0];
sheet.GroupByRows(3, 5, true);
//group the tenth,eleventh,twelveth and thirteenth rows
sheet.GroupByRows(10, 13, true);
//save the workbook via stream
bool? result = this.saveFileDialog.ShowDialog();
if (result.HasValue && result.Value)
{
using (Stream stream = this.saveFileDialog.OpenFile())
{
this.workbook.SaveToStream(stream);
}
}
}
}
}
Imports System.Windows
Imports System.Windows.Controls
Imports System.Reflection
Imports System.IO
Imports Spire.Xls
Namespace group
Partial Public Class MainPage
Inherits UserControl
Private workbook As Workbook = Nothing
Private saveFileDialog As New SaveFileDialog()
Public Sub New()
InitializeComponent()
Me.workbook = New Workbook()
Me.saveFileDialog.Filter = "Excel Document(*.xls)|*.xls"
End Sub
Private Sub LayoutRoot_Loaded(ByVal sender As Object, ByVal e As RoutedEventArgs)
'load the workbook through stream
Dim [assembly] As System.Reflection.Assembly = Me.GetType().Assembly
For Each name As String In [assembly].GetManifestResourceNames()
If name.EndsWith(".xls") Then
Using fileStr As Stream=[assembly].GetManifestResourceStream(name)
Me.workbook.LoadFromStream(fileStr)
End Using
End If
Next name
End Sub
Private Sub buttonRun_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
'group the third,fourth and fifth rows
Dim sheet As Worksheet = Me.workbook.Worksheets(0)
sheet.GroupByRows(3, 5, True)
'group the tenth,eleventh,twelveth and thirteenth rows
sheet.GroupByRows(10, 13, True)
'save the workbook via stream
Dim result? As Boolean = Me.saveFileDialog.ShowDialog()
If result.HasValue AndAlso result.Value Then
Using stream As Stream = Me.saveFileDialog.OpenFile()
Me.workbook.SaveToStream(stream)
End Using
End If
End Sub
End Class
End Namespace
