Excel-Arbeitsmappe mit Python drucken

Angenommen, ich habe eine Excel-Datei excel_file.xlsx und ich möchte es an meinen Drucker mit Python senden, damit ich benutze:

 import os os.startfile('path_to_file','print') 

Mein Problem ist, dass dies nur das erste Blatt der Excel-Arbeitsmappe druckt, aber ich möchte alle Blätter gedruckt. Gibt es eine Möglichkeit, die gesamte Arbeitsmappe zu drucken?

Außerdem habe ich Openpyxl benutzt, um die Datei zu erstellen, aber es scheint keine Möglichkeit zu haben, die Anzahl der Blätter zum Drucken auszuwählen.

Jede Hilfe wäre sehr dankbar.

EDIT —– Bisher scheint es die einzige Antwort, die ich finden konnte, war, eine temporäre Arbeitsmappe für jedes Blatt in excel_file.xlsx zu erstellen und sie nacheinander zu drucken. Aber es ist nicht sehr effizient. Ich werde weiter suchen und aktualisieren, wenn ich eine bessere Lösung finde.

  • Wie fusionierst du zwei Verzeichnisse, oder verschief es mit Ersetzen, von der Windows-Befehlszeile ohne Kopieren?
  • Wie benutzt man den Befehl dir / s in Python?
  • Füge ein Verzeichnis zu Python sys.path hinzu, damit es jedes Mal, wenn ich Python verwende, eingeschlossen ist
  • Wie man SublimeText mit aktivierter Visual Studio-Umgebung ausführt
  • Wie handle ich mit Nicht-ASCII-Warnung bei der Ausführung von Save on Python-Code bearbeitet mit IDLE?
  • ValueError: Kann nicht serialisieren: <myproject.storage.AzureStorage-Objekt bei 0x7f85185e66d0>
  • Kann ich eine ausführbare Datei von der Aufforderung der UAC-Erhöhung stoppen?
  • Python: Die Dateimanagement mal mit größerer Auflösung als eine Sekunde
  • 2 Solutions collect form web for “Excel-Arbeitsmappe mit Python drucken”

     from xlrd import open_workbook from openpyxl.reader.excel import load_workbook import os import shutil path_to_workbook = "/Users/username/path/sheet.xlsx" worksheets_folder = "/Users/username/path/worksheets/" workbook = open_workbook(path_to_workbook) def main(): all_sheet_names = [] for s in workbook.sheets(): all_sheet_names.append(s.name) for sheet in workbook.sheets(): if not os.path.exists("worksheets"): os.makedirs("worksheets") working_sheet = sheet.name path_to_new_workbook = worksheets_folder + '{}.xlsx'.format(sheet.name) shutil.copyfile(path_to_workbook, path_to_new_workbook) nwb = load_workbook(path_to_new_workbook) print "working_sheet = " + working_sheet for name in all_sheet_names: if name != working_sheet: nwb.remove_sheet(nwb.get_sheet_by_name(name)) nwb.save(path_to_new_workbook) ws_files = get_file_names(worksheets_folder, ".xlsx") # Uncomment print command for f in xrange(0, len(ws_files)): path_to_file = worksheets_folder + ws_files[f] # os.startfile(path_to_file, 'print') print 'PRINT: ' + path_to_file # remove worksheets folder shutil.rmtree(worksheets_folder) def get_file_names(folder, extension): names = [] for file_name in os.listdir(folder): if file_name.endswith(extension): names.append(file_name) return names if __name__ == '__main__': main() 

    Wahrscheinlich nicht der beste Ansatz, aber es sollte funktionieren. Als Workaround kannst du separate .xlsx-Dateien erstellen, bei denen jeder nur eine Tabellenkalkulation hat und sie dann mit os.startfile(path_to_file, 'print')

    Sie können vBa auf open () -Befehl einbetten, um die Excel-Datei auf einen Standarddrucker zu drucken, indem Sie das in diesem Artikel erwähnte xlsxwriter-Dienstprogramm verwenden: PBPYthons Einbetten von vBA in Excel

    Python ist die beste Programmiersprache der Welt.