Rumah >pembangunan bahagian belakang >Tutorial Python >Automasi pejabat Python, kuasai operasi openpyxl dalam masa lima minit!

Automasi pejabat Python, kuasai operasi openpyxl dalam masa lima minit!

WBOY
WBOYke hadapan
2023-04-17 11:49:02894semak imbas

Automasi pejabat Python, kuasai operasi openpyxl dalam masa lima minit!

Hari ini saya ingin berkongsi dengan anda artikel tentang menggunakan openpyxl untuk mengendalikan Excel.

Perlu mengimport pelbagai data ke dalam Excel? Ingin menggabungkan berbilang Excel? Pada masa ini, terdapat banyak perpustakaan untuk Python memproses fail Excel, dan openpyxl adalah salah satu daripadanya dengan fungsi dan prestasi yang lebih baik. Seterusnya, saya akan memperkenalkan pelbagai operasi Excel kepada anda.

1 Buka fail Excel

Buat fail Excel baharu

>>> from openpyxl import Workbook
>>> wb = Workbook()

Buka fail Excel sedia ada

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

Apabila membuka fail besar, gunakan mod baca sahaja atau tulis sahaja mengikut keperluan untuk mengurangkan penggunaan memori.

wb = load_workbook(filename='large_file.xlsx', read_only=True)
wb = Workbook(write_only=True)

2. Dapatkan dan buat lembaran kerja

Dapatkan lembaran kerja aktif semasa:

>>> ws = wb.active

Buat lembaran kerja baharu:

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

Dapatkan lembaran kerja menggunakan nama lembaran kerja:

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

Dapatkan semua nama lembaran kerja:

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

3 Simpan untuk menstrim dan gunakan dalam rangkaian:

4 Sel

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

Kedudukan sel dibaca terus sebagai kunci lembaran kerja:

<.>Tetapkan nilai pada sel:

>>> c = ws['A4']
Berbilang sel boleh menggunakan penghirisan untuk mengakses julat sel:

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

Gunakan format angka:

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

>>> # set date using a Python datetime
 >>> ws['A1'] = datetime.datetime(2010, 7, 21)
 >>>
>>> ws['A1'].number_format
 'yyyy-mm-dd h:mm:ss'
Apabila menggabungkan sel, semua sel kecuali sel kiri atas akan dipadamkan daripada lembaran kerja:

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

>>> 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)
Anda boleh menentukan julat baris, lajur atau baris secara individu:


Anda boleh menggunakan kaedah Worksheet.iter_rows() untuk melintasi baris:

>>> colC = ws['C']
 >>> col_range = ws['C:D']
 >>> row10 = ws[10]
 >>> row_range = ws[5:10]
Kaedah Worksheet.iter_cols() yang sama akan berulang ke atas lajur:

>>> 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>
Untuk mengulangi semua baris atau lajur fail, anda boleh menggunakan sifat Worksheet.rows:

>>> 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>
atau harta Worksheet.columns:

>>> ws = wb.active
 >>> ws['C9'] = 'hello world'
 >>> tuple(ws.rows)
 ((, , ),
 (, , ),
 (, , ),
 (, , ),
 (, , ),
 (, , ),
 (, , ),
 (, , ),
 (, , ))
Gunakan Worksheet.append() atau gunakan lelaran Worksheet.cell() untuk menambah baris data:

>>> 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>))
Operasi memasukkan lebih menyusahkan. Anda boleh menggunakan Lembaran Kerja.insert_rows() untuk memasukkan satu atau beberapa baris:

>>> 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)))
6 Baca hanya nilai

>>> 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()用来批量删除行和列。
Gunakan harta Lembaran Kerja.values ​​​​untuk. melintasi semua baris dalam lembaran kerja, Tetapi hanya nilai sel dikembalikan:


Worksheet.iter_rows() dan Worksheet.iter_cols() boleh menetapkan parameter values_only untuk mengembalikan nilai sel sahaja:

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

Atas ialah kandungan terperinci Automasi pejabat Python, kuasai operasi openpyxl dalam masa lima minit!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam