Lors du développement d'un système, j'ai souvent l'occasion d'écrire un document écrit sous Excel. Dans certains cas, il est rarement nécessaire de créer un grand nombre de fichiers avec presque le même contenu que celui indiqué ci-dessous.
Manuel de procédure d'achat Yahyakuya.xlsx
Manuel de procédure d'achat de la poissonnerie.
Les deux ci-dessus sont exactement les mêmes que le magasin que vous allez acheter, à l'exception de ce que vous achetez.
Dans un tel cas, il existe une méthode pour "créer un manuel de procédure d'achat Yahyakuya puis créer une version de la poissonnerie par remplacement de chaîne de caractères", mais dans certains cas, cela ne peut pas être réalisé avec la mauvaise fonction de remplacement d'Excel, donc un remplacement manuel pleurant ( Je pense qu'il existe de nombreux cas où la soi-disant main sed) est effectuée.
Par conséquent, openpyxl qui lit et écrit des fichiers xlsx à partir de Python et le moteur de modèle typique de Python jinja2 J'ai essayé d'utiliser / docs / dev /) pour générer le texte dans un fichier Excel avec un modèle.
https://gist.github.com/kokumura/c44970102e1f33685152
python
pyxl.py [Nom de fichier xlsx contenant le modèle jinja] [Nom du fichier de sortie] [Variable de modèle(YAML)]
En faisant cela, toutes les cellules de toutes les feuilles contenues dans le fichier xlsx d'origine seront analysées, le modèle jinja2 sera développé s'il est inclus et le résultat sera envoyé dans un autre fichier.
Tout d'abord, préparez le fichier modèle suivant à l'aide d'Excel. La grammaire est jinja2 elle-même.
template.xlsx
Décrivez les variables utilisées dans le modèle en YAML.
yasai.yml
---
place:Yahyakuya
targets:
- name:Mandarine
num: 3
- name:pomme
num: 2
- name:Carottes
num: 1
sakana.yml
---
place:Poissonnerie
targets:
- name:Sanma
num: 2
- name:Le calamar
num: 1
- name:Poulpe
num: 1
En exécutant ce qui suit, "Yahyakuya shopping procedure manual.xlsx" et "Fish shop shopping procedure manual.xlsx" seront générés à partir des fichiers template.xlsx et YAML. Je suis heureux.
python xljj.py template.xlsx Yahyakuya Manuel de procédure d'achat.xlsx yasai.yml
python xljj.py template.procédure d'achat xlsx fish shop.xlsx sakana.yml
openpyxl est étonnamment polyvalent, et si vous faites de votre mieux, vous pouvez changer le style et ainsi de suite. Cependant, la documentation n'est pas très complète, vous devrez donc parfois être prêt à appeler des fonctionnalités ou des méthodes privées qui ne sont pas spécifiées dans la documentation.
Vous trouverez ci-dessous une fonction qui effectue automatiquement une autre tâche courante: "Ouvrez un fichier Excel, sélectionnez la cellule" A1 "sur toutes les feuilles, passez à la première feuille, puis enregistrez."
from openpyxl import load_workbook
import openpyxl.worksheet.views
def select_a1(workbook_path):
wb = load_workbook(workbook_path)
wb._active_sheet_index = 0
for ws in wb.worksheets:
ws.sheet_view.selection = (openpyxl.worksheet.views.Selection(),)
wb.save(workbook_path)
Recommended Posts