您的位置:首页 > 编程语言 > Python开发

python_openpyxl_操作excel

2017-10-13 14:39 671 查看

初识与安装

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

安装

?
  

一个简单创建例子

?
打开查看Excel如下:

  


workbook

There is no need to create a file on the filesystem to get started with openpyxl. Just import the Workbook class and start using it.

?
  

worksheet

A workbook至少创建一个worksheet.

通过
openpyxl.workbook.Workbook.active()
得到worksheet.
ws = wb.active

注意:

该方法使用_active_sheet_index属性, 默认会设置0,也就是第一个worksheet。除非手动修改,否则使用active方法得到都是第一个worksheet。

你也可以创建worksheets,通过 
openpyxl.workbook.Workbook.create_sheet()
 方法:

?
创建的sheet的名称会自动创建,按照sheet,sheet1,sheet2自动增长,通过title属性可以修改其名称。
ws.title = "New Title"


默认的sheet的tab是白色的,可以通过 RRGGBB颜色来修改sheet_properties.tabColor属性从而修改sheet tab按钮的颜色:
ws.sheet_properties.tabColor = "1072BA"


当你设置了sheet的名称,可以将其看成workbook中的一个key。也可以使用
openpyxl.workbook.Workbook.get_sheet_by_name()
 方法

 

?
查看workbook中的所有worksheets名称:
openpyxl.workbook.Workbook.get_sheet_names()


?
遍历worksheets:

?
  

操作数据

访问单元格

单元格可以看作是worksheet的key,通过key去访问单元格中的数据

?
直接返回A4单元格,如果不存在则会自动创建一个。

指定单元格的值

?
使用
openpyxl.worksheet.Worksheet.cell()
方法操作某行某列的某个值:

?
注意:

当worksheet在内存中被创建时,是没有包含cells的,cells是在首次访问时创建.
可以循环在内存中创建cells,这时不指定他们的值也会创建该cells些:(创建100x100cells)

?

访问许多cells

通过切片Ranges指定许多cells

?
同样也可以Ranges rows 或者columns :

?
也可以使用 
openpyxl.worksheet.Worksheet.iter_rows()
 方法:(需要指定行->行,截止列)

?
也可以使用 
openpyxl.worksheet.Worksheet.iter_cols()
 方法:(需要指定列->列,截止行)

?
如果你需要遍历所有文件的行或列,可以使用
openpyxl.worksheet.Worksheet.rows()
 属性:

?
或者 
openpyxl.worksheet.Worksheet.columns()
 属性:

?

Saving to a file

最简单最安全的方法保存workbook是使用
openpyxl.workbook.Workbook
对象的 
openpyxl.workbook.Workbook.save()
方法:

?
保存的默认位置在python的根目录下。

注意:会自动覆盖已经存在文件名的文件。

Loading from a file

像写一样我们可以导入
openpyxl.load_workbook()
已经存在的workbook:

?
  

常用实例

详情参考官方使用文档:

http://openpyxl.readthedocs.io/en/default/usage.html

写入例子一

?

写入例子二

?

读取例子一



#!/usr/bin/env python
# -*- coding: utf-8 -*-

from openpyxl.reader.excel import load_workbook
import json

# 读取excel2007文件
wb = load_workbook(filename=r'test_book.xlsx')

# 显示有多少张表
print "Worksheet range(s):", wb.get_named_ranges()
print "Worksheet name(s):", wb.get_sheet_names()

# 取第一张表
sheetnames = wb.get_sheet_names()
ws = wb.get_sheet_by_name(sheetnames[0])

# 显示表名,表行数,表列数
print "Work Sheet Titile:", ws.title
print "Work Sheet Rows:", ws.max_row
print "Work Sheet Cols:", ws.max_column

# 建立存储数据的字典
data_dic = {}

# 把数据存到字典中
for rx in range(1, ws.max_row + 1):
temp_list = []
pid = rx
w1 = ws.cell(row=rx, column=1).value
w2 = ws.cell(row=rx, column=2).value
w3 = ws.cell(row=rx, column=3).value
w4 = ws.cell(row=rx, column=4).value
temp_list = [w1, w2, w3, w4]

data_dic[pid] = temp_list

# 打印字典数据个数
print 'Total:%d' % len(data_dic)
print json.dumps(data_dic, encoding="UTF-8", ensure_ascii=False)


 读取结果:

?
  

使用公式

?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: