Bureautique Python, maîtrisez le fonctionnement d'openpyxl en cinq minutes !

WBOY
Libérer: 2023-04-17 11:49:02
avant
834 Les gens l'ont consulté

Bureautique Python, maîtrisez le fonctionnement d'openpyxl en cinq minutes !

Aujourd'hui, je vais partager avec vous un article sur l'utilisation d'openpyxl pour faire fonctionner Excel.

Avez-vous besoin d'importer diverses données dans Excel ? Vous souhaitez fusionner plusieurs Excel ? Actuellement, il existe de nombreuses bibliothèques permettant à Python de traiter les fichiers Excel, et openpyxl en fait partie avec de meilleures fonctions et performances. Ensuite, je vais vous présenter diverses opérations Excel.

1. Ouvrez un fichier Excel

Créez un nouveau fichier Excel

>>> from openpyxl import Workbook
>>> wb = Workbook()
Copier après la connexion

Ouvrez un fichier Excel existant

>>> from openpyxl import load_workbook
>>> wb2 = load_workbook('test.xlsx')
Copier après la connexion

Lors de l'ouverture d'un fichier volumineux, utilisez le mode lecture seule ou écriture seule selon les besoins pour réduire la consommation de mémoire.

wb = load_workbook(filename='large_file.xlsx', read_only=True)
wb = Workbook(write_only=True)
Copier après la connexion

2. Obtenez et créez des feuilles de calcul

Obtenez la feuille de calcul active actuelle :

>>> ws = wb.active
Copier après la connexion

Créez une nouvelle feuille de calcul :

>>> ws1 = wb.create_sheet("Mysheet") # insert at the end (default)
 # or
 >>> ws2 = wb.create_sheet("Mysheet", 0) # insert at first position
 # or
 >>> ws3 = wb.create_sheet("Mysheet", -1) # insert at the penultimate position
Copier après la connexion

Obtenez la feuille de calcul en utilisant le nom de la feuille de calcul :

>>> ws3 = wb["New Title"]
Copier après la connexion

Obtenez tous les noms des feuilles de calcul :

>>> print(wb.sheetnames)
 ['Sheet2', 'New Title', 'Sheet1']
使用for循环遍历所有的工作表:
 >>> for sheet in wb:
 ... print(sheet.title)
Copier après la connexion

3. Enregistrez

dans le flux pour une utilisation dans le réseau :

>>> from tempfile import NamedTemporaryFile
 >>> from openpyxl import Workbook
 >>> wb = Workbook()
 >>> with NamedTemporaryFile() as tmp:
 wb.save(tmp.name)
 tmp.seek(0)
 stream = tmp.read()
保存到文件:
 >>> wb = Workbook()
 >>> wb.save('balances.xlsx')
保存为模板:
 >>> wb = load_workbook('document.xlsx')
 >>> wb.template = True
 >>> wb.save('document_template.xltx')
Copier après la connexion

4. La position de la cellule

est lue directement comme la clé de la feuille de calcul :

>>> c = ws['A4']
Copier après la connexion

Attribuez une valeur à la cellule :

>>> ws['A4'] = 4
 >>> c.value = 'hello, world'
Copier après la connexion

Multiple les cellules peuvent accéder à une plage de cellules à l'aide de tranches :

>>> cell_range = ws['A1':'C2']
Copier après la connexion

Utiliser le format numérique :

>>> # set date using a Python datetime
 >>> ws['A1'] = datetime.datetime(2010, 7, 21)
 >>>
>>> ws['A1'].number_format
 'yyyy-mm-dd h:mm:ss'
Copier après la connexion

Utiliser des formules :

>>> # add a simple formula
 >>> ws["A1"] = "=SUM(1, 1)"
Copier après la connexion

Lors de la fusion de cellules, toutes les cellules, à l'exception de la cellule en haut à gauche, seront supprimées de la feuille de calcul Supprimer :

>>> ws.merge_cells('A2:D2')
 >>> ws.unmerge_cells('A2:D2')
 >>>
>>> # or equivalently
 >>> ws.merge_cells(start_row=2, start_column=1, end_row=4, end_column=4)
 >>> ws.unmerge_cells(start_row=2, start_column=1, end_row=4, end_column=4)
Copier après la connexion

5 , lignes et colonnes

Vous pouvez spécifier la plage de lignes, de colonnes ou de lignes individuellement :

>>> colC = ws['C']
 >>> col_range = ws['C:D']
 >>> row10 = ws[10]
 >>> row_range = ws[5:10]
Copier après la connexion

Vous pouvez utiliser la méthode Worksheet.iter_rows() pour parcourir les lignes :

>>> for row in ws.iter_rows(min_row=1, max_col=3, max_row=2):
 ...for cell in row:
 ...print(cell)
 <Cell Sheet1.A1>
 <Cell Sheet1.B1>
 <Cell Sheet1.C1>
 <Cell Sheet1.A2>
 <Cell Sheet1.B2>
 <Cell Sheet1.C2>
Copier après la connexion

La même méthode Worksheet.iter_cols() Parcourra les colonnes :

>>> for col in ws.iter_cols(min_row=1, max_col=3, max_row=2):
 ... for cell in col:
 ... print(cell)
 <Cell Sheet1.A1>
 <Cell Sheet1.A2>
 <Cell Sheet1.B1>
 <Cell Sheet1.B2>
 <Cell Sheet1.C1>
 <Cell Sheet1.C2>
Copier après la connexion

Pour parcourir toutes les lignes ou colonnes du fichier, vous pouvez utiliser la propriété Worksheet.rows :

>>> ws = wb.active
 >>> ws['C9'] = 'hello world'
 >>> tuple(ws.rows)
 ((, , ),
 (, , ),
 (, , ),
 (, , ),
 (, , ),
 (, , ),
 (, , ),
 (, , ),
 (, , ))
Copier après la connexion

ou la propriété Worksheet.columns :

>>> tuple(ws.columns)
 ((<Cell Sheet.A1>,
 <Cell Sheet.A2>,
 <Cell Sheet.A3>,
 <Cell Sheet.A4>,
 <Cell Sheet.A5>,
 <Cell Sheet.A6>,
 ...
 <Cell Sheet.B7>,
 <Cell Sheet.B8>,
 <Cell Sheet.B9>),
 (<Cell Sheet.C1>,
 <Cell Sheet.C2>,
 <Cell Sheet.C3>,
 <Cell Sheet.C4>,
 <Cell Sheet.C5>,
 <Cell Sheet.C6>,
 <Cell Sheet.C7>,
 <Cell Sheet.C8>,
 <Cell Sheet.C9>))
Copier après la connexion

Utilisez Worksheet.append() ou itérez à l'aide de Worksheet .cell() pour ajouter Une ligne de données :

>>> for row in range(1, 40):
 ... ws1.append(range(600))
 >>> for row in range(10, 20):
 ... for col in range(27, 54):
 ... _ = ws3.cell(column=col, row=row, value="{0}".format(get_column_letter(col)))
Copier après la connexion

L'opération d'insertion est plus gênante. Vous pouvez utiliser Worksheet.insert_rows() pour insérer une ou plusieurs lignes :

>>> from openpyxl.utils import get_column_letter
 >>> ws.insert_rows(7)
>>> row7 = ws[7]
>>> for col in range(27, 54):
 ... _ = ws3.cell(column=col, row=7, value="{0}".format(get_column_letter(col)))
Worksheet.insert_cols()操作类似。Worksheet.delete_rows()和Worksheet.delete_cols()用来批量删除行和列。
Copier après la connexion

6. Lire uniquement les valeurs

Utilisez la propriété Worksheet.values ​​​​pour parcourir toutes les lignes de la feuille de calcul, mais renvoyer uniquement la cellule value :

for row in ws.values:
for value in row:
print(value)
Copier après la connexion

Worksheet. iter_rows() et Worksheet.iter_cols() peuvent définir le paramètre values_only pour renvoyer uniquement la valeur de la cellule :

>>> for row in ws.iter_rows(min_row=1, max_col=3, max_row=2, values_only=True):
 ... print(row)
 (None, None, None)
(None, None, None)
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:51cto.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!