Python Office Automation - Grundlegende Verwendung von openpyxl!

Einführung in openpyxl

openpyxl ist eine in Python integrierte Bibliothek, die direkt zum Lesen und Schreiben von xlsx-, xlsm-, xltx- und xltm-Dateien verwendet werden kann. Mit ihr können Sie die Python-Syntax verwenden, um Stapeloperationen für lokale xlsx-Dateien zu automatisieren

Lassen Sie mich zuerst über den Installationsteil sprechen. Wenn Sie Anaconda als Python-Umgebung verwenden, kann openpyxl direkt ohne Installation verwendet werden. Wenn Sie es installieren müssen, ist die Methode auch sehr einfach.

pip install openpyxl

xlsx-Dateiattribute

Bevor Sie die Excel-Tabelle verarbeiten können, müssen Sie die Erklärung und Struktur mehrerer Begriffe in der xlsx-Datei verstehen

1. Was bedeutet Arbeitsmappe?

Die Arbeitsmappe wird als Arbeitsmappe bezeichnet, die auf eine XLSX-Datei verweisen kann.

2. Worauf beziehen sich Blatt, Zelle, Zeile und Spalte?

Bezüglich Frage 2 wird auf die folgende Abbildung verwiesen (siehe Hinweis).

Snipaste_2020-09-13_10-08-11.jpg

Openpyxl-Basisbefehlsoperation

1. Erstellen Sie eine leere Arbeitsmappe
from openpypl import Wrokbook
from openpyxl.utils import get_column_letter

wb = Workbook()
ws1 = wb.active

Eine Standardarbeitsmappe, die mindestens ein Arbeitsblatt enthält, den Befehl Workbook.activezum Abrufen des aktuellen ersten Blattes (d. H. Eines ersten Blattes);

2. Erstellen Sie ein neues Arbeitsblatt
ws1 = wb.create_sheet("Mysheet") # insert at the end (default)

ws2 = wb.create_sheet("Mysheet", 0) # insert at first position
# or
ws3 = wb.create_sheet("Mysheet", -1) # insert at the penultimate position

Wenn Sie create_sheet()einen neuen Arbeitsblattbefehl erstellen, gibt es standardmäßig zwei Parameternamen: index;

  • Name, definiert den Namen des Blattes;
  • Index, um die Position zum Einfügen des Blattes festzulegen, ist die Standardeinstellung Keine, dh das neu erstellte Blatt wird am Ende eingefügt. 0 steht für die Position zum Einfügen des ersten Blattes.
3. Ändern Sie den Namen des Blattes

Eine Codezeile

ws.title = 'New Title'
4. Ändern Sie die Hintergrundfarbe der Registerkarte auf dem Blatt
ws.sheet_properties.tabColor = "1072BA"

Durch Ändern von Wroksheet.sheet_properties.tabColorParametern kann hier festgestellt werden, dass nur RRGGBBFarbcode empfangen wurde ;

Für diejenigen, die die Hintergrundfarbe der Registerkarte "Blatt" nicht kennen, lesen Sie bitte die folgende Abbildung.

Snipaste_2020-09-13_10-30-07.jpg

5. Geben Sie die Namen aller Blätter in der Arbeitsmappe zurück

Auf Workbook.sheetnameBefehl zum Anzeigen

>>> print(wb.sheetnames)
['Sheet2', 'New Title', 'Sheet1']

# 或者用迭代方法

>>> for sheet in wb:
...     print(sheet.title)
6. Kopieren Sie die vorhandenen Arbeitsblätter in die neu erstellte Arbeitsmappe

Kann Workbook.copy_worksheet()Methode funktionieren

# 将 source 中的worksheet复制到 target 中去

source = wb.active
target = wb.copy_worksheet(source)

Es ist zu beachten, dass die Arbeitsmappe im schreibgeschützten oder schreibgeschützten Modus nicht kopiert werden kann. Außerdem können nur Zellen (Werte, Stile, Hyperlinks, Kommentare) und bestimmte Arbeitsblattattribute (Dimensionen, Formate, Attribute) verwendet werden kopiert werden und andere Arbeitsmappen / Arbeitsblatteigenschaften können nicht kopiert werden (Bilddiagramme usw.)

7. Holen Sie sich die Daten einer Zelle

Nach dem erfolgreichen Erstellen von Arbeitsmappe und Arbeitsblatt können Sie die Zelle ändern (der Inhalt in der Zelle, Zellen können über die eindeutigen Schlüsselwörter im Arbeitsblatt abgerufen werden

>>> c = ws['A4'] # 获取第4行列名为A 单元格中的值

Ändern Sie es durch Zuweisungsbefehle

ws['A4'] = 4

openpyxl hat eine Funktion Worksheet.cell()zum Ändern der Daten in der Zelle, kann auf bestimmte Zeilen, Spalten spezifische Änderungen ausgerichtet werden,

d = ws.cell(row = 4,columns = 2,value = 10)
  • Zeile repräsentiert die angegebene Zeile
  • Spalten gibt die angegebene Spalte an
  • value gibt den Datenwert an, der in der Zelle ersetzt werden soll. Wenn dieser Parameter nicht festgelegt ist, bedeutet dies, dass nur der Speicherplatz für die Zelle erstellt wird und kein Wert zugewiesen wird

Z.B

>>> for x in range(1,101):
...        for y in range(1,101):
...            ws.cell(row=x, column=y)
8. Holen Sie sich mehrere Zellen

8.1 kann openpyxl auch Schneidvorgänge ausführen, um mehrere Zellen zu erhalten

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

In 8.2 ist die Methode zum Abrufen mehrzeiliger und mehrspaltiger Daten im Arbeitsblatt ähnlich

>>> colC = ws['C']
>>> col_range = ws['C:D']
>>> row10 = ws[10]
>>> row_range = ws[5:10]

8.3, Worksheet.iter_row()um den Zeilen- und Spaltenbereich im Blatt abzurufen, und verwenden Sie dann die Schleifeniteration, um die Daten jeder Zelle abzurufen

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

8.4 kann die Worksheet.iter_cols()gleiche Funktion auch erreicht werden

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

Beachten Sie, dass in der Zeit - read-onlyModus, wobei Worksheet,iter_cols()das Verfahren nicht verwendet werden kann ,

9, nur den Wert in der Zelle anzeigen

9.1, wenn nur das Arbeitsblatt als Wert nach Worksheet.valuesEigenschaft angezeigt wird, wodurch alle Zeilen im Arbeitsblatt durchlaufen werden, jedoch nur Zellenwerte zurückgegeben werden

for row in ws.values:
   for value in row:
     print(value)

9.2 bis Worksheet.iter_rows()und Worksheet.iter_cols()kann durch Hinzufügen eines Parameters in der Funktion erreicht werden values_only = True, um den Wert der Zelle zurückzugeben

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

10. Lesen und Schreiben von Dateivorgängen

10. Laden der Excel-Datei

openpyxl.load_workbook() Funktion zum Öffnen einer lokal gespeicherten XLSX-Datei

>>> from openpyxl import load_workbook
>>> wb2 = load_workbook('test.xlsx')
>>> print wb2.sheetnames
['Sheet2', 'New Title', 'Sheet1']

10.2, Excel-Dateispeicherung

Nachdem die Arbeitsmappe erfolgreich geändert und erstellt wurde, Workbook.save(path)kann sie über den Befehl auf der lokalen Festplatte gespeichert werden

>>> wb = Workbook()
>>> wb.save('balances.xlsx')

Okay, das Obige ist der gesamte Inhalt dieses Artikels, und ich danke Ihnen allen für das Lesen!

Ich denke du magst

Origin blog.csdn.net/weixin_42512684/article/details/108915152
Empfohlen
Rangfolge