openpyxl操作excel

【转】

openpyxl库可以读写xlsx格式的文件,对于xls旧格式的文件只能用xlrd读,xlwt写来完成了。

python有很多模块都是用来操作excel的,比如xlrd,xlwt,pyExcelerator。用着很方便,但是问题是,只能支持到 excel2003。虽然一般的应用其实足够了,但是如果遇到了导出大量数据(超过65535条)的需求时,excel2003就不够用了。所以我就只好 去找一个能支持excel2007的模块,google了一下,发现了这个openpyxl。

 

创建一个工作簿

wb = workbook()

加载已存在excel文件

filePath = "/data/alic/demo.xlsx"
wb = load_workbook(filename=filePath)

选中sheet

# 选择默认的sheet
ws = wb.active

# 通过索引加载sheet index从0开始
ws = wb.worksheets[index]

# 通过sheet名加载 感觉有问题,中文?
ws = wb.get_sheet_by_name()
# 这个没有问题
ws = wb["name"]

创建sheet

#默认插在工作簿末尾
ws = wb.create_sheet() 
# or
# 插入在工作簿的指定位置位置 index从0开始
ws = wb.create_sheet(index)

更改sheet的名字

# 新建默认的话 sheet0 sheet1 ...
ws.title = "hello"

获取sheet的名称

sheet_name = wb.get_sheet_names()
print sheet_name
# or
for sheet in wb:
    print sheet.title

单元格操作

# 获取一个单元格的value
value = ws['B2']
# or
value = ws.cell('B2')
# or 非常推荐 遍历都很方便
value = ws.cell(row=1,column=2)

#获取多个单元格
cells = ws['A1':'E4']

#为一个单元格赋值
 ws['B2'] = "alic"
# or
ws.cell('B2') = "hello"
# or 非常推荐 遍历都很方便
ws.cell(row=1,column=2) = "value"

# 遍历多个单元格
for row in ws.iter_rows('A1:D2'):
      for cell in row: 
            print cell

获取当前工作表的已有数据的对象

# 所有行
ws.rows

# 所有列
ws.columns

获取当前工作表的数据长度与宽度

row_length = len(ws.rows)
cloumn_length = len(ws.columns)
# 推荐 centOS上面的会报错
row-length = len(list(ws.rows))
cloumn_length = len(list(ws.rows))

保存文件

# 注意要是加载进来的路径与保存的路径一致文件将会被覆盖
wb.save(path)

# 也可以将文件作为模板保存  as_template默认为False
wb.save('document_template.xltx', as_template=True)

简单的样式处理

# 文本对齐方式
align = Alignment(horizontal='center', vertical='center')
ws.cell(row=deng_lu_taskRow, column=index + 3).alignment = align

# 字体大小
font = Font(size=10)
ws.cell(row=taskRow, column=column).font = font

 

posted @ 2017-10-19 11:50  悠然现南山  阅读(669)  评论(0编辑  收藏  举报