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

C# 我如何访问;“保存缩略图”;通过互操作实现Excel的功能?,c#,vsto,C#,Vsto,我正在使用C#和.NET4.0开发Excel外接程序。在Excel中,“另存为”对话框中有一项功能,用于将预览缩略图与文档一起保存。如何在代码中访问此功能?另外,保存预览图像后,如何访问预览图像(我认为它是位图) 目前,我的Excel加载项制作文档的副本,如下所示: Globals.ThisAddIn.Application.ActiveWorkbook.SaveCopyAs("tempwbcopy"); 然后,它将文档复制到服务器并擦除临时文件。基本上,我还想制作缩略图图像,将其发布到服务器

我正在使用C#和.NET4.0开发Excel外接程序。在Excel中,“另存为”对话框中有一项功能,用于将预览缩略图与文档一起保存。如何在代码中访问此功能?另外,保存预览图像后,如何访问预览图像(我认为它是位图)

目前,我的Excel加载项制作文档的副本,如下所示:

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

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

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

因为这不是Excel自动化,所以您也可以在服务器端执行此操作

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