vwin手机版vwin手机版


vwin德赢唯一授权官网

python操作excel

简介与安装openpyxl库

Openpyxl is a Python library for reading and writing Excel 2010 xlsx/xlsm/xltx/xltm files.

安装

pip install openpyxl

pillow:在文件中需要使用images (jpeg, png, bmp,...)时,需要安装pillow库。

注意:写操作时请关闭需要操作的excel文件,否则写不成功

加载xlsx操作内容

加载外部excel的xlsx步骤:加载xlsx文件,获得该文件的句柄,为workbook

from openpyxl import load_workbookwb2 = load_workbook("test.xlsx")print wb2.get_sheet_names()# ["Sheet2", "New Title", "Sheet1"]

在内存中新建workbook

创建 workbook

开始使用openpyxl,没有必要在文件系统上创建一个文件。只需要导入Workbook类并开始使用它。可以把wordbook想象成一个excel文件。

from openpyxl import Workbookwb = Workbook()

workbook创建后至少至少要创建一个worksheet。使用openpyxl.workbook.Workbook.active()

ws = wb.active

该方法使用了_active_sheet_index属性, 默认会设置0

创建worksheet

使用openpyxl.workbook.Workbook.create_sheet()创建新的worksheet

ws1 = wb.create_sheet("new_sheet_1") # 新建sheet,插入到最后(默认)ws2 = wb.create_sheet("new_sheet_2", 0) # 插入到最开始的位置

指定worksheet的名称

不指定sheet名称时,按照sheet,sheet1,sheet2自动增长

ws3 = wb.create_sheet()

自定义worksheet名称,通过title属性指定名称,设置了sheet的名称

ws3.title = "new_sheet_3"

输出wb现在所有的sheetname查看通过openpyxl.workbook.Workbook.sheetnames()输出wb现在所有的sheetname

print wb.get_sheet_names()print(wb.sheetnames)

循环

for sheet in wb:print(sheet.title)

指定worksheet tab按钮的颜色

新建的sheet tab颜色为白色,可以另外指定sheet tab按钮的颜色

ws3.sheet_properties.tabColor = "1072BA"

激活某个worksheet

通过worksheet名称激活某个sheet使用名称看成workbook中的一个key

ws3 = wb["new_sheet_3"]

通过_active_sheet_index激活某个sheet使用

wb._active_sheet_index = 1 # 获取第二个sheet

创建worksheet副本

使用openpyxl.workbook.Workbook.copy_worksheet()创建worksheet副本

source = wb.activetarget = wb.copy_worksheet(source)

只能复制cell和style。不能复制工作表之间的工作簿。

操作单元格

当worksheet在内存中被创建时,是没有包含cells的,cells是在首次访问时创建单元格可以看作是worksheet的key,通过key去访问单元格中的数据

c = ws["A3"] # 访问单元格,不存在则会自动创建一个print c.valuews["A4"] = "a4 value" # 指定单元格的值print ws["A4"].valued = ws.cell(row=4, column=2, value="通过cell指定") # 通过row column数字指定print d.value

循环在内存中创建cells

不用指定其值也可以在内存中创建

for i in range(1, 10):for j in range(1, 10):ws.cell(row=i, column=j)

通过切片Ranges指定许多cells

cell_range = ws["A1":"C2"]

也可以Ranges rows 或者columns

print ws["C"]print ws["C:D"]print ws[10]print ws[5:10]

也可以使用iter_rows() 指定行->行,截止列

for row in ws.iter_rows(min_row=1, max_col=3, max_row=2):for c in row:print(c)

iter_cols() 指定列->列,截止行

for row in ws.iter_rows(min_row=1, max_col=3, max_row=2):for c in row:print(c)

遍历所有文件的行或列

ws["C9"] = "hello world"tuple(ws.rows) # 转化成tuple方便for in操作tuple(ws.columns)

保存文件

wb = Workbook()wb.save("assets/sample.xlsx")

此操作将覆盖现有的文件没有警告。

所有的操作都需要保存到excel才能看见

保存为模板

指定属性as_template=True,就可以将文档保存为模板.xltx

wb = load_workbook("document.xlsx")wb.template = Truewb.save("document_template.xltx")

或者将该属性设置为False(默认),另存为一个文档:

wb = load_workbook("document_template.xltx")wb.template = Falsewb.save("document.xlsx", as_template=False)

使用公式

wb = load\_workbook("assets/sample.xlsx")ws = wb.activews["A5"] = "=SUM(2, 1)"wb.save("assets/sample.xlsx")

欢迎阅读本文章: 沈敏

vwin德赢唯一授权官网

vwin德赢唯一授权官网