Python脚本实现execl表格处理
用Python处理execl表格还是非常方便的,对于工作中处理大量数据来说简直就是神一般的助手,尤其对于一些测试工作而言。
首先要安装python环境,这里就不细说了,百度上很多,反正最后在命令行中运行python,能够打印出版本等信息就说明安装好了。代码中头部引用(import)的包如果本地没有需要安装一下,命令:pip3 install 包名
完成代码如下:
import os
import xlrd
import xlwt
from xlwt.BIFFRecords import BlankRecord
from xlwt.Workbook import Workbook
import xlsxwriter
#读取execl文件
def read_execl():
# 打开文件
workbook = xlrd.open_workbook(r'E:\\Test\\python\\test.xls')
# 获取所有sheet
print(workbook.sheet_names())
sheet2_name = workbook.sheet_names()[1]
# sheet的名称,行数,列数
sheet2 = workbook.sheet_by_index(1)
print(sheet2.name , sheet2.nrows , sheet2.ncols)
# 获取整行和整列的值(数组)
rows = sheet2.row_values(2)
cols = sheet2.col_values(1)
print(rows)
print(cols)
# 获取单元格内容
print(sheet2.cell(1,0).value)
print(sheet2.cell_value(1,0))
print(sheet2.row(1)[0].value)
# 获取单元格数据的数据类型
print(sheet2.cell(1,0).ctype)
#设置文字样式
def set_style(name, height, bold=False):
# 初始化样式
style = xlwt.XFStyle()
# 为样式创建字体
font = xlwt.Font()
font.name = name
font.bold = bold
font.colour_index = 0
font.height = height
style.font = font
return style
#写execl文件
def write_execl():
# 创建工作薄
f = xlwt.Workbook()
# 创建一个sheet
sheet1 = f.add_sheet(u'test', cell_overwrite_ok=True)
row0 = [u'姓名', u'年龄', u'性别']
col0 = [u'张三', u'李四', u'Tom']
# 生成第一行
for i in range(0, len(row0)):
sheet1.write(0, i, row0[i], set_style('宋体', 220, True))
# 生成第一列
for i in range(1, len(col0) + 1):
sheet1.write(i, 0, col0[i - 1], set_style('宋体', 220))
sheet1.write(1, 1, 25, set_style('Times New Roman', 220))
sheet1.write(2, 1, 16, set_style('Times New Roman', 220))
sheet1.write(3, 1, 19, set_style('Times New Roman', 220))
sheet1.write(1, 2, '男', set_style('宋体', 220))
sheet1.write(2, 2, '男', set_style('宋体', 220))
sheet1.write(3, 2, '女', set_style('宋体', 220))
f.save('E:\\Test\\python\\test_write.xls')
#用excel表格中的数据画折线图
def draw_execl():
# 创建一个折线图
workbook = xlsxwriter.Workbook("E:\\Test\\python\\test_draw.xls")
worksheet = workbook.add_worksheet()
chart_cal = workbook.add_chart({'type': 'line'})
bold = workbook.add_format({'bold': 1})
row0 = [u'功率', u'包数']
data = [[80,79,78,77,76,75,74,73,72,71,70,69,68,67,66,65,64,63,62,61,60,59,58],
[90,80,70,60,75,86,92,45,75,53,87,35,86,32,68,75,45,54,24,78,87,53,38]]
worksheet.write_row('A1', row0, bold)
worksheet.write_column('A2', data[0])
worksheet.write_column('B2', data[1])
# 配置第一个系列数据
chart_cal.add_series({
# 这里的sheet1是默认的值,因为我们在新建sheet时没有指定sheet名
# 如果我们新建sheet时设置了sheet名,这里就要设置成相应的值
'name': '=Sheet1!$A$1',
'categories': '=Sheet1!$A$2:$A$24',
'values': '=Sheet1!$B$2:$B$24',
'line': {'color': 'red'}
})
# 设置图表的title和x y轴信息
chart_cal.set_title({'name': '功率收包数表'})
chart_cal.set_x_axis({'name': 'Power'})
chart_cal.set_y_axis({'name': 'Package'})
# 设置图标的风格
chart_cal.set_style(1)
# 把图标插入到当前execl中
worksheet.insert_chart('A30', chart_cal, {'x_offset': 60, 'y_offset': 30})
workbook.close()
#调用函数,函数之间是没有关系的,只是各个功能的测试示例
read_execl()
write_execl()
draw_execl()