[PYTHON] Von der Excel-Datei zur Exe und Freigabe des Tools, das CSV ausspuckt

Einführung

Da habe ich mit Python ein Tool zum Generieren von CSV aus Excel-Dateien inklusive Blatt auf einmal erstellt Hier sind die Schritte, um es freizugeben.

Werkzeuginhalt

Klicken Sie hier für das diesmal erstellte Tool Wir haben auch eine Exe, damit sie außerhalb der Programmumgebung verwendet werden kann. Legen Sie die exe-Datei in den Ordner mit Excel ab und doppelklicken Sie darauf.

exe https://github.com/InTack2/csv-masher/releases

GitHub

https://github.com/InTack2/csv-masher

Nachtrag 2020/05/09 Es tut mir Leid! !! Es blieb privat beim Schreiben, dass es veröffentlicht wurde. .. freigegeben. .. ..

Hintergrund

Wenn ich als TA arbeite, bereite ich häufig CSV- und Json-Dateien vor und habe sie im Allgemeinen. Wenn es sich jedoch um eine CSV-Datei handelt, ist es sehr schwierig einzugeben, dass die Zellenbreite beschädigt ist. .. Also verwalte ich es mit Excel. Dieses Mal speichere ich es unter einem anderen Namen und das Eingabeziel ändert sich, so dass es sowieso problematisch ist. Während Sie also ein Tool zur Automatisierung dieses Bereichs erstellen, Übrigens wollte ich die öffentliche Veröffentlichung von GitHub machen, also habe ich es geschafft.

Entwicklungsumgebung

Werkzeuginhalt

Der Inhalt ist ziemlich einfach. Es ist, als würde man eine Excel-Datei mit der openpyxl-Bibliothek lesen und jedes Blatt mit csv ausspucken. Ich werde die Erklärung usw. weglassen, aber wenn es eine Anfrage gibt ...

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Konvertieren Sie Excel-Dateien im selben Verzeichnis sofort in CSV
"""
import os
import sys
import csv
import openpyxl
#PyInstaller__file__Problemvermeidung
if hasattr(sys, "frozen"):
    SEARCH_FILE_DIRECTORY = os.path.dirname(sys.argv[0])  # "..\\[exe_folder]"
#Wenn die Datei ausgeführt wird
else:
    SCRIPT_PATH = os.path.dirname(__file__)  # "..\\src\\csv-masher"
    SRC_PATH = os.path.dirname(SCRIPT_PATH)  # "..\\src"
    SEARCH_FILE_DIRECTORY = os.path.join(SRC_PATH, "sample_file")  # "..\\src\\Sample"
EXCEL_EXTENSION = ".xlsx"
CSV_EXTENSION = ".csv"

class CSVMasher(object):
    """Hauptgenerationsfunktion
    """
    def __init__(self):
        self.__excel_files = []
        self.set_excel_files(self.__search_excel_file(SEARCH_FILE_DIRECTORY))
    def create_csv_file(self):
        """Generieren Sie eine CSV-Datei
        """
        for excel_file in self.__excel_files:
            excel_name = os.path.basename(excel_file).split(".")[0]
            excel_current_directory = os.path.dirname(excel_file)
            book = openpyxl.load_workbook(excel_file, read_only=True, keep_vba=False)
            for sheet in book.worksheets:
                sheet_name = sheet.title
                export_name = "{excel_name}_{sheet_name}{extension}".format(excel_name=excel_name, sheet_name=sheet_name, extension=CSV_EXTENSION)
                export_csv_path = os.path.join(excel_current_directory, export_name)
                with open(export_csv_path, "w", encoding="utf-8") as f:
                    writer = csv.writer(f)
                    for cols in sheet.rows:
                        writer.writerow([str(_.value or "") for _ in cols])
    def __search_excel_file(self, search_directory):
        """Holen Sie sich eine Excel-Datei
        """
        hit_files = []
        for dir_path, dir_list, file_list in os.walk(search_directory):
            for file_name in file_list:
                if EXCEL_EXTENSION in file_name:
                    hit_files.append(os.path.join(dir_path, file_name))
        return hit_files
    def get_excel_files(self):
        """Holen Sie sich eine Excel-Datei
        Returns:
            list:Excel-Passliste
        """
        return self.__excel_files
    def set_excel_files(self, excel_files):
        """Stellen Sie die Excel-Datei ein
        Args:
            excel_files (list):Excel-Dateipfadliste
        """
        self.__excel_files = excel_files

if __name__ == "__main__":
    csv_masher = CSVMasher()
    print(csv_masher.get_excel_files())
    csv_masher.create_csv_file()

Veröffentlichen

Ich habe den Inhalt gemacht, also habe ich ihn veröffentlicht! !! Ich will dahin, Bei der Konvertierung in exe oder beim Veröffentlichen sind einige Dinge zu beachten.

1. Überprüfen Sie die Bibliothekslizenz

Da es dieses Mal beendet ist, wird das Paket importiert. In diesem Fall wird die Lizenz der Bibliothek "beigefügt". Sie müssen die Lizenz überprüfen, da es sich um eine andere Methode als die normale "Verwendung" handelt. (Für diejenigen, die hier eine einfache Methode kennen)

1-1. Sammeln Sie Paketlizenzen

Die diesmal verwendeten Pakete einschließlich der Abhängigkeiten lauten wie folgt Es wird nur eine Bibliothek importiert, aber angesichts der Abhängigkeiten denke ich, dass sie sich auf die Imozuru-Formel erhöhen wird.

Fügen Sie der Datei LICENSE die Datei 1-2.exe bei

Wenn Sie es beilegen, müssen Sie grundsätzlich das Urheberrecht und die Lizenzerklärung anzeigen Ich denke, dass openpyxl und seine abhängigen et-xmlfile und jdcal urheberrechtlich geschützt sein sollten. Die Lizenzerklärung wird ziemlich lang sein, aber ich denke, es ist besser, als den Autor unbeabsichtigt zu verletzen, ohne sie anzuzeigen.

Referenz

https://qastack.jp/software/121998/mit-vs-bsd-vs-dual-license

https://mozxxx.hatenadiary.org/entry/20110529/p4

https://www.catch.jp/oss-license/2013/09/27/mit_license/

2. Überlegen Sie, wie Sie die exe-Datei freigeben können

Es gibt verschiedene Möglichkeiten, Dieses Mal möchte ich die Release-Funktion von GitHub zum Lernen verwenden.

Dieser Artikel ist leicht zu verstehen und wird daher empfohlen.

https://qiita.com/keita69sawada/items/da6d8f6b6fb8f05ca670

3. Eigentlich veröffentlichen

Die Veröffentlichung wurde erfolgreich abgeschlossen. image.png

4. Veröffentlichen Sie auch das GitHub-Repository

Öffnen Sie die Repository-Einstellungen image.png

Scrollen Sie nach unten und es ist beängstigend, aber es wird mit In der Spalte Gefahrenzone öffentlich machen gemacht. image.png

Zusammenfassung

Es war schwieriger als ich erwartet hatte. .. Insbesondere rund um die Lizenz spielt es keine Rolle, ob sie normal importiert und verwendet wird. Es scheint, dass Sie bei der Konvertierung in exe vorsichtig sein müssen.

Recommended Posts

Von der Excel-Datei zur Exe und Freigabe des Tools, das CSV ausspuckt
Erstellt einen Toolsver, der Betriebssystem, Python, Module und Toolversionen an Markdown ausspuckt
Python-Skript, das alle Datensätze der Oracle-Tabelle in eine CSV-Datei ausgibt
[Python] Von der morphologischen Analyse von CSV-Daten bis zur CSV-Ausgabe und Diagrammanzeige [GiNZA]
Excel-Datei aus Python importieren (in DB registriert)
Erstellt ein Tool zum Ausgeben eines Sequenzdiagramms aus einer Paketerfassungsdatei mit mehreren Knoten
Verfahren zum Konvertieren einer Python-Datei in eine Exe aus der Ubunts-Umgebungskonstruktion
So konvertieren Sie Json-Dateien in das CSV- oder EXCEL-Format
Python-Skript, das eine JSON-Datei aus einer CSV-Datei erstellt
[Python] Erstellen eines GUI-Tools, das die CSV von Temperaturanstiegsdaten in Excel automatisch verarbeitet
Vorsichtsmaßnahmen bei der Eingabe von CSV mit Python und der Ausgabe an json, um exe zu erstellen
"Durchschnitt der Summen von 1 bis 10" und seine Ausführungsgeschwindigkeit
[Python] Informationen zum Erstellen eines Tools zum Erstellen einer neuen Outlook-E-Mail basierend auf den Daten der JSON-Datei und dem Teil, der abgefangen wurde