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?

  • Kodierung einer Liste von Tupeln mit Python?
  • Python, wie man 0x90 (\ x90) als macOS Roman Encoding zu \ xc3 \ xaa codiert
  • Zeichenerkennung in einer Textdatei in Python mit dem Universal Encoding Detector (Chardet)
  • Python: Umwandlung von ISO-8859-1 / latin1 nach UTF-8
  • Wickeln Sie einen offenen Stream mit io.TextIOWrapper
  • Python HTMLParser: UnicodeDecodeError
  • 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.

  • Unausgeglichene Zeichen in einer Zeichenfolge mit Python
  • Schreiben Sie escaped Zeichen zu Datei, so dass das Zeichen sichtbar ist
  • In Python ist es möglich, Zeilenumbrüche beim Drucken eines Strings zu entgehen?
  • Decodieren Escaped Zeichen in URL
  • HTML-Tags innerhalb von JSON (in Python)
  • Wann sollte ich in Djangos Schablonensystem entkommen und sicher sein?
  • 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.