python3 excel读、写、修改操作
python3上Excel文件操作的库比较多,新手一开始不知道如何选择合适的库,故整理如下:
xlwt
: 只能写不能读,只支持python2.3到python2.7版本,只支持xls文件。xlrd
:只能读不能写xlutils
:修改并保存openpyxl
:可以实现对xlsx格式的读、写、修改,支持python3.x。个人推荐这个库
xlrd
# 打开文件
workbook1 = xlrd.open_workbook(user,formatting_info=False)
# 获取所有sheet
print("所有工作表:",workbook1.sheet_names())
sheet1 = workbook1.sheet_by_index(0)
# 获取整行的值
print(sheet1.row_values(0))
# 获取某个单元格的值,行、列下标均从0开始
print(sheet.cell_value(row,line))
xlutils
# 打开文件
workbook1 = xlrd.open_workbook(user,formatting_info=False)
workbook2 = copy(workbook1)
# xlutils 获取 sheet
sheet_new = workbook2.get_sheet(0)
# 单元格更新,行、列均下标均从0开始
sheet_new.write(row,line,'通过')
# 保存
workbook2.save("../testdata/result.xls")
Openpyxl
- 可以实现读、写、修改Excel文件
- 支持的Excel格式:
- xlsx
- xlsm
- xltx
- Xldm
- 不支持老版本Office2003的xls格式的Excel文档
- Tips:cell的row和column都是从1开始
- 例子1:读取和修改已有Excel文件
import openpyxl
filename="../testdata/user.xlsx"
# 1.打开文件
wb = openpyxl.load_workbook(filename,read_only=False)
print(wb.sheetnames)
# 2.选择工作表
ws = wb[wb.sheetnames[0]]
print(ws)
# 3.遍历单元格
for row in ws.rows:
for cell in row:
print(cell.value)
# 4.存储数据
# 方式一:数据可以直接分配到单元格中(可以输入公式)
ws['A1'] = 42
ws.cell(row=1,column=2, value="test")
# 方式二:可以附加行,从第一列开始附加(从最下方空白处,最左开始)(可以输入多行)
ws.append([1, 2, 3])
# 方式三:Python 类型会被自动转换
ws['A3'] = datetime.datetime.now().strftime("%Y-%m-%d")
# 5.保存数据
wb.save('文件名称.xlsx')
- 例子2:创建和保存Excel文件
# 1、导入openpyxl模块
import openpyxl
# 2、创建ExcelBook对象
excelBook = openpyxl.Workbook()
# 3、创建Excel Book 对象时会默认生成一个sheet对象,可通过active获取sheet对象
sheetName = excelBook.active # 获取当前 sheet 对象
# sheet对象.title获取sheet对象名称
print("创建Excel Book 对象时会默认生成sheet名称:" , sheetName.title)
# 4、sheet对象.title修改默认sheet名称
sheetName.title = 'Test'
print("修改后的sheet名称:" , sheetName.title)
# 5、新建sheet对象
# Book对象.creat_sheet(title , index)方法可实现创建sheet功能
# title:非必填参数,sheet名称,默认名称为Sheet
# index:非必填参数,sheet位置,其中0代表第一个位置,1代表第二个位置,默认最后
excelBook.create_sheet('测试') # 新建测试sheet位于最后
参考:
作者:AmyZYX
出处:http://www.cnblogs.com/amyzhu/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://www.cnblogs.com/amyzhu/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。