使用xlsxwriter模块和xlrd模块操作Excel表格

1、xlsxwriter模块介绍:主要用来生成excel表格,插入数据、插入图标等表格操作

如下代码:目的是往demo01.xlsx插入数据和图片

# 导入xlsxwriter模块:主要用来修改表格的数据
import xlsxwriter
target_xlsx="D:/360Downloads/Software/py/demo01.xlsx"
# 创建工作簿
workbook=xlsxwriter.Workbook(target_xlsx)
# 创建工作表
worksheet=workbook.add_worksheet()
# 设置工作簿的格式
font=workbook.add_format({"font_size": 14})
# 设置工作表的列宽
worksheet.set_column=("A:A",20)
# 写值
worksheet.write(0,0,"Hello",font)
# 写值
worksheet.write(0,1,"World",font)
# 写值
worksheet.write(2,0, "123",font)
# 写值
worksheet.write(3, 0, "123.456", font)
# 插入一张照片
worksheet.insert_image("B5", "D:/360Downloads/1.jpg")
# 关闭工作簿
workbook.close()

结果:

或者如下代码:

# 导入xlsxwriter模块
import xlsxwriter
# 目标文件
target_xlsx="D:/360Downloads/test01.xlsx"
# 创建工作簿
workbook=xlsxwriter.Workbook(target_xlsx)
# 创建名叫person的工作表
worksheet=workbook.add_worksheet("person")
# 设置工作簿的格式
font=workbook.add_format({"font_size": 14})
# 设置工作表的列宽
worksheet.set_column=("A:A",20)
# 设置表头
headings=["number","name","age"]
# 自己造的数据
data=[
    [1,2,3],
    ["Mr_choa","Mr_lai","Mr_z"],
    [24,14,48]
]
# 表头按行写入数据
worksheet.write_row(0,0,headings)
#造的数据按列写入数据
worksheet.write_column("A2",data[0])
worksheet.write_column("B2",data[1])
worksheet.write_column('C2',data[2])
# 关闭文件流,要注意关闭Excel表格,不然报错
workbook.close()

打开test01.xlsx,结果:

 运行代码,如果有xlsxwriter.exceptions.FileCreateError: [Errno 13] Permission denied: 'D:/360Downloads/test01.xlsx'错误,关闭test01.xlsx表格再运行就不会报错。

在xlsxwriter模块中设置单元格的格式:

无论是

workfomat=workbook.add_format(
    {
        # 字体加粗
        'bold':True,
        # 单元格边框宽度
        'border':1,
        # 字体对齐方式
        'align':'center',
        # 单元格背景颜色
        'fg_color':'#F4B084',
        # 字体大小
        'font_size':14
    }
)

或是通过创建fomat对象:

# 创建一个workfomat对象
workfomat=workbook.add_format()
# 字体加粗
workfomat.set_bold(True)
# 设置边框宽度
workfomat.set_border(1)
# 对齐方式:中心对齐
workfomat.set_align('center')
# 设置背景颜色
workfomat.fg_color('blue')
# 设置背景颜色
workfomat.bg_color('red')

 2、xlrd模块介绍:xlrd就是读Excel表

如下代码:目的在读取两个源文件的数据,再写入另外一个表格中

# 导入xlrd模块:读取源文件的数据
import xlrd
# 导入xlsxwriter模块:修改表格的数据
import xlsxwriter
# 源文件
source_xls = ["D:/360Downloads/1.xlsx", "D:/360Downloads/2.xlsx"]
# 目标文件
target_xls = "D:/360Downloads/3.xlsx"
# 从源文件中读取数据
data = []
for i in source_xls:
    wb = xlrd.open_workbook(i)
    for sheet in wb.sheets():
        for rownum in range(sheet.nrows):
            data.append(sheet.row_values(rownum))
print(data)
# 创建工作簿写入数据
workbook = xlsxwriter.Workbook(target_xls)
# 创建工作表
worksheet = workbook.add_worksheet()
# 设置工作簿的格式
font = workbook.add_format({"font_size":14})
# 写入数据,遍历工作表的数据个数
for i in range(len(data)):
    # 遍历工作表数据的长度
    for j in range(len(data[i])):
        # 写入数据
        worksheet.write(i, j, data[i][j], font)
# 添加数据
worksheet.write(4,0,"haha",font)
# 关闭文件流,要注意关闭Excel表格,不然报错
workbook.close()

源文件1.xlsx:

 源文件2.xlsx:

 结果得到3.xlsx:

 3、在excel中插入折线图

在表格中插入数据,并且插入折线图。

# 导入xlsxwriter模块
import xlsxwriter
# 目标文件
target_xlsx="D:/360Downloads/test01.xlsx"
# 创建工作簿
workbook=xlsxwriter.Workbook(target_xlsx)
# 创建名叫person的工作表
worksheet=workbook.add_worksheet("person")
# 设置工作簿的格式
font=workbook.add_format({"font_size": 14})
# 设置工作表的列宽
worksheet.set_column=("A:A",20)
# 设置表头
headings=["name","testA","testB"]
# 自己造的数据
data=[
    ["Mr_choa","Mr_lai","Mr_z",'Mr_r',"Mr_d"],
    [90,80,70,87,56],
    [100,50,40,45,68]
]
# 表头按行写入数据
worksheet.write_row(0,0,headings)
#造的数据按列写入数据
worksheet.write_column("A2",data[0])
worksheet.write_column("B2",data[1])
worksheet.write_column('C2',data[2])
# 创建折线图
workchart=workbook.add_chart({'type':'line'})
# 给图表设置格式
workchart.add_series(
    {
        # 折线名称
        'name':'=person!$B$1',
        'categories':'=person!$A$2:$A$6',
        # 折线的值
        'values':'=person!$B$2:$B$6',
        # 折线颜色
        'line':{'color':'red'}
    }
)
workchart.add_series(
    {
        # 折线名称
        'name':'=person!$C$1',
        'categories':'=person!$A$2:$A$6',
        # 折线的值
        'values':'=person!$C$2:$C$6',
        # 折线的颜色
        'line':{'color':'blue'}
    }
)
# 设置图表的表头
workchart.set_title({'name':'测试'})
workchart.set_x_axis({'name':'x轴'})
workchart.set_y_axis({'name':'y轴'})
# 设置图表样式类型
workchart.set_style(1)
# 设置图表的位置
worksheet.insert_chart('A10',workchart,{'x_offset':25,'y_offset':10})
# 关闭文件流,要注意关闭Excel表格,不然报错
workbook.close()

结果:

 4、图表的type

area:面积图

bar:直方图

column:柱形图

line:折线图

pie:饼图

doughnut:环形图

scatter:散点图

stock:股票趋势图

rader:雷达图

5、表格的一些操作(合并单元格)

#合并单元格
worksheet.merge_range('D1:D7','合并单元格')       

猜你喜欢

转载自www.cnblogs.com/Mr-choa/p/12540415.html