Skip to main content

DevExpress v24.2 Update — Your Feedback Matters

Our What's New in v24.2 webpage includes product-specific surveys. Your response to our survey questions will help us measure product satisfaction for features released in this major update and help us refine our plans for our next major release.

Take the survey Not interested

SpreadsheetDecryptionException Class

Fires under certain conditions when an attempt to load a password-protected .xls file fails.

Namespace: DevExpress.XtraSpreadsheet

Assembly: DevExpress.Spreadsheet.v24.2.Core.dll

NuGet Package: DevExpress.Spreadsheet.Core

#Declaration

public class SpreadsheetDecryptionException :
    Exception

#Remarks

Note

The sample code which uses the SpreadsheetDecryptionException to load a password-protected file is obsolete. To load a password encrypted file, use the built-in dialog which prompts an end-user for a password, the WorkbookImportOptions.Password property and the ISpreadsheetComponent.EncryptedFilePasswordRequest event.

#Example

This example demonstrates the technique required to to open a password protected .xls file prompting a user for a correct password.

When the Spreadsheet control attempts to open a password protected .xls file and the XlsDocumentImporterOptions.Password property is not set, the control raises the SpreadsheetControl.InvalidFormatException event with the SpreadsheetDecryptionException exception in the event arguments. If this event is not handled, the control cancels loading without any alert.

The method is to subscribe to the InvalidFormatException event, prompt the user for a password, specify the password and call the SpreadsheetControl.LoadDocument.

Note

You can use this technique for password-protected .xls documents created with Microsoft Excel versions up to 2010.

using DevExpress.Spreadsheet;
using DevExpress.XtraSpreadsheet;
using System.Windows.Forms;

namespace PasswordToOpenSample {
    public partial class Form1 : Form {
        string sourceUri;
        DocumentFormat sourceFormat;

        public Form1() {
            InitializeComponent();
            spreadsheetControl1.BeforeImport+=spreadsheetControl1_BeforeImport;
            spreadsheetControl1.InvalidFormatException+=spreadsheetControl1_InvalidFormatException;
        }

        private void spreadsheetControl1_BeforeImport(object sender, DevExpress.Spreadsheet.SpreadsheetBeforeImportEventArgs e) {
            sourceUri = e.Options.SourceUri;
            sourceFormat = e.DocumentFormat;
        }
        #region #decryptionexception
        private void spreadsheetControl1_InvalidFormatException(object sender, SpreadsheetInvalidFormatExceptionEventArgs e) {
            SpreadsheetDecryptionException decryptionException = e.Exception as SpreadsheetDecryptionException;
            if (decryptionException != null && sourceFormat == DocumentFormat.Xls) {
                if (decryptionException.Error == SpreadsheetDecryptionError.PasswordRequired) {
                    using (PasswordForm form = new PasswordForm()) {
                        if (form.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
                            spreadsheetControl1.Options.Import.Xls.Password = form.Password;
                            spreadsheetControl1.LoadDocument(sourceUri);
                            spreadsheetControl1.Options.Import.Xls.Password = string.Empty;
                        }
                    }
                }
                else if (decryptionException.Error == SpreadsheetDecryptionError.WrongPassword) {
                    MessageBox.Show("Incorrect password", 
                        this.Text, MessageBoxButtons.OK, MessageBoxIcon.Stop);
                }
                else if (decryptionException.Error == SpreadsheetDecryptionError.EncryptionTypeNotSupported) {
                    MessageBox.Show("Unsupported encryption type.", 
                        this.Text, MessageBoxButtons.OK, MessageBoxIcon.Stop);
                }
            }
            else {
                MessageBox.Show(string.Format("Cannot open the file {0} because file format is not valid.", sourceUri),
                    this.Text, MessageBoxButtons.OK, MessageBoxIcon.Stop);
            }
        }
        #endregion #decryptionexception
    }
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace PasswordToOpenSample {
    public partial class PasswordForm : Form {
        public PasswordForm() {
            InitializeComponent();
        }

        public string Password {
            get { return textBox1.Text; }
            set { textBox1.Text = value; }
        }
    }
}

#Inheritance

Object
Exception
SpreadsheetDecryptionException
See Also