Python操作Excel可以使用xlwt,xlrd。
安装:pip3 install xlwt==1.2.0 pip3 install xlrd==1.2.0 等号后边表示版本
先看看测试所使用的Excel的内容以及分页
如上图,三个sheet。好了,废话少说,翠花,上酸菜。
一、读取Excel数据
# -*- coding: utf-8 -*-
import xlrd
# 打开
#data = xlrd.open_workbook('./主线纪念活动数据表.xlsx')
# 报错 xlrd.biffh.XLRDError: Excel xlsx file; not supported
# 解决:安装老版本 pip3 install xlrd==1.2.0
data = xlrd.open_workbook('./主线纪念活动数据表.xlsx')
# 获取sheets,返回sheet的list
print('sheets: ', str(data.sheet_names()))
# 获取其中一张sheet
sheet_data = data.sheet_by_name(data.sheet_names()[0])
print('sheet_data:', sheet_data)
sheet_data1 = data.sheet_by_index(0)
print('sheet_data1:', sheet_data1)
# sheet的行数与列数
print('sheet_info:', sheet_data.nrows, sheet_data.ncols)
# sheet行打印,列打印
print('sheet_row_value:', sheet_data.row_values(0))
print('sheet_col_value:', sheet_data.col_values(0))
# sheet中单元格的值
print('space_value:', sheet_data.cell(1, 3).value)
# 遍历
for row in range(0, sheet_data.nrows) :
print('values:', sheet_data.row_values(row))
结果输出:
C:\Users\zhanglu11\Desktop>py -3 excel.py
sheets: ['结构-数据', '阵容-数据', '副本-数据']
sheet_data: <xlrd.sheet.Sheet object at 0x0000025671C57100>
sheet_data1: <xlrd.sheet.Sheet object at 0x0000025671C57100>
sheet_info: 2 7
sheet_row_value: ['是否屏蔽', '编号', 'up阵容编号', '副本-材料编号', '副本-挑战编号', '挑战开启日期', '活动界面编号']
sheet_col_value: ['是否屏蔽', 0.0]
space_value: 1,2,3
values: ['是否屏蔽', '编号', 'up阵容编号', '副本-材料编号', '副本-挑战编号', '挑战开启日期', '活动界面编号']
values: [0.0, 1.0, 1.0, '1,2,3', 1.0, '2020,10,4,7,0,0', 247.0]
二、写入Excel数据
# 写入
import xlwt
import xlrd
data = xlwt.Workbook(encoding='gbk')
sheet = data.add_sheet('test') # 新建sheet
sheet.write(0, 0, '0,0') # 0行0列写入 '0,0'
sheet.write(0, 1, '0,1') # 0行1列写入 '0,1'
data.save('xxx.xlsx')
代码执行完毕,创建出来了xxx.xlsx的文件,但是文件打不开,打开时候报错:
好家伙,这是个什么玩意儿???
解决方案,修改文件后缀名,将data.save('xxx.xlsx') 修改为 data.save('xxx.xls') 就可以打开了。
三、可以读,可以写,但是怎么读写同一个文件呢?这时候使用xlutils.copy库,然后save文件的时候,替换要写入文件名字。
# 打开并且写入
import xlrd
from xlutils.copy import copy
data = xlrd.open_workbook('./xxx2.xls')
new_data = copy(data)
sheet = new_data.get_sheet(0)
sheet.write(0, 7, 'test2')
new_data.save('xxx2.xls')
执行结果一切正常,打开Excel:
四、好激动啊,如此简单吗?来来来,鸡蛋里挑挑骨头,挑哪呢,嗯,它不好看!!!
# 不好看
import xlwt
import xlrd
from xlutils.copy import copy
data = xlrd.open_workbook('./xxx2.xls')
new_data = copy(data)
sheet = new_data.get_sheet(0)
# 设置显示颜色等
pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
pattern.pattern_fore_colour = 5
style = xlwt.XFStyle()
style.pattern = pattern
sheet.write(0, 7, 'test2', style)
sheet.col(0).width = 256*20 # 256为宽度单位 20表示20个字符
sheet.write(3, 0, xlwt.Formula('HYPERLINK("https://blog.youkuaiyun.com/zhanglu_1024?spm=1001.2101.3001.5343";"最精彩的博客在哪里")'))
new_data.save('xxx2.xls')
结果如图: