如何访问“保存缩略图”?通过互操作实现Excel的功能

本文关键字:互操作 实现 功能 Excel 保存缩略图 略图 何访问 访问 保存 | 更新日期: 2023-09-27 18:19:13

我正在使用c#和。net 4.0开发一个Excel插件。在Excel中,"另存为"对话框中有一个功能,可以将预览缩略图与文档一起保存。如何在代码中访问此功能?此外,我如何访问预览图像(我认为这是一个位图),一旦它已保存?

目前我的Excel外接程序对文档进行如下复制:

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

然后将文档复制到服务器并擦除临时文件。基本上,我还想制作缩略图,将其发布到服务器,并删除临时文件。

如何访问“保存缩略图”?通过互操作实现Excel的功能

我不知道如何以编程方式访问保存缩略图功能,但如果您有一个带有缩略图的Excel文件并想提取图像,您可以使用以下代码(使用OpenXml 2.0 API):

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自动化,您也可以在服务器端执行此操作。