Ich versuche, eine Excel-Tabelle in PDF zu konvertieren Python und das comtypes Paket mit diesem Code:Fehler beim Konvertieren von Excel-Dokument in der PDF comtypes in Python
import os
import comtypes.client
FORMAT_PDF = 17
SOURCE_DIR = 'C:/Users/IEUser/Documents/jscript/test/resources/root3'
TARGET_DIR = 'C:/Users/IEUser/Documents/jscript'
app = comtypes.client.CreateObject('Excel.Application')
app.Visible = False
infile = os.path.join(os.path.abspath(SOURCE_DIR), 'spreadsheet1.xlsx')
outfile = os.path.join(os.path.abspath(TARGET_DIR), 'spreadsheet1.pdf')
doc = app.Workbooks.Open(infile)
doc.SaveAs(outfile, FileFormat=FORMAT_PDF)
doc.Close()
app.Quit()
Dieses Skript oben läuft gut und die pdf-Datei ist erstellt, aber wenn ich versuche, es zu öffnen, erhalte ich den Fehler "Die Datei kann nicht geöffnet werden - es gibt ein Problem mit dem Dateiformat" (aber nach dem Schließen dieses Fehlerdialogs ist es tatsächlich möglich, eine Vorschau der PDF-Datei). Ich habe ein ähnliches Skript ausprobiert, um Word-Dokumente in PDFs zu konvertieren, und das funktionierte gut.
Irgendwelche Ideen, wie ich dieses Problem mit dem Dateiformatfehler beheben kann?
Gute Lösung. Die [FileFormat-Aufzählung enthält keine PDF-Entsprechung] (https://msdn.microsoft.com/en-us/vba/excel-vba/articles/xlfileformat-enumeration-excel), also nicht sicher, wo Sie hinkommen der '17'-Wert (möglicherweise ist dies eine Konstante, die im Objektmodell einer anderen Anwendung aufgelistet wird, [wie Word] (https://msdn.microsoft.com/en-us/vba/word-vba/articles/wdsaveformat-enumeration- Wort)?) In Excel, das SaveAs-Dialogfeld zu verwenden, um als PDF zu speichern, ruft tatsächlich die 'ExportAsFixedFormat'-Methode hinter den Kulissen auf, nicht die' SaveAs'-Methode, wahrscheinlich aus dem oben genannten Grund :) –
Ok - danke für deinen Kommentar. Über die '17' ... habe ich es einfach von [hier] abgeholt (https://stackoverflow.com/questions/6011115/doc-to-pdf-using-python). Aber die Nummer kommt wahrscheinlich von dem Link, den du gepostet hast. – Andreas
Ja, das macht Sinn, ich habe nur eine Erläuterung hinzugefügt, falls es für Sie (oder irgendjemanden, der auf diese Frage stolpert) hilfreich wäre. Die konstanten Werte sind nicht identisch zwischen Word/Excel/PowerPoint/etc., Also funktioniert in einer Anwendung (oft, aber nicht immer) nicht in anderen. In jedem Fall, gute Arbeit, Ihre eigene Frage zu lösen! –