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

WBOY
Lepaskan: 2023-04-17 11:49:02
ke hadapan
868 orang telah melayarinya

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()
Salin selepas log masuk

Buka fail Excel sedia ada

>>> from openpyxl import load_workbook
>>> wb2 = load_workbook('test.xlsx')
Salin selepas log masuk

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)
Salin selepas log masuk

2. Dapatkan dan buat lembaran kerja

Dapatkan lembaran kerja aktif semasa:

>>> ws = wb.active
Salin selepas log masuk

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
Salin selepas log masuk

Dapatkan lembaran kerja menggunakan nama lembaran kerja:

>>> ws3 = wb["New Title"]
Salin selepas log masuk

Dapatkan semua nama lembaran kerja:

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

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')
Salin selepas log masuk

Kedudukan sel dibaca terus sebagai kunci lembaran kerja:

<. 🎜>Tetapkan nilai pada sel:

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

>>> ws['A4'] = 4
 >>> c.value = 'hello, world'
Salin selepas log masuk

Gunakan format angka:

>>> cell_range = ws['A1':'C2']
Salin selepas log masuk
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'
Salin selepas log masuk
Apabila menggabungkan sel, semua sel kecuali sel kiri atas akan dipadamkan daripada lembaran kerja:

>>> # add a simple formula
 >>> ws["A1"] = "=SUM(1, 1)"
Salin selepas log masuk
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)
Salin selepas log masuk
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]
Salin selepas log masuk
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>
Salin selepas log masuk
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>
Salin selepas log masuk
atau harta Worksheet.columns:

>>> ws = wb.active
 >>> ws['C9'] = 'hello world'
 >>> tuple(ws.rows)
 ((, , ),
 (, , ),
 (, , ),
 (, , ),
 (, , ),
 (, , ),
 (, , ),
 (, , ),
 (, , ))
Salin selepas log masuk
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>))
Salin selepas log masuk
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)))
Salin selepas log masuk
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()用来批量删除行和列。
Salin selepas log masuk
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)
Salin selepas log masuk

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!

Label berkaitan:
sumber:51cto.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan