VintaSoft Imaging .NET SDK 14.0: Документация для .NET разработчика
В этом разделе
    Кодеки: Как работать с защищенным XLSX-файлом?
    В этом разделе
    VintaSoft Imaging .NET SDK позволяет открывать и просматривать защищенный XLSX-документ. Открытый защищенный XLSX-документ нельзя редактировать, но его можно сохранить в новый не защищенный XLSX-документ.


    Вот C#/VB.NET код, который демонстрирует, как преобразовать защищенный XLSX-файл в многостраничный TIFF-файл:
    /// <summary>
    /// Converts encrypted XLSX document to a TIFF file using ImageCollection and TiffEncoder classes.
    /// XLSX document is rendered with specified resolution.
    /// </summary>
    public static void ConvertEncryptedXlsxToTiff(string xlsxFileName, string password, string tiffFileName, float dpi)
    {
        System.IO.Stream xlsxFileStream = System.IO.File.OpenRead(xlsxFileName);
    
        // if document is encrypted
        if (Vintasoft.Imaging.Office.OfficeDocumentCryptography.IsSecuredOfficeDocument(xlsxFileStream))
        {
            // create memory stream
            System.IO.MemoryStream xlsxDectyptedFileStream = new System.IO.MemoryStream();
            // try to decrypt DOCX document and save not encrypted DOCX document to a stream
            bool result = Vintasoft.Imaging.Office.OfficeDocumentCryptography.TryDecryptOfficeDocument(xlsxFileStream, password, xlsxDectyptedFileStream);
            // if XLSX document password is not correct
            if (!result)
                throw new System.Exception("Invalid password.");
    
            xlsxFileStream.Dispose();
            xlsxFileStream = xlsxDectyptedFileStream;
        }
    
        using (xlsxFileStream)
        // create image collection
        using (Vintasoft.Imaging.ImageCollection imageCollection = new Vintasoft.Imaging.ImageCollection())
        {
            // add XLSX document to image collection
            imageCollection.Add(xlsxFileStream);
    
            // set rendering settings
            imageCollection.SetRenderingSettings(new Vintasoft.Imaging.Codecs.Decoders.RenderingSettings(dpi, dpi));
    
            // create TiffEncoder
            using (Vintasoft.Imaging.Codecs.Encoders.TiffEncoder tiffEncoder =
                new Vintasoft.Imaging.Codecs.Encoders.TiffEncoder(true))
            {
                // set TIFF compression to Zip
                tiffEncoder.Settings.Compression =
                    Vintasoft.Imaging.Codecs.ImageFiles.Tiff.TiffCompression.Zip;
    
                // save images (rendered XLSX pages) of image collection to TIFF file using TiffEncoder
                imageCollection.SaveSync(tiffFileName, tiffEncoder);
            }
    
            // dispose images
            imageCollection.ClearAndDisposeItems();
        }
    }
    
    ''' <summary>
    ''' Converts encrypted XLSX document to a TIFF file using ImageCollection and TiffEncoder classes.
    ''' XLSX document is rendered with specified resolution.
    ''' </summary>
    Public Shared Sub ConvertEncryptedXlsxToTiff(xlsxFileName As String, password As String, tiffFileName As String, dpi As Single)
        Dim xlsxFileStream As System.IO.Stream = System.IO.File.OpenRead(xlsxFileName)
    
        ' if document is encrypted
        If Vintasoft.Imaging.Office.OfficeDocumentCryptography.IsSecuredOfficeDocument(xlsxFileStream) Then
            ' create memory stream
            Dim xlsxDectyptedFileStream As New System.IO.MemoryStream()
            ' try to decrypt DOCX document and save not encrypted DOCX document to a stream
            Dim result As Boolean = Vintasoft.Imaging.Office.OfficeDocumentCryptography.TryDecryptOfficeDocument(xlsxFileStream, password, xlsxDectyptedFileStream)
            ' if XLSX document password is not correct
            If Not result Then
                Throw New System.Exception("Invalid password.")
            End If
    
            xlsxFileStream.Dispose()
            xlsxFileStream = xlsxDectyptedFileStream
        End If
    
        Using xlsxFileStream
            ' create image collection
            Using imageCollection As New Vintasoft.Imaging.ImageCollection()
                ' add XLSX document to image collection
                imageCollection.Add(xlsxFileStream)
    
                ' set rendering settings
                imageCollection.SetRenderingSettings(New Vintasoft.Imaging.Codecs.Decoders.RenderingSettings(dpi, dpi))
    
                ' create TiffEncoder
                Using tiffEncoder As New Vintasoft.Imaging.Codecs.Encoders.TiffEncoder(True)
                    ' set TIFF compression to Zip
                    tiffEncoder.Settings.Compression = Vintasoft.Imaging.Codecs.ImageFiles.Tiff.TiffCompression.Zip
    
                    ' save images (rendered XLSX pages) of image collection to TIFF file using TiffEncoder
                    imageCollection.SaveSync(tiffFileName, tiffEncoder)
                End Using
    
                ' dispose images
                imageCollection.ClearAndDisposeItems()
            End Using
        End Using
    End Sub
    


    Вот C#/VB.NET код, который демонстрирует, как открыть защищенный XLSX-файл и сохранить его в незащищенный XLSX-файл:
    /// <summary>
    /// Converts encrypted XLSX document to not encrypted XLSX document.
    /// </summary>
    public static void ConvertEncryptedXlsxToXlsx(string xlsxFileName, string password, string resultXlsxFileName)
    {
        // if document is encrypted
        if (Vintasoft.Imaging.Office.OfficeDocumentCryptography.IsSecuredOfficeDocument(xlsxFileName))
        {
            // try to decrypt XLSX document and save not encrypted XLSX document to a new file
            bool result = Vintasoft.Imaging.Office.OfficeDocumentCryptography.TryDecryptOfficeDocument(xlsxFileName, password, resultXlsxFileName);
            // if XLSX document password is not correct
            if (!result)
                throw new System.Exception("Invalid password.");
        }
        // if document is not encrypted
        else
        {
            System.IO.File.Copy(xlsxFileName, resultXlsxFileName, true);
        }
    }
    
    ''' <summary>
    ''' Converts encrypted XLSX document to not encrypted XLSX document.
    ''' </summary>
    Public Shared Sub ConvertEncryptedXlsxToXlsx(xlsxFileName As String, password As String, resultXlsxFileName As String)
        ' if document is encrypted
        If Vintasoft.Imaging.Office.OfficeDocumentCryptography.IsSecuredOfficeDocument(xlsxFileName) Then
            ' try to decrypt XLSX document and save not encrypted XLSX document to a new file
            Dim result As Boolean = Vintasoft.Imaging.Office.OfficeDocumentCryptography.TryDecryptOfficeDocument(xlsxFileName, password, resultXlsxFileName)
            ' if XLSX document password is not correct
            If Not result Then
                Throw New System.Exception("Invalid password.")
            End If
        Else
            ' if document is not encrypted
            System.IO.File.Copy(xlsxFileName, resultXlsxFileName, True)
        End If
    End Sub