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

Posted mr-choa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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,合并单元格)       

 

以上是关于使用xlsxwriter模块和xlrd模块操作Excel表格的主要内容,如果未能解决你的问题,请参考以下文章

实现对Excel的操作

Excel操作之写操作---基于xlsxwriter模块

python中的xlrd和xlwt模块

python里面的xlrd模块详解

Python中xlrd和xlwt模块使用方法

Python----模块