• 使用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','合并单元格')       

     

    业精于勤而荒于嬉,勤劳一日,可得一日安眠;勤劳一生,可得幸福一生。因为,我们努力了;因为,天道酬勤。
  • 相关阅读:
    0180 定时器 之 setInterval() :开启定时器,京东倒计时案例,停止定时器,发送短信倒计时案例
    0179 定时器 之 setTimeout() :开启定时器,5秒后关闭广告案例,停止定时器
    json常用的注解
    Base64 编码与解码详解
    API 交互中怎么做好图片验证码?
    CSS中cursor 鼠标指针光标样式(形状)
    本地数据存储解决方案以及cookie的坑
    base64原理浅析
    Web前端十种常用的技术
    FreeMarker网页静态化
  • 原文地址:https://www.cnblogs.com/Mr-choa/p/12540415.html
Copyright © 2020-2023  润新知