Depuis que j'ai créé un outil pour générer un CSV à partir d'un fichier Excel, y compris une feuille à la fois avec Python Voici les étapes pour le libérer.
Cliquez ici pour l'outil créé cette fois Nous avons également un exe pour qu'il puisse être utilisé en dehors de l'environnement du programme. Pour le fichier exe, placez-le dans le dossier contenant Excel et double-cliquez dessus.
exe https://github.com/InTack2/csv-masher/releases
GitHub
https://github.com/InTack2/csv-masher
2020/05/09 postscript Je suis désolé! !! Il est resté privé tout en écrivant qu'il a été publié. .. libéré. .. ..
Lorsque je travaille en tant que TA, je prépare souvent des fichiers CSV et des fichiers Json et les ai généralement. Cependant, s'il s'agit d'un fichier CSV, il est très difficile de saisir que la largeur de la cellule est cassée. .. Donc, je le gère avec Excel .. Cette fois je l'enregistre sous un nom différent et la destination d'entrée change, donc c'est quand même gênant .. Alors en créant un outil pour automatiser cette zone, Au fait, je voulais faire la sortie publique de GitHub, alors je l'ai fait.
Le contenu est assez simple. C'est comme lire un fichier Excel avec la bibliothèque openpyxl et cracher chaque feuille avec csv. Je vais omettre l'explication, etc., mais s'il y a une demande ...
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Convertir des fichiers Excel dans le même répertoire en csv à la fois
"""
import os
import sys
import csv
import openpyxl
#PyInstaller__file__Évitement des problèmes
if hasattr(sys, "frozen"):
SEARCH_FILE_DIRECTORY = os.path.dirname(sys.argv[0]) # "..\\[exe_folder]"
#Lorsque le fichier est exécuté
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):
"""Fonction de génération principale
"""
def __init__(self):
self.__excel_files = []
self.set_excel_files(self.__search_excel_file(SEARCH_FILE_DIRECTORY))
def create_csv_file(self):
"""Générer un fichier csv
"""
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):
"""Obtenez un fichier Excel
"""
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):
"""Obtenez un fichier Excel
Returns:
list:Liste de passes Excel
"""
return self.__excel_files
def set_excel_files(self, excel_files):
"""Définissez le fichier Excel
Args:
excel_files (list):liste des chemins de fichiers Excel
"""
self.__excel_files = excel_files
if __name__ == "__main__":
csv_masher = CSVMasher()
print(csv_masher.get_excel_files())
csv_masher.create_csv_file()
J'ai fait le contenu, donc je l'ai publié! !! Je veux y aller, Il y a des choses à penser lors de la conversion en exe ou de la publication.
Puisqu'il est exécuté cette fois, il importera le package. Dans ce cas, la licence de la bibliothèque sera «jointe». Vous devez vérifier la licence car il s'agit d'une méthode différente de "l'utilisation" normale. (Pour ceux qui connaissent une méthode simple ici)
Les packages utilisés cette fois, y compris les dépendances, sont les suivants Une seule bibliothèque est importée, mais compte tenu des dépendances, je pense qu'elle passera à la formule Imozuru.
Fondamentalement, si vous le joignez, vous devrez afficher le copyright et la déclaration de licence, donc Je pense que openpyxl et ses dépendants et-xmlfile et jdcal devraient être protégés par copyright. La déclaration de licence sera assez longue, mais je pense que c'est mieux que de blesser involontairement l'auteur sans l'afficher.
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/
Il y a plusieurs façons, Cette fois, j'aimerais utiliser la fonction release de GitHub pour étudier.
Cet article est facile à comprendre comment utiliser, il est donc recommandé.
https://qiita.com/keita69sawada/items/da6d8f6b6fb8f05ca670
La version est terminée avec succès.
Ouvrir les paramètres du référentiel
Faites défiler vers le bas et c'est un peu effrayant, mais c'est fait avec Rendre public dans la colonne Zone de danger.
C'était plus dur que ce à quoi je m'attendais. .. Surtout autour de la licence, peu importe lors de l'importation et de son utilisation normalement, Il semble que vous deviez être prudent lors de la conversion en exe.
Recommended Posts