使用COM自动化当Excel迷你图不能导出为PDF
-
25-09-2019 - |
题
我有编程导出包含迷你为PDF格式的Excel工作表中的问题。
在我的Excel表手工导出到使用Excel 2010的本机PDF导出工具PDF格式,那么一切工作正常,但现在我做到这一点用简单的COM自动化然后一切都导出为PDF包含迷你细胞的除外。
奇怪的是,当我添加了一些数据吧到Excel工作表,然后附近的数据条的迷你突然出口,但那些从数据条更远都没有。
我已验证在多个不同机器和操作系统这些问题。这可能与下列问题上 StackOverflow的。
我使用以下,非常简单,VB.NET代码。我试图玩弄的各种设置和变量,但没有运气。
Public Class Form1
Enum XlFixedFormatType
xlTypePDF = 0
xlTypeXPS = 1
End Enum
Enum XlUpdateLinks
xlUpdateLinksUserSetting = 1
xlUpdateLinksNever = 2
xlUpdateLinksAlways = 3
End Enum
Enum XlFixedFormatQuality
xlQualityStandard = 0
xlQualityMinimum = 1
End Enum
Private Sub buttonConvert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles buttonConvert.Click
Dim pdf As String = Convert("C:\Sparkline.xlsx")
Process.Start(pdf)
End Sub
Public Function Convert(ByVal fileName As String) As String
Dim outPutFilename As String, printObject As Object = Nothing
Dim app As Object '** In reality this is a Microsoft.Office.Interop.Excel.Application
Dim doc As Object '** In reality this is a Microsoft.Office.Interop.Excel.Workbook
app = CreateObject("Excel.Application")
'** Open the _document
doc = app.Workbooks.Open(fileName:=fileName, _
UpdateLinks:=XlUpdateLinks.xlUpdateLinksNever, _
ReadOnly:=True, _
AddToMru:=False, _
IgnoreReadOnlyRecommended:=True, _
CorruptLoad:=True, _
Editable:=False)
'** Set visible sheets depending on selected range
printObject = app.ActiveWorkbook.ActiveSheet
'** Write the file under the same name, but with different extension
outPutFilename = System.IO.Path.ChangeExtension(fileName, "pdf")
printObject.ExportAsFixedFormat(Type:=XlFixedFormatType.xlTypePDF, _
fileName:=outPutFilename, _
quality:=XlFixedFormatQuality.xlQualityStandard, _
IncludeDocProperties:=False, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False)
doc.Close(False)
app.Quit()
'** Return the name of the converted file
Return outPutFilename
End Function
End Class
解决方案
我一直在与微软接触的支持,他们也承认这是一个错误。该产品团队正在盯着它包含在未来的服务包。
在此之前,使应用程序可见执行出口之前将解决这个问题。如果你不希望用户看到它,那么你可以定位在窗口关闭屏幕。
不隶属于 StackOverflow