Comme il existe de nombreuses fonctions et qu'il est plus facile de les lister plus tard, elles sont répertoriées. Ce n'est pas tout car c'est uniquement celui que j'ai utilisé moi-même. Veuillez consulter Officiel pour plus de détails.
Faites un livre et faites une feuille. Après cela, on suppose que cela est fait.
python
import openpyxl
book = openpyxl.Workbook()
sheet = book.active
python
sheet.name = "Asseoir"
python
try:
book.save("book.xlsx")
except exception as e:
#Erreur d'autorisation lors de l'ouverture d'Excel. Il peut y en avoir d'autres.
finally:
book.close()
python
import csv
with open("file.csv", "r") as f:
for l in csv.reader(f):
sheet.append(l)
Cet exemple concerne la traction vers la circonférence extérieure de la cellule. Les spécifications de cellule (num_row, num_column) sont des nombres R1C1 (identiques ci-dessous)
python
from openpyxl.styles.borders import Side
border = openpyxl.styles.borders.Border()
border.top = Side(style='hair', color='000000')
border.bottom = Side(style='thin', color='ff0000')
border.left = Side(style='thick', color='00ff00')
border.right = Side(style='medium', color='0000ff')
sheet.cell(row=num_row, column=num_column).border = border
la couleur est une valeur RVB hexadécimale courante.
Si vous souhaitez conserver la bordure existante et ne modifier qu'une partie
python
border = copy(sheet.cell(row=num_row, column=num_col).border)
Après avoir obtenu l'état de la ligne réglée actuelle avec ceci, changez-le avec celui ci-dessus.
python
font = openpyxl.styles.fonts.Font()
font.name = 'Nom de la police'
font.size = 10
font.color = 'deadbeef'
#Cellule spécifique
sheet.cell(row=num_row, column=num_col).font = font
#Toute la plage de valeur saisie
for r in sheet:
for c in r:
sheet[c.coordinate].font = font
la couleur est abrégée ci-dessous en hexadécimal.
Il semble qu'il ne puisse pas être utilisé car il s'agit d'une fonction interne d'Excel qui s'ajuste automatiquement. Il semble que la seule façon de faire ressembler cela est de calculer à partir du contenu de la colonne.
python
column = openpyxl.utils.get_column_letter(num_column)
length = len(sheet.cell(row=num_row, column=num_column)
sheet.column_dimensions[column].width = length * 1.5
Lors de l'impression de la première ligne comme titre à imprimer, l'orientation du papier comme horizontale, le nombre de pages horizontales comme 1 et le nombre de pages verticales comme non spécifié.
python
sheet.print_title_rows = '1:1' #Imprimer la ligne de titre
sheet.page_setup.orientation = 'landscape' #Verticale'portrait'
sheet.page_setup.fitToWidth = 1
sheet.page_setup.fitToHeight = 0
sheet.sheet_properties.pageSetUpPr.fitToPage = True
Dans le cas du remplissage, il existe bien sûr d'autres motifs.
paint_cell.py
from openpyxl.styles.fills import (PatternFill, FILL_SOLID)
fill = PatternFill(fgColor='aabbcc', patternType=FILL_SOLID)
sheet.cell(row=num_row, column=num_column).fill = fill
fgColor est un nombre hexadécimal (ry)
Dans le cas du fond et du centrage.
python
align = openpyxl.styles.Alignment()
align.horizontal = 'center'
align.vertical = 'bottom'
sheet.cell(row=num_row, column=num_column).alignment = align
Notez que la spécification de cellule est la plage de données à laquelle le filtre s'applique. La spécification de cellule dans ce cas est au format A1.
python
sheet.auto_filter.ref = "B2:D10"
C'est à ce moment que vous souhaitez obtenir le numéro de colonne de R1C1.
column_number.py
num_column = openpyxl.utils.column_index_from_string('D')