openpyxl standardmässig mit Vertec ausliefern?

  • Wir nutzen vermehrt die Python-library openpyxl um Daten aus Excel mittels Script direkt nach Vertec zu importieren.
    Dazu muss man selber die für die aktuelle Python-Version von Vertec gültige Version von openpyxl ins Vertec-Verzeichnis kopieren.

    Könnte Vertec diese (die jeweils gültige Version) openpyxl-lib in Vertec vorinstallieren?

    Für Interessierte hier ein sehr einfaches Script mit openpyxl das ich genutzt habe ein Feld (member) auf allen Mitarbeitern unserer Firma zu aktualisieren. In diesem Fall wusste, ich in welcher Excel-Spalte (nummer) sich die Daten befinden. Man kann aber auch über den Spaltennamen zugreifen und vieles mehr.

    • Offizieller Beitrag

    Die Library kann durch uns nicht auf die Whitelist für das Resctricted Scripting gesetzt werden (siehe https://www.vertec.com/de/kb/restrict-scripting/), weil sie Files schreiben kann auf das Filesystem. On Premises Kunden, welche Ihr Vertec NICHT im Internet stehen haben und darum das Restricted Scripting nicht aktiviert haben oder dieses Modul nur für die Desktop App einsetzen, können das ja gut in die eigene Installation einfügen, wie ihr das gemacht habt. Ergäbe also wenig Sinn, diese Library mitzuliefern, weil die allermeisten Vertec Kunden die sowieso nicht einsetzen könnten.

    Für das Erstellen von Excel Files liefern wir aber xmlwt mit, aber das ist aus gleichem Grund auch nicht auf der Whitelist.

    Ich möchte in dem Zusammenhang auch noch auf Sicherheitsanforderungen von Vertec in verschiedenen Betriebsszenarien verweisen: https://www.vertec.com/de/kb/sicherheit-im-netz/. Ausser wenn Vertec On Premises ausschliesslich im LAN (oder über VPN) verfügbar ist, kann auf das Resctricted Scripting verzichtet werden. Sobald Vertec im Internet verfügbar ist, muss die eigene Instanz gehärtet werden. Im Vertec Cloud Abo geschieht das natürlich automatisch durch uns.

  • und just in case, hier noch ein Hinweis auf eine gute Excel Python Library:

    http://www.xlwings.org
    xlwings

    xlwings allows you to program and automate Excel with Python instead of VBA. The difference to XlsxWriter or OpenPyXL (used above in the Pandas section) is the following: XlsxWriter and OpenPyXL write Excel files directly on disk. They work wherever Python works and don’t require an installation of Microsoft Excel. xlwings, on the other hand, can write, read and edit Excel files via the Excel application, i.e. a local installation of Microsoft Excel is required. xlwings also allows you to create macros and user-defined functions in Python rather than in VBA, but for reporting purposes, we won’t really need that.

    While XlsxWriter/OpenPyXL are the best choice if you need to produce reports in a scalable way on your Linux web server, xlwings does have the advantage that it can edit pre-formatted Excel files without losing or destroying anything. OpenPyXL on the other hand (the only writer library with xlsx editing capabilities) will drop some formatting and sometimes leads to Excel raising errors during further manual editing.

    • Offizieller Beitrag

    Vielen Dank für den Input! Das xlwings ist schwierig für uns mitzuliefern wegen den Lizenzbestimmungen und -kosten. Aber On Premises Kunden können das natürlich lizenzieren und selber einbinden.

    Wir haben das Modul OpenPyXL aber noch etwas angeschaut, wäre wohl die geeignete Library für uns. Ins Cloud Abo können wir es nicht ohne Weiteres bringen, denn über das Workbook Objekt hat man Zugriff auf das lokale Filesystem - wir können das Python Modul also nicht whitelisten.

    Wir überlegen uns noch, ob wir ein eigenes Modul bauen mit den Funktionalitäten aber ohne Filezugriff, oder ob wir das OpenPyXL einfach für On Premises Kunden mitliefern wollen.

    • Offizieller Beitrag

    By the way: das xlwings setzt ja auch ein lokales Excel voraus, eignet sich also sowieso nur für On Premises Kunden und die Desktop App (die wir ja auch mehreren Gründen nicht empfehlen (u.A. Performance) und es auch irgendwann nicht mehr geben wird). Ich würde das nicht empfehlen, auch wenn es praktisch aussieht.

    Siehe auch den 10-Punkte Plan zur Desktop App.