'Declaration Public Event FormulaExportError As EventHandler(Of FormulaExportErrorEventArgs)
public event EventHandler<FormulaExportErrorEventArgs> FormulaExportError
The event handler receives an argument of type FormulaExportErrorEventArgs containing data related to this event. The following FormulaExportErrorEventArgs properties provide information specific to this event.
Property | Description |
---|---|
Action | Determines what action to take when exporting a formula. |
ApplyInvalidFormulaIfPossible | When set to true, the UltraGridExcelExporter will attempt to write the ExcelFormula to the worksheet cell, even though it may be invalid. |
Context (Inherited from Infragistics.Win.UltraWinGrid.ExcelExport.FormulaEventArgs) | The object in the UltraGrid whose formula is being exported. |
Error | An enum returning the type of error that occurred when converting the formula from the grid to Excel. |
ErrorText | Gets or sets the error message if there was an error when converting a grid formula to an equivalent Excel formula. |
ExcelFormula | Gets or sets the converted formula to apply to the worksheet cell. May be null. |
GridFormula (Inherited from Infragistics.Win.UltraWinGrid.ExcelExport.FormulaEventArgs) | The formula of the object in the grid being exported. |
WorksheetCell (Inherited from Infragistics.Win.UltraWinGrid.ExcelExport.FormulaEventArgs) | The worksheet cell to which the formula is being exported. |
The FormulaEventArgs.Context property will return the object in the grid whose formula is being exported. This will be either an Infragistics.Win.UltraWinGrid.UltraGridCell or a Infragistics.Win.UltraWinGrid.SummaryValue.
The FormulaEventArgs.GridFormula property will return the formula applied to the object in the grid.
The Error property will indicate the type of error that occurred and the FormulaExportErrorEventArgs.ErrorText provides details of the error.
Imports System Imports System.Text Imports System.IO Imports Infragistics.Excel Imports Infragistics.Win Imports Infragistics.Win.UltraWinGrid Imports Infragistics.Win.UltraWinGrid.ExcelExport Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim exporter As New ExcelExporter(Me.ultraGrid1, "temp.xls") exporter.Export(Infragistics.Excel.WorkbookFormat.Excel97To2003, "ErrorLog.htm") End Sub Public Class ExcelExporter Private grid As UltraGrid = Nothing Private fileName As String = String.Empty Private logStream As FileStream = Nothing Private hasErrors As Boolean = False Public Sub New(ByVal grid As UltraGrid, ByVal fileName As String) MyBase.New() Me.grid = grid Me.fileName = fileName End Sub Public Function Export(ByVal workbookFormat As WorkbookFormat, ByVal log As String) As Boolean ' Clear the 'hasErrors' flag Me.hasErrors = False ' Create the log file stream if the caller wants to log the results If String.IsNullOrEmpty(log) = False Then Me.logStream = New FileStream(log, FileMode.Create, FileAccess.ReadWrite) ' Create a new instance of the UltraGridExcelExporter class. Dim excelExporter As New UltraGridExcelExporter() ' Set ExportFormulas to true ExcelExporter.ExportFormulas = True Try ' Handle the events that are fired when a formula is exported. AddHandler excelExporter.FormulaExporting, AddressOf Me.excelExporter_FormulaExporting AddHandler excelExporter.FormulaExported, AddressOf Me.excelExporter_FormulaExported AddHandler excelExporter.FormulaExportError, AddressOf Me.excelExporter_FormulaExportError AddHandler excelExporter.InitializeSummary, AddressOf Me.excelExporter_InitializeSummary If Not Me.logStream Is Nothing Then Me.WriteToLog("<HTML><BODY>") ' Export excelExporter.Export(Me.grid, Me.fileName, workbookFormat) If Not Me.logStream Is Nothing Then Me.WriteToLog("</BODY></HTML>") Catch Me.hasErrors = True Finally ' Detach the event handlers RemoveHandler excelExporter.FormulaExporting, AddressOf Me.excelExporter_FormulaExporting RemoveHandler excelExporter.FormulaExported, AddressOf Me.excelExporter_FormulaExported RemoveHandler excelExporter.FormulaExportError, AddressOf Me.excelExporter_FormulaExportError RemoveHandler excelExporter.InitializeSummary, AddressOf Me.excelExporter_InitializeSummary If Not Me.logStream Is Nothing Then Me.logStream.Close() Me.logStream.Dispose() End If end try Return Me.hasErrors = False End Function ' Handles the InitializeSummary event. Private Sub excelExporter_InitializeSummary(ByVal sender As Object, ByVal e As InitializeSummaryEventArgs) ' Format the log entry Dim logEntry As String = String.Format("Initializing summary '{0}' (Excel format string = '{1}', .NET format string = '{2}')...", e.Summary.Key, e.ExcelFormatStr, e.FrameworkFormatStr) ' Write the log entry Me.WriteToLog(logEntry, False) End Sub ' Handles the FormulaExporting event. Private Sub excelExporter_FormulaExporting(ByVal sender As Object, ByVal e As FormulaExportingEventArgs) ' Export the formula. e.Action = FormulaExportAction.ExportFormula ' Format the log entry Dim logEntry As String = String.Format("Exporting formula '{0}' for cell '{1}' (Context = {2})", e.GridFormula, e.WorksheetCell, e.Context) ' Write the log entry Me.WriteToLog(logEntry, False) End Sub ' Handles the FormulaExported event. Private Sub excelExporter_FormulaExported(ByVal sender As Object, ByVal e As FormulaExportedEventArgs) ' Format the log entry Dim logEntry As String = String.Format("Exported formula '{0}' for cell '{1}' (Context = {2})", e.GridFormula, e.WorksheetCell, e.Context) ' Write the log entry Me.WriteToLog(logEntry, False) End Sub ' Handles the FormulaExportError event. Private Sub excelExporter_FormulaExportError(ByVal sender As Object, ByVal e As FormulaExportErrorEventArgs) ' Record the error Me.hasErrors = True ' Suppress the error for subsequent instances of this formula e.Action = FormulaExportErrorAction.CancelAll ' Don't try to write out potentially invalid formulas e.ApplyInvalidFormulaIfPossible = False ' Write the error to the log Dim logEntry As String = String.Format("Error exporting grid formula '{0}' to excel formula '{1}' for cell '{2}' (Error = {3}, Description = '{4}')", e.GridFormula, e.ExcelFormula, e.WorksheetCell, e.Error, e.ErrorText) Me.WriteToLog(logEntry, True) End Sub Private Sub WriteToLog(ByVal s As String) Me.WriteToLog(s, False) End Sub Private Sub WriteToLog(ByVal s As String, ByVal isError As Boolean) Dim quote As String = Chr(34).ToString() If (isError) Then s = String.Format("{0}{1}{2}", quote + "<font color=" + quote + "#FF0000" + quote + ">", s, "</font>") s = String.Format("{0}{1}{2}", s, "<br>", Environment.NewLine) If Not Me.logStream Is Nothing Then Dim encoding As ASCIIEncoding = New ASCIIEncoding() Dim bytes As Byte() = encoding.GetBytes(s) Me.logStream.Write(bytes, 0, bytes.Length) End If End Sub End Class
using System; using System.Text; using System.IO; using Infragistics.Excel; using Infragistics.Win; using Infragistics.Win.UltraWinGrid; using Infragistics.Win.UltraWinGrid.ExcelExport; private void cmdExport_Click(object sender, EventArgs e) { ExcelExporter exporter = new ExcelExporter( this.ultraGrid1, "temp.xls" ); exporter.Export(Infragistics.Excel.WorkbookFormat.Excel97To2003, "ErrorLog.htm"); } public class ExcelExporter { private UltraGrid grid = null; private string fileName = string.Empty; private FileStream logStream = null; private bool hasErrors = false; public ExcelExporter(UltraGrid grid, string fileName) { this.grid = grid; this.fileName = fileName; } public bool Export(WorkbookFormat workbookFormat, string log ) { // Clear the 'hasErrors' flag this.hasErrors = false; // Create the log file stream if the caller wants to log the results if ( string.IsNullOrEmpty(log) == false ) this.logStream = new FileStream( log, FileMode.Create, FileAccess.ReadWrite ); // Create a new instance of the UltraGridExcelExporter class. UltraGridExcelExporter excelExporter = new UltraGridExcelExporter(); // Set ExportFormulas to true excelExporter.ExportFormulas = true; try { // Handle the events that are fired when a formula is exported. excelExporter.FormulaExporting += new EventHandler<FormulaExportingEventArgs>(this.excelExporter_FormulaExporting); excelExporter.FormulaExported += new EventHandler<FormulaExportedEventArgs>(this.excelExporter_FormulaExported); excelExporter.FormulaExportError += new EventHandler<FormulaExportErrorEventArgs>(this.excelExporter_FormulaExportError); excelExporter.InitializeSummary += new EventHandler<InitializeSummaryEventArgs>(this.excelExporter_InitializeSummary); if ( this.logStream != null ) this.WriteToLog( "<HTML><BODY>" ); // Export excelExporter.Export( this.grid, this.fileName, workbookFormat ); if ( this.logStream != null ) this.WriteToLog( "</BODY></HTML>" ); } catch { this.hasErrors = true; } finally { // Detach the event handlers excelExporter.FormulaExporting -= new EventHandler<FormulaExportingEventArgs>(this.excelExporter_FormulaExporting); excelExporter.FormulaExported -= new EventHandler<FormulaExportedEventArgs>(this.excelExporter_FormulaExported); excelExporter.FormulaExportError -= new EventHandler<FormulaExportErrorEventArgs>(this.excelExporter_FormulaExportError); excelExporter.InitializeSummary -= new EventHandler<InitializeSummaryEventArgs>(this.excelExporter_InitializeSummary); if ( this.logStream != null ) { this.logStream.Close(); this.logStream.Dispose(); } } return this.hasErrors == false; } // Handles the InitializeSummary event. private void excelExporter_InitializeSummary(object sender, InitializeSummaryEventArgs e) { // Format the log entry string logEntry = string.Format( "Initializing summary '{0}' (Excel format string = '{1}', .NET format string = '{2}')...", e.Summary.Key, e.ExcelFormatStr, e.FrameworkFormatStr ); // Write the log entry this.WriteToLog( logEntry, false ); } // Handles the FormulaExporting event. private void excelExporter_FormulaExporting(object sender, FormulaExportingEventArgs e) { // Export the formula. e.Action = FormulaExportAction.ExportFormula; // Format the log entry string logEntry = string.Format( "Exporting formula '{0}' for cell '{1}' (Context = {2})", e.GridFormula, e.WorksheetCell, e.Context ); // Write the log entry this.WriteToLog( logEntry, false ); } // Handles the FormulaExported event. private void excelExporter_FormulaExported(object sender, FormulaExportedEventArgs e) { // Format the log entry string logEntry = string.Format( "Exported formula '{0}' for cell '{1}' (Context = {2})", e.GridFormula, e.WorksheetCell, e.Context ); // Write the log entry this.WriteToLog( logEntry, false ); } // Handles the FormulaExportError event. private void excelExporter_FormulaExportError(object sender, FormulaExportErrorEventArgs e) { // Record the error this.hasErrors = true; // Suppress the error for subsequent instances of this formula e.Action = FormulaExportErrorAction.CancelAll; // Don't try to write out potentially invalid formulas e.ApplyInvalidFormulaIfPossible = false; // Write the error to the log string logEntry = string.Format( "Error exporting grid formula '{0}' to excel formula '{1}' for cell '{2}' (Error = {3}, Description = '{4}')", e.GridFormula, e.ExcelFormula, e.WorksheetCell, e.Error, e.ErrorText ); this.WriteToLog( logEntry, true ); } private void WriteToLog( string s ) { this.WriteToLog( s, false ); } private void WriteToLog( string s, bool isError ) { if ( isError ) s = string.Format("{0}{1}{2}", "<font color=\"#FF0000\">", s, "</font>"); s = string.Format("{0}{1}{2}", s, "<br>", Environment.NewLine); if ( this.logStream != null ) { ASCIIEncoding encoding = new ASCIIEncoding(); byte[] bytes = encoding.GetBytes( s ); this.logStream.Write( bytes, 0, bytes.Length ); } } }
Target Platforms: Windows 10, Windows 8.1, Windows 8, Windows 7, Windows Server 2012, Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2