Maison  >  Article  >  développement back-end  >  Bureautique Python, maîtrisez le fonctionnement d'openpyxl en cinq minutes !

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

WBOY
WBOYavant
2023-04-17 11:49:02797parcourir

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()

Ouvrez un fichier Excel existant

>>> from openpyxl import load_workbook
>>> wb2 = load_workbook('test.xlsx')

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)

2. Obtenez et créez des feuilles de calcul

Obtenez la feuille de calcul active actuelle :

>>> ws = wb.active

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

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

>>> ws3 = wb["New Title"]

Obtenez tous les noms des feuilles de calcul :

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

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')

4. La position de la cellule

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

>>> c = ws['A4']

Attribuez une valeur à la cellule :

>>> ws['A4'] = 4
 >>> c.value = 'hello, world'

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

>>> cell_range = ws['A1':'C2']

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'

Utiliser des formules :

>>> # add a simple formula
 >>> ws["A1"] = "=SUM(1, 1)"

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)

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]

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>

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>

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)
 ((, , ),
 (, , ),
 (, , ),
 (, , ),
 (, , ),
 (, , ),
 (, , ),
 (, , ),
 (, , ))

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>))

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)))

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()用来批量删除行和列。

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)

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)

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer