Récemment, un livre intitulé "Excel X Python Fastest Work Technique" a été vendu fin décembre 2019 et a remporté la première place dans le classement des livres du calcul de table d'Amazon. C'est incroyable parce qu'il se vend mieux que le manuel le plus puissant d'Excel! (La catégorie tabulaire est une catégorie assez populaire) Lien Amazon
Le cœur de ce livre est que ** faire quelque chose comme VBA de Python à Excel ** est la technique de travail la plus rapide. Cette fois, pour mon propre apprentissage, je vais vous présenter comment utiliser les classeurs Excel à partir de Python appris dans ce livre et faire des choses de type VBA.
Ce livre utilise systématiquement une bibliothèque appelée ** openpyxl ** pour faire fonctionner Excel.
import openpyxl
lwb = openpyxl.Workbook()
lsh = lwb.active #Charger la feuille pour écrire dans la cellule
import openpyxl
wb = openpyxl.load_workbook('nom de fichier.xlsx')
import openpyxl
wb = openpyxl.load_workbook('nom de fichier.xlsx')
wb.save(filename = 'sample_book.xlsx')
import openpyxl
lwb = openpyxl.Workbook()
lsh = lwb.active #Charger la feuille pour écrire dans la cellule
lsh.cell(Nombre de lignes,Le nombre de colonnes).value = "hogehoge"
Je posterai le code de la source Lien source
from datetime import date
from openpyxl import Workbook
from openpyxl.chart import (
LineChart,
Reference,
)
from openpyxl.chart.axis import DateAxis
wb = Workbook()
ws = wb.active
rows = [
['Date', 'Batch 1', 'Batch 2', 'Batch 3'],
[date(2015,9, 1), 40, 30, 25],
[date(2015,9, 2), 40, 25, 30],
[date(2015,9, 3), 50, 30, 45],
[date(2015,9, 4), 30, 25, 40],
[date(2015,9, 5), 25, 35, 30],
[date(2015,9, 6), 20, 40, 35],
]
for row in rows:
ws.append(row)
c1 = LineChart()
c1.title = "Line Chart"
c1.style = 13
c1.y_axis.title = 'Size'
c1.x_axis.title = 'Test Number'
data = Reference(ws, min_col=2, min_row=1, max_col=4, max_row=7)
c1.add_data(data, titles_from_data=True)
# Style the lines
s1 = c1.series[0]
s1.marker.symbol = "triangle"
s1.marker.graphicalProperties.solidFill = "FF0000" # Marker filling
s1.marker.graphicalProperties.line.solidFill = "FF0000" # Marker outline
s1.graphicalProperties.line.noFill = True
s2 = c1.series[1]
s2.graphicalProperties.line.solidFill = "00AAAA"
s2.graphicalProperties.line.dashStyle = "sysDot"
s2.graphicalProperties.line.width = 100050 # width in EMUs
s2 = c1.series[2]
s2.smooth = True # Make the line smooth
ws.add_chart(c1, "A10")
from copy import deepcopy
stacked = deepcopy(c1)
stacked.grouping = "stacked"
stacked.title = "Stacked Line Chart"
ws.add_chart(stacked, "A27")
percent_stacked = deepcopy(c1)
percent_stacked.grouping = "percentStacked"
percent_stacked.title = "Percent Stacked Line Chart"
ws.add_chart(percent_stacked, "A44")
# Chart with date axis
c2 = LineChart()
c2.title = "Date Axis"
c2.style = 12
c2.y_axis.title = "Size"
c2.y_axis.crossAx = 500
c2.x_axis = DateAxis(crossAx=100)
c2.x_axis.number_format = 'd-mmm'
c2.x_axis.majorTimeUnit = "days"
c2.x_axis.title = "Date"
c2.add_data(data, titles_from_data=True)
dates = Reference(ws, min_col=1, min_row=2, max_row=7)
c2.set_categories(dates)
ws.add_chart(c2, "A61")
wb.save("line.xlsx")
import openpyxl
import pathlib
path = pathlib.Path('Nom du répertoire/')
for path_obj in path.iterdir():
wb = openpyxl.load_workbook('nom de fichier.xlsx')
for sh in wb:
#Opération pour chaque feuille
--2019 / 12/30 nouvellement créé
Recommended Posts