Как получить доступ к функции «Сохранить эскиз» в Excel через Interop? - PullRequest
2 голосов
/ 31 декабря 2011

Я работаю над надстройкой Excel с использованием C # и .NET 4.0. В Excel в диалоговом окне «Сохранить как» есть функция для сохранения эскиза предварительного просмотра вместе с документом. Как я могу получить доступ к этой функции в коде? Кроме того, как мне получить доступ к изображению предварительного просмотра (я думаю, что это растровое изображение) после того, как оно было сохранено?

В настоящее время моя надстройка Excel создает копию документа следующим образом:

Globals.ThisAddIn.Application.ActiveWorkbook.SaveCopyAs("tempwbcopy");

Затем копирует документ на сервер и стирает временный файл. По сути, я хотел бы также сделать изображение thumbail, опубликовать его на сервере и стереть временный файл.

1 Ответ

1 голос
/ 05 января 2012

Я не знаю, как получить программный доступ к функции «Сохранить миниатюру», но если у вас есть файл Excel с миниатюрой и вы хотите извлечь изображение, вы можете использовать следующий код (используя API OpenXml 2.0):

Private Sub ExtractThumbnailAsPng(ByVal pathToExcelFile As String, ByVal outputPath As String)

    Dim thumbnailPart As DocumentFormat.OpenXml.Packaging.ThumbnailPart

    Using excelFile As SpreadsheetDocument = SpreadsheetDocument.Open(pathToExcelFile, True)
        thumbnailPart = excelFile.ThumbnailPart
        If thumbnailPart IsNot Nothing Then
            Using thumbnailStream As Stream = thumbnailPart.GetStream(FileMode.Open, FileAccess.ReadWrite)
                Dim thumbBitmap As New Bitmap(thumbnailStream)
                thumbBitmap.Save(outputPath, System.Drawing.Imaging.ImageFormat.Png)
            End Using
        End If
    End Using

End Sub

Поскольку это не автоматизация Excel, вы также можете использовать эту сторону сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...