Excel Sparklines nicht in PDF exportiert, wenn COM Automation mit
-
25-09-2019 - |
Frage
ich habe ein Problem programmatisch Excel-Tabellen exportieren, die Sparklines in PDF-Format enthalten.
Wenn ich manuell das Excel-Sheet in PDF-Format exportieren mit Excel 2010 nativen PDF exportieren Anlage dann funktioniert alles gut, aber der Moment, als ich es einfach COM-Automatisierung tun dann alles in PDF mit Ausnahme von Zellen enthält, Spark exportiert wird.
Die seltsame Sache ist, dass, wenn ich ein paar Datenbalken in die Excel-Tabelle hinzufügen, dann die Sparklines in der Nähe der Datenbalken sind plötzlich exportiert, aber die, die weiter weg von den Datenbalken sind es nicht.
Ich habe diese Probleme auf mehreren verschiedenen Rechnern und Betriebssystemen überprüft. Dies kann auf die folgende Frage bezogen werden auf Stackoverflow.
Ich bin mit dem folgenden, sehr direkt, VB.NET-Code. Ich habe versucht, mit den verschiedenen Einstellungen herumgespielt und Variablen, aber kein Glück.
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
Lösung
Ich habe in Kontakt mit Microsoft Support gewesen, und sie haben erkannt, es ein Fehler ist. Das Produktteam wird in einem zukünftigen Service Pack es für die Aufnahme an.
Bis dahin, so dass die Anwendung sichtbar, bevor Sie den Export Durchführung wird das Problem lösen. Wenn Sie nicht möchten, dass der Benutzer es sehen, dann können Sie das Fenster außerhalb des Bildschirms positioniert werden.