5分钟掌握openpyxl操作,Python办公软件自动化实例
原创超级无敌干货,先送到!超级无与伦比的干货,首发!
作者:Sinchard
来源:python中文社区
大家好,我是菜鸟兄弟。大家好,我是菜鸟兄弟。大家好,我是菜鸟兄弟。大家好,我是菜鸟兄弟。
今天,我想和大家分享一篇文章,用openpyxl操作Excel的文章。
各种数据需要导入各种数据需要导入各种数据Excel?多个Excel要合并吗?就目前而言。Python处理Excel有很多文档库,所以有很多文档库。有许多文档库。openpyxl就功能和性能而言,它是较好的产品之一。接下来,我将向您介绍各种Excel操作。
打开Excel文件
新建一个Excel文件
>>> from openpyxl import Workbook
>>> wb = Workbook()
打开现有Excel文件
>>> from openpyxl import load_workbook
>>> wb2 = load_workbook(test.xlsx)
根据需要,使用只读或只写模式可减少打开大文件时的内存消耗。
wb = load_workbook(filename=large_file.xlsx, read_only=True)
wb = Workbook(write_only=True)
获取、创建工作表获取、创建工作表获取、创建工作表
获取当前活动工作表。获取当前活动工作表。获取当前活动工作表。
>>> ws = wb.active
创建新的工作表。若要创建新工作表,请执行以下操作。创建新工作表。正在创建新工作表。
>>> 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
使用工作表名称获取工作表。
>>> ws3 = wb["New Title"]
获取所有工作表名称。获取所有工作表名称。获取所有工作表名称。获取所有图纸名称。
>>> print(wb.sheetnames)
[Sheet2, New Title, Sheet1]
使用for循环访问所有工作表。循环遍历所有工作表。循环遍历所有工作表。
>>> for sheet in wb:
... print(sheet.title)
保存
保存为流,以便在网络中使用。保存为流,以便在网络中使用。保存为流,以便在网络中使用。保存为流,以便在网络上使用。
>>> 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)
单元格
单元格位置直接作为工作表键读取。
>>> c = ws[A4]
为单元格赋值。为单元格赋值。为单元格赋值。为单元格赋值。
>>> ws[A4] = 4
>>> c.value = hello, world
多个单元格多于一个单元格 可以使用切片访问单元格区域。可以使用切片访问单元格区域。可以使用切片来访问单元格区域。可以使用切片:访问单元格区域。
>>> cell_range = ws[A1:C2]
使用值格式。使用数字格式。使用值格式。使用数字格式。
>>> # set date using a Python datetime
>>> ws[A1] = datetime.datetime(2010, 7, 21)
>>>
>>> ws[A1].number_format
yyyy-mm-dd h:mm:ss
使用公式。使用公式。使用公式。
>>> # add a simple formula
>>> ws["A1"] = "=SUM(1, 1)"
合并单元格时,将从工作表中删除除左上角单元格以外的所有单元格。
>>> 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)
行、列
行、列或等级的范围可以单独指定。
>>> colC = ws[C]
>>> col_range = ws[C:D]
>>> row10 = ws[10]
>>> row_range = ws[5:10]
可以使用 Worksheet.iter_rows()
方法遍历行。方法遍历行。方法遍历线。
>>> for row in ws.iter_rows(min_row=1, max_col=3, max_row=2):
... for cell in row:
... print(cell)
| | | | | |
同样的 Worksheet.iter_cols()
方法将遍历该列。方法将遍历列。方法将循环访问该列。方法将循环访问列。
>>> for col in ws.iter_cols(min_row=1, max_col=3, max_row=2):
... for cell in col:
... print(cell)
| | | | | |
若要循环访问文件的所有行或列,可以使用 Worksheet.rows
属性:
>>> ws = wb.active
>>> ws[C9] = hello world
>>> tuple(ws.rows)
((, , ),
(, , ),
(, , ),
(, , ),
(, , ),
(, , ),
(, , ),
(, , ),
(, , )) | | | | | | | | | | | | | | | | | | | | | | | | | | |
或 Worksheet.columns
属性:
>>> tuple(ws.columns)
((,
,
,
,
,
,
...
,
,
),
(,
,
,
,
,
,
,
,
)) | | | | | | | | | | | | | | | | | |
使用 Worksheet.append()
或迭代使用或迭代使用 Worksheet.cell()
添加新的数据行。添加新的数据行。添加新数据行以添加新数据行。
>>> 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)))
插入操作很麻烦。您可以使用 Worksheet.insert_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()
用于批量删除行和列。用于批量删除行和列。用于批量删除行和列。用于批量删除行和列。
只读取值
使用 Worksheet.values
属性循环访问工作表的所有行,但只返回单元格值。
for row in ws.values:
for value in row:
print(value)
Worksheet.iter_rows()
和 Worksheet.iter_cols()
可以设置 values_only
参数只返回单元格的值。参数只返回单元格的值。参数只返回单元格值。
>>> 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)
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除