Python office automation, master openpyxl operation in five minutes!

WBOY
Release: 2023-04-17 11:49:02
forward
834 people have browsed it

Python office automation, master openpyxl operation in five minutes!

Today I will share with you an article about using openpyxl to operate Excel.

Need to import various data into Excel? Want to merge multiple Excels? Currently, there are many libraries for Python to process Excel files, and openpyxl is one of them with better functions and performance. Next, I will introduce various Excel operations to you.

1. Open Excel file

Create a new Excel file

>>> from openpyxl import Workbook
>>> wb = Workbook()
Copy after login

Open an existing Excel file

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

When opening a large file , use read-only or write-only mode according to needs to reduce memory consumption.

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

2. Get and create worksheet

Get the current active worksheet:

>>> ws = wb.active
Copy after login

Create a new worksheet:

>>> 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
Copy after login

Get the worksheet using the worksheet name:

>>> ws3 = wb["New Title"]
Copy after login

Get all the worksheet names:

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

3. Save

Save to the stream in the network Use:

>>> 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')
Copy after login

4, cell

The cell position is used as the key of the worksheet to read directly:

>>> c = ws['A4']
Copy after login

Assign value to the cell:

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

Multiple cells can use slicing to access the cell range:

>>> cell_range = ws['A1':'C2']
Copy after login

Use numerical format:

>>> # set date using a Python datetime
 >>> ws['A1'] = datetime.datetime(2010, 7, 21)
 >>>
>>> ws['A1'].number_format
 'yyyy-mm-dd h:mm:ss'
Copy after login

Use formula:

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

When merging cells , except the upper left corner cell, all cells will be deleted from the worksheet:

>>> 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)
Copy after login

5, rows, columns

You can specify rows, columns, or ranges of rows and columns individually :

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

You can use the Worksheet.iter_rows() method to iterate over the rows:

>>> 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>
Copy after login

The same Worksheet.iter_cols() method will iterate over the columns:

>>> 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>
Copy after login

Iterate over all rows of the file or columns, you can use the Worksheet.rows property:

>>> ws = wb.active
 >>> ws['C9'] = 'hello world'
 >>> tuple(ws.rows)
 ((, , ),
 (, , ),
 (, , ),
 (, , ),
 (, , ),
 (, , ),
 (, , ),
 (, , ),
 (, , ))
Copy after login

or the Worksheet.columns property:

>>> 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>))
Copy after login

Use Worksheet.append() or iteratively use Worksheet.cell() to add a row of data:

>>> 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)))
Copy after login

The insertion operation is more troublesome. You can use Worksheet.insert_rows() to insert one or several rows:

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

6. Read only the values

Use the Worksheet.values ​​property to traverse all rows in the worksheet, but only Return the cell value:

for row in ws.values:
for value in row:
print(value)
Copy after login

Worksheet.iter_rows() and Worksheet.iter_cols() can set the values_only parameter to return only the cell value:

>>> 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)
Copy after login

The above is the detailed content of Python office automation, master openpyxl operation in five minutes!. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:51cto.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!