python-EXCEL处理工具openpyxl快速入门1简介

创建workbook

无需在文件系统上创建文件即可开始使用openpyxl。只需导入Workbook类并开始工作:

>>> from openpyxl import Workbook
>>> wb = Workbook()
>>> ws = wb.active

默认获取第一个工作表, 可以使用Workbook.create_sheet()方法创建新的工作表:

>>> ws1 = wb.create_sheet("Mysheet") # insert at the end (default)
# or
>>> ws2 = wb.create_sheet("Mysheet", 0) # insert at first position
>>> ws.title = "New Title"
>>> ws.sheet_properties.tabColor = "1072BA"
>>> ws3 = wb["New Title"]
>>> print(wb.sheetnames)
['Sheet2', 'New Title', 'Sheet1']
>>> for sheet in wb:
...     print(sheet.title)
>>> for sheet in wb:
...     print(sheet.title)

工作表创建时会自动为其命名。它们按顺序编号(Sheet,Sheet1,Sheet2,...)。可使用Worksheet.title属性更改此名称:

默认情况下,包含此标题的选项卡的背景颜色为白色。您可以更改此项,为Worksheet.sheet_properties.tabColor属性提供RRGGBB颜色代码

仅复制单元格(包括值,样式,超链接和注释)和某些工作表属性(包括维度,格式和属性)。不复制所有其他工作簿/工作表属性 - 例如图片,图表。也无法在工作簿之间复制工作表。如果工作簿以只读或只写模式打开,则无法复制工作表。

访问数据

  • 访问单个单元格
>>> c = ws['A4']
>>> ws['A4'] = 4
>>> d = ws.cell(row=4, column=2, value=10)

在内存中创建工作表时,它不包含单元格。首次访问时会创建它们。

滚动单元格而不是直接访问它们将在内存中创建它们,即使您没有为它们分配值。

比如:

>>> for x in range(1,101):
...        for y in range(1,101):
...            ws.cell(row=x, column=y)

将在内存中创建100x100个单元格,无需任何操作。

  • 访问多个单元格

可以使用切片访问单元格范围:

>>> cell_range = ws['A1':'C2']
>>> colC = ws['C']
>>> col_range = ws['C:D']
>>> row10 = ws[10]
>>> row_range = ws[5:10]
>>> for row in ws.iter_rows(min_row=1, max_col=3, max_row=2):
...    for cell in row:
...        print(cell)







>>> for col in ws.iter_cols(min_row=1, max_col=3, max_row=2):
...     for cell in col:
...         print(cell)







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

>>> tuple(ws.columns)
((,
,
,
,
,
,
...
,
,
),
(,
,
,
,
,
,
,
,
))

出于性能原因,Worksheet.iter_cols()方法在只读模式下不可用。

  • 只访问值

如果只需要工作表中的值,则可以使用Worksheet.values属性。 这会迭代工作表中的所有行,但只返回单元格值:

for row in ws.values:
   for value in row:
     print(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)

Worksheet.iter_rows()和Worksheet.iter_cols()都可以使用values_only参数来返回单元格的值。

参考资料

  • python测试开发项目实战-目录
  • python工具书籍下载-持续更新
  • python 3.7极速入门教程 - 目录
  • 讨论qq群630011153 144081101
  • 原文地址
  • 本文涉及的python测试开发库 谢谢点赞!
  • 本文相关海量书籍下载

数据存储

>>> c.value = 'hello, world'
>>> print(c.value)
'hello, world'

>>> d.value = 3.14
>>> print(d.value)
3.14

>>> wb = Workbook()
>>> wb.save('balances.xlsx')

# 保存为流
>>> 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 = load_workbook('document.xlsx')
>>> wb.template = True
>>> wb.save('document_template.xltx')

>>> wb = load_workbook('document_template.xltx')
>>> wb.template = False
>>> wb.save('document.xlsx', as_template=False)

# 打开文件
>>> from openpyxl import load_workbook
>>> wb2 = load_workbook('test.xlsx')
>>> print wb2.sheetnames
['Sheet2', 'New Title', 'Sheet1']

文件扩展名不是强制为xlsx或xlsm,但如果您不使用官方扩展名,则可能无法直接使用其他应用程序打开它。
由于OOXML文件基本上是ZIP文件,您也可以使用自己喜欢的ZIP存档管理器打开它。

你可能感兴趣的:(python-EXCEL处理工具openpyxl快速入门1简介)