Grundlegende Verwendung von openpyxl

Verwendung von openpyxl

1 Grundstruktur von Excel

Arbeitsmappe: Ein Excel-Arbeitsblattdokument wird als Arbeitsmappe bezeichnet. Eine Arbeitsmappe wird in der Erweiterungsdatei .xlsxgespeichert.

Fügen Sie hier eine Bildbeschreibung ein

Blatt: Eine Arbeitsmappe kann mehrere Blätter enthalten (auch Arbeitsblätter genannt). Die aktuell vom Benutzer angezeigte Tabelle (oder die zuletzt angezeigte Tabelle vor dem Schließen von Excel) wird als aktive Tabelle bezeichnet

Fügen Sie hier eine Bildbeschreibung ein

Zeile: Die Zeile in der Tabelle, die Adresse ist eine Zahl ab 1

Spalte: Die Spalte in der Tabelle, die Adresse ist der Buchstabe ab A.

Zelle: Eine Zelle, eine Zelle, die aus einer bestimmten Zeile und Spalte besteht, wird als Zelle bezeichnet. Jede Zelle enthält eine Zahl oder einen Textwert. Das Gitter und die Daten, die von den Zellen gebildet werden, bilden die Tabelle.

Fügen Sie hier eine Bildbeschreibung ein

2 Installieren Sie das openpyxl-Modul

Python wird nicht mit openpyxl geliefert, daher muss es separat installiert werden, bevor es normal verwendet werden kann.

Öffnen Sie die Befehlszeile und geben Sie unter Windows Folgendes ein:

pip install openpyxl

Öffnen Sie das Terminal unter Mac und geben Sie Folgendes ein:

pip3 install openpyxl

Wenn Sie testen möchten, ob die Installation korrekt ist, können Sie in einer interaktiven Umgebung den folgenden Code eingeben:

import openpyxl

Wenn das Modul korrekt installiert ist, wird nach dem Ausführen keine Fehlermeldung zurückgegeben

Link zum offiziellen Openpyxl-Dokument:

https://openpyxl.readthedocs.io/en/stable/index.html

3 Lesen Sie eine vorhandene Excel-Tabelle

Fügen Sie hier eine Bildbeschreibung ein

Einfaches Beispiel

from openpyxl import load_workbook
# fileName 这里是指文件路径
fileName = "工作簿.xlsx"
# 以只读模式打开工作簿
wb = load_workbook(filename = fileName,read_only = True)
# sheetName 就是 sheet页的名称
sheetName = "Sheet1"
# 通过 工作表名 获取 工作表
ws = wb[sheetName]
# 按行读取 工作表的内容
for row in ws.rows:
    for cell in row:
        # 输出 单元格中的数据
        print(cell.value)

3.1 Arbeitsmappenobjekte abrufen

Nach dem Import des openpyxl-Moduls können Sie die Excel-Datei mit der Methode load_workbook () lesen. Die Methode openpyxl.load_workbook () gibt ein Arbeitsmappenobjekt zurück (auch ein Wert des Arbeitsmappendatentyps). Zur Vereinfachung der späteren Verwendung benennen wir dieses Objekt normalerweise wb.

Hinweis: Die Methode load_workbook () kann nur eine vorhandene Excel-Tabellendatei lesen und keine neue Excel-Tabelle erstellen.

import openpyxl

wb = openpyxl.load_workbook(filename, read_only=False, keep_vba=False, data_only=False, keep_links=True)

Die Methode openpyxl.load_workbook () kann mehrere Parameter zum Lesen von Einstellungen empfangen

Dateiname: Zeichenfolgentyp, der Dateipfad zum Lesen der Excel-Datei. Sie können einen relativen oder einen absoluten Pfad verwenden.

read_only: Boolescher Typ, schreibgeschützten Modus oder schreibgeschützten Modus auswählen, schreibgeschützten Modus auswählen, um die Abfragegeschwindigkeit zu verbessern. Der Standardwert ist False.

keep_vba: Boolescher Typ, vba-Inhalt beibehalten (dies bedeutet nicht, dass Sie ihn verwenden können), der Standardwert ist False.

data_only: Boolescher Typ. Wenn auf True gesetzt, zeigt die Zelle mit der Formel das neueste Berechnungsergebnis an oder Keine. Wenn auf False gesetzt, zeigt die Zelle die Formel an. Der Standardwert ist False. Hinweis: Öffnen Sie mit data_only = False und speichern Sie schließlich mit der Funktion save (). Die ursprüngliche xlsx-Datei enthält nur die Formel data_only = False. Wenn Sie die Formel und das Ergebnis abrufen möchten, müssen Sie die Datei mit Excel öffnen und speichern.

keep_links: Boolescher Typ, ob Links zu externen Arbeitsmappen beibehalten werden sollen. Der Standardwert ist True.

3.2 Arbeitsblattobjekt abrufen

3.2.1 Alle Arbeitsblätter in der Arbeitsmappe abrufen

Rufen Sie die Methode get_sheet_names () oder das Attribut sheetnames auf, um alle Blattnamen in der Arbeitsmappe abzurufen und als Liste zurückzugeben.

from openpyxl import load_workbook
# fileName 这里是指文件路径
fileName = "工作簿.xlsx"
# 以只读模式打开工作簿
wb = load_workbook(filename = fileName,read_only = True)
# 获取工作簿中所有的工作表,返回一个列表对象
wb.get_sheet_names()
wb.sheetnames

3.2.2 Wählen Sie das zu bedienende Arbeitsblatt aus

Jedes Arbeitsblatt wird durch ein Arbeitsblattobjekt dargestellt, das über einen wörterbuchartigen Schlüssel oder eine Methode abgerufen werden kann. Schließlich können Sie die aktive Tabelle auch über wb.active abrufen (die letzte Tabelle, die vor dem Schließen von Excel angezeigt wurde).

# 通过工作表名称去的工作表
sheet = wb.get_sheet_by_name('工作表名称')
sheet = wb['工作表名称']

# 获取工作簿中的活动表
sheet = wb.active
# 获取活动表的表名称
sheet.title

3.2.3 Holen Sie sich einige Attribute in die Tabelle

# 获取表格的大小(表格存在数据的大小)
sheet.dimensions
# 单独获取最大行或列
sheet.max_row or sheet.max_column
# 设置表格为隐藏状态
sheet.sheet_state = 'hidden'
# 设置表格为显示状态
sheet.sheet_state = 'visible'

3.3 Holen Sie sich das Zellenobjekt

3.3.1 Holen Sie sich das Zellenobjekt

Mit dem Tabellenobjekt können Sie das Zellenobjekt entsprechend den Koordinaten oder der Anzahl der Zeilen und Spalten abrufen

# 通过固定的行列坐标获取单元格对象
cell = sheet['A1']
# 通过数字的行列获取单元格对象
cell = sheet.cell(row=1,column=1)
# 为单元格赋值
cell.value = 'A1'

3.3.3 Einige Attribute einer Zelle abrufen

# 获取单元格的行
cell.row
# 获取单元格的列
cell.column
# 获取单元格的坐标
cell.coordinate

3.3.4 Nehmen Sie eine Zeile oder Spalte mit Zellen und geben Sie ein Tupelobjekt zurück

Sie können das Tabellenobjekt in Scheiben schneiden, um alle Zellenobjekte in einer Zeile, einer Spalte oder einem rechteckigen Bereich in der Tabelle abzurufen. Dann können Sie alle Zellen im Slice durch Schleifen erhalten.

# 取一列单元格
cells = sheet['A']
# 取一行单元格
cells = sheet[1]
# 取表格当中的所有列,一列为一组
cells = sheet.columns
# 取表格当中的所有行,一行为一组
cells = sheet.rows
# 已知单元格矩形范围坐标时
cells = sheet['A1:C5']
# 已知单元格起始与终结的行列数时
cells = sheet.iter_cols(min_row=1, max_row=5, min_col=1, max_col=3)
cells = sheet.iter_rows(min_row=1, max_row=5, min_col=1, max_col=3)

4 Erstellen Sie eine neue Excel-Tabelle

4.1 Erstellen Sie eine neue Tabelle

Um eine neue Excel-Tabelle zu erstellen, müssen Sie die openpyxl.Workbook () -Methode verwenden. Tatsächlich ruft die Workbook-Methode die mit openpyxl gelieferte Excel-Vorlagendatei auf.

Wenn Sie den Inhalt in der Excel-Tabelle ändern, wird die Tabellenkalkulationsdatei erst dann automatisch gespeichert, wenn Sie die Arbeitsmappenmethode save () verwenden.

import openpyxl
# 打开一个工作簿,由于是创建一个新的,所以不需要添加路径参数
wb = openpyxl.Workbook(encodin='utf-8')
# 获取活动表
ws = wb.active
# 修改活动表明湖曾
ws.title = 'test1'
# 修改 A1 单元格数据
ws['A1'] = 'A1'
# 查看当前所有表格名称
wb.get_sheet_names()
# 保存Excel文件
wb.save('test1.xlsx')

4.2 Einige Operationen an Tabellenobjekten

4.2.1 Tabelle erstellen

Die Methode create_sheet () gibt ein neues Blattobjekt mit dem Namen SheetX zurück, das standardmäßig das letzte Blatt der Arbeitsmappe verwendet. Sie können auch die Index- und Titelparameter verwenden, um den Index und den Namen des neuen Arbeitsblatts anzugeben

# 使用工作簿对象创建一个新的表格,表格名称为test2
wb.create_sheet(index=None,title='test2')

index: Integer-Typ, legen Sie den Index des neuen Arbeitsblatts fest, der Standardwert ist None und setzen Sie ihn am Ende. Wenn er auf 0 gesetzt ist, wird die Tabelle oben platziert.

title: Zeichenfolgentyp, legen Sie den Namen des neuen Arbeitsblatts fest. Wenn der neue Arbeitsblattname bereits vorhanden ist, wird der neue Arbeitsblattname automatisch zu title1.

4.2.2 Tabelle löschen

Die remove () -Methode empfängt ein Tabellenobjekt anstelle einer Zeichenfolge des Tabellennamens.

wb = openpyxl.load_workbook('test.xlsx')
# 使用工作簿对象删除表格
wb.remove(wb['test2'])
wb.save('test.xlsx')

4.2.3 Tabelle kopieren

Die Methode copy_worksheet () empfängt ein Tabellenobjekt und kopiert es und fügt es ein

wb = openpyxl.load_workbook('test.xlsx')
sheet = wb.active
# 复制选中表格
wb.copy_worksheet(sheet)
wb.save('test.xlsx')

4.2.4 Einfügen und Löschen von Zeilen und Spalten in die Tabelle

Fügen Sie Zeilen und Spalten ein

wb = openpyxl.load_workbook('test.xlsx')
sheet = wb.active

# 插入行
# 在idx行上方插入数量为amount的行
sheet.insert_rows(idx=2, amout=2)

# 插入列
# 在idx列左侧插入数量为amount的行
sheet.insert_cols(idx=2, amout=2)

wb.save('test.xlsx')

Löschen Sie Zeilen und Spalten

wb = openpyxl.load_workbook('test.xlsx')
sheet = wb.active

# 删除行
# 从idx行开始向下删除amount数量的行,包括idx这一行
sheet.delete_rows(idx=2, amout=2)

# 删除列
# 从idx列开始向右删除amount数量的列,包括idx这一列
sheet.delete_cols(idx=2, amout=2)

wb.save('test.xlsx')

4.2.5 Daten zur Tabelle hinzufügen

Das Hinzufügen neuer Daten bedeutet das Hinzufügen von Daten zu einer vorhandenen Tabelle. Sie können nur die Methode load_workbook () verwenden, um die Excel-Tabelle zu lesen.

Die Methode append () akzeptiert einen variablen Parameter, einschließlich, aber nicht beschränkt auf eine Liste, einen Bereich, einen Generator oder ein Wörterbuch

Wenn Sie eine Liste übergeben: Fügen Sie alle Werte in der Reihenfolge der ersten Spalte hinzu. Das Listenelement entspricht jeder Zeile

Wenn ein Wörterbuch übergeben wird: Der Wert wird der durch den Schlüssel (Zahl oder Buchstabe) angegebenen Spalte zugewiesen.

Hinweis: Beim Anhängen kann jeweils nur eine Datenzeile hinzugefügt werden. Wenn Sie mehrere Zeilen hinzufügen möchten, müssen Sie diese mit Schleifen oder anderen Methoden kombinieren.

wb = openpyxl.load_workbook('test.xlsx')
sheet = wb.active
# 在当前工作表数据的底部追加一组值
sheet.append(iterable)
# 追加数据
sheet.append([1,2,3])
sheet.append({
    
    'A':'这是A1'})

4.3 Einige Operationen an Zellen

4.3.1 Zellendaten ändern und Formel definieren

wb = openpyxl.load_workbook('test.xlsx')
sheet = wb.active
cell = sheet['A1']
# 修改单元格数据
cell.value = 'A1'
# 在单元格中添加公式
cell.value = '=SUM(A2:C4)'
wb.save('test.xlsx')

# 查看openpyxl支持的公式
from openpyxl.utils import FORMULAE
FORMULAE

4.3.2 Zellen verschieben

Verwenden Sie die Methode move_range (), um Zellen zu verschieben

sheet.move_range(cell_range, rows=0, cols=0, translate=False)

wb = openpyxl.load_workbook('test.xlsx')
sheet = wb.active

# 将A1:C2范围的单元格,向下移动一行,向右移动2列
sheet.move_range('A1:C2', rows=1, cols=2)

4.3.3 Einfrierfenster

Bei Excel-Tabellen mit zu vielen Daten, um auf einem Bildschirm angezeigt zu werden, ist das Einfrieren der erforderlichen Zeilen oder Spalten sehr hilfreich.

Mit der Eigenschaft freeze_panes können Sie eine Zeichenfolge von Zellkoordinaten festlegen, um die Zeilen und Spalten über und links von den Zellkoordinaten einzufrieren. Die Zeilen und Spalten, in denen sich die Zelle selbst befindet, werden jedoch nicht eingefroren.

# 冻结行1
sheet.freeze_panes = 'A2'
# 冻结列A
sheet.freeze_panes = 'B1'
# 冻结列A和列B,行1
sheet.freeze_panes = 'C2'
# 不会冻结窗格
sheet.freeze_panes = 'A1'

5 Änderung des Zellstils

Durch Festlegen des Schriftstils bestimmter Zellenzeilen oder -spalten können Sie wichtige Bereiche in der Tabelle hervorheben.

Hier müssen Sie die Methode Font () in openpyxl.styles verwenden

Hinweis: Sobald eine Instanz der folgenden Stile (Schriftart, Füllung, Rahmen, Position usw.) erstellt wurde, können die Eigenschaften der Instanz nicht mehr geändert und die Instanz nur neu erstellt werden.

5.1 Holen Sie sich den Zellenschriftstil

import openpyxl
wb = openpyxl.load_workbook('test.xlsx')
sheet = wb.active
cell = sheet['A1']
# 获取单元格字体所有属性
cell.font
# 获取字体对象
font = cell.font
# 获取字体名称
font.name
# 获取字体大小
font.size
# 字体是否加粗
font.bold
# 字体是否为斜体
font.italic

5.2 Legen Sie den Zellenschriftstil fest

Die Font () -Methode kann den Schriftstil der Zelle festlegen. Im Folgenden werden einige häufig verwendete Parametereinstellungen aufgeführt

# 导入需要的方法
from openpyxl.styles import Font
from openpyxl import load_workbook
# 加载一个Excel电子表格
wb = load_workbook('test.xlsx')
sheet = wb.active
cell = sheet['A1']
cell.value = 'CSDN'

# 设置一个字体风格,宋体,字号20,加粗,斜体,颜色为红色
font = Font(name='宋体',size=20, bold=True,italic=True,color='FF0000')
# 设置选中单元格的字体风格
cell.font = font
wb.save('test.xlsx')

name: string type, geben Sie den einzustellenden Schriftnamen ein.

size: positiver Integer-Typ, stellen Sie die Schriftgröße ein.

fett: Boolescher Typ, True bedeutet fett.

kursiv: Boolescher Typ, True bedeutet kursiv.

color: string type, geben Sie die hexadezimale Farbnummer (HEX) ein, z. B.'FFFFFF 'für Weiß.

5.3 Festlegen der Klassifizierung des Zellenformats

Sie können die Klassifizierung des Zellenformats festlegen, indem Sie den Zellenstil festlegen

# 设置单元格分类为百分比
cell.style = '百分比'
cell.style = '常规'

# 常规单元格
cell.number_format = 'General'
# 百分比单元格
cell.number_format = '0.00%'
# 科学计数法
cell.number_format = '0.00E+00'

Das von openpyxl unterstützte Zellenformat von Excel

https://openpyxl.readthedocs.io/en/stable/_modules/openpyxl/styles/numbers.html?highlight=openpyxl.styles.numbers

5.4 Einstellung des Zellenausrichtungsformats

# 导入所需模块
from openpyxl.styles import Alignment
# 设置单元格对齐样式
alignment = Alignment(horizontal='center', vertical='center', wrap_text=True)

# 应用样式
cell.alignment = alignment

In Alignment können mehrere Parameter übergeben werden:

horizontal: Zeichenfolgentyp, horizontale Ausrichtung, entsprechend dem Ausrichtungsformat der Excel-Unterstützung

"general", "left", "center", "right", "fill", "justify", "centerContinuous",
    "distributed"

vertikal: Zeichenfolgentyp, vertikale Ausrichtung, entsprechend dem Ausrichtungsformat der Excel-Unterstützung

 "top", "center", "bottom", "justify", "distributed",

wrap_text: Boolescher Typ, legt fest, ob automatisch umbrochen werden soll

textRotation: Integer-Typ, stellen Sie den Textdrehwinkel ein, der Maximalwert ist 180

Offizieller Dokumentlink:

https://openpyxl.readthedocs.io/en/latest/_modules/openpyxl/styles/alignment.html

5.5 Stellen Sie den Farbfüllstil ein

5.5.1 Reine Farbfüllung

# 导入所需模块
from openpyxl.styles import PatternFill
# 设置颜色填充样式
pattern_fill = PatternFill(fill_type='solid',fgColor='00B0F0')

# 应用样式
cell.fill = pattern_fill

fill_type: Zeichenfolgentyp, legen Sie den Füllstil fest, der häufig verwendete ist solid

fgColor: Zeichenfolgentyp, Eingabe der hexadezimalen HEX-Farbfarbe

Hinweis: Im offiziellen Dokument wird angegeben, dass die nachfolgenden Parameter ungültig sind, wenn fill_type nicht angegeben ist

5.5.2 Farbverlaufsfüllung

# 导入所需模块
from openpyxl.styles import GradientFill
# 设置颜色填充样式
gradient_fill = GradientFill(stop=('FFFFFF', '99CCFF', '000000'))

# 应用样式
cell.fill = gradient_fill

stop: Übergeben Sie ein Tupel von der Startfarbnummer bis zur Endfarbnummer, die ebenfalls im hexadezimalen HEX-Format vorliegt

5.6 Rahmenstil festlegen

# 导入所需模块
from openpyxl.styles import Side, Border
# 设置边框线样式
side = Side(style='thin', color='000000')
border = Border(left=side, right=side, top=side, bottom=side)

Seite stellen Sie das spezifische Grenzlinienformat ein

Stil: Eingehendes Format, Stile sind wie folgt

‘dashDot’,‘dashDotDot’,‘dashed’,‘dotted’,‘double’,
‘hair’,‘medium’,‘mediumDashDot’,‘mediumDashDotDot’,
‘mediumDashed’,‘slantDashDot’,‘thick’,‘thin’

Farbe: HEX-Farbnummer

Rahmen Legen Sie den Bereich der Grenzlinienanwendung fest. Die am häufigsten verwendeten sind oben, unten, links und rechts

ll = gradient_fill


stop:传入一个元组,从起始颜色色号至终止颜色色号,同样是十六进制HEX的格式

### 5.6 设置边框样式

```python
# 导入所需模块
from openpyxl.styles import Side, Border
# 设置边框线样式
side = Side(style='thin', color='000000')
border = Border(left=side, right=side, top=side, bottom=side)

Seite stellen Sie das spezifische Grenzlinienformat ein

Stil: Eingehendes Format, Stile sind wie folgt

‘dashDot’,‘dashDotDot’,‘dashed’,‘dotted’,‘double’,
‘hair’,‘medium’,‘mediumDashDot’,‘mediumDashDotDot’,
‘mediumDashed’,‘slantDashDot’,‘thick’,‘thin’

Farbe: HEX-Farbnummer

Rahmen Legen Sie den Bereich der Grenzlinienanwendung fest. Die am häufigsten verwendeten sind oben, unten, links und rechts

Ich denke du magst

Origin blog.csdn.net/weixin_45609519/article/details/107933694
Empfohlen
Rangfolge