• 用 python 来操作 docx, xlsx 格式文件(一)(使用 xlsxwriter 库操作xlsx格式文件)


    需要从数据库读取日志生成相应的 docx,xlsx 文件做相应的记录

    所以自然要用到docx, xlsxwriter 库

    但是这些库的应用场景非常广泛,任何需要对 word,excel 文件执行重复性操作的工作,都可以使用 python 来帮我们完成

    xlsxwriter 库

    文章结构

      一、xlsxwriter 基本用法,创建 xlsx 文件并添加数据

      二、xlsxwriter 格式处理,将待添加数据转换成相应的格式,添加到 xlsx 文件中

      三、xlsxwriter 添加表格,在 xlsx 文件中添加表格

      四、深入理解格式(Format Class),并运用

    一、xlsxwriter 基本用法,创建 xlsx 文件并添加数据

       官方文档:http://xlsxwriter.readthedocs.org/  

      xlsxwriter 可以操作 xls 格式文件

      注意:xlsxwriter 只能创建新文件,不可以修改原有文件。如果创建新文件时与原有文件同名,则会覆盖原有文件

      Linux 下安装: sudo pip install XlsxWriter

      Windows 下安装: pip install XlsxWriter

      基本用法:

     1 #!/usr/bin/python
     2 #coding: utf-8
     3 
     4 import xlsxwriter
     5 
     6 #创建一个新的xlsx文件(如果原有同名文件会被覆盖)
     7 workbook = xlsxwriter.Workbook("Expenses01.xlsx")
     8 
     9 #创建一个新的表单,默认名称为 “sheet1”,输入字符参数可指定名称
    10 worksheet = workbook.add_worksheet()
    11 
    12 expenses = (
    13     ['Rent', 1000],
    14     ['Gas' ,  100],
    15     ['Food',  300],
    16     ['Gym' ,   50],
    17 )
    18 
    19 #worksheet 默认是从0行、0列开始计数
    20 row = 0
    21 col = 0
    22 
    23 #worksheet.write 方法将数据写入 xlsx 表格中
    24 #参数依次为:行号、列号、数据、[格式]
    25 for item, cost in (expenses):
    26     worksheet.write(row, col ,    item)
    27     worksheet.write(row, col + 1, cost)
    28     row += 1
    29 
    30 #显式关闭workbook,若不显式指定,则作用域结束后自动关闭
    31 workbook.close()

       效果展示:

    二、xlsxwriter 格式处理,将待添加数据转换成相应的格式,添加到 xlsx 文件中

      先设置格式,使用方法:workbook.add_format

      再指定格式写入,使用方法:worksheet.write_string

     1 #!/usr/bin/python
     2 #coding: utf-8
     3 
     4 from datetime import datetime
     5 import xlsxwriter
     6 
     7 workbook = xlsxwriter.Workbook('Expenses02.xlsx')
     8 worksheet = workbook.add_worksheet()
     9 
    10 #设定格式,等号左边格式名称自定义,字典中格式为指定选项
    11 #bold:加粗,num_format:数字格式
    12 bold_format = workbook.add_format({'bold':True})
    13 money_format = workbook.add_format({'num_format':'$#,##0'})
    14 date_format =workbook.add_format({'num_format':'mmmm d yyyy'})
    15 
    16 #将二行二列设置宽度为15(从0开始)
    17 worksheet.set_column(1, 1, 15)
    18 
    19 #用符号标记位置,例如:A列1行
    20 worksheet.write('A1', 'Item', bold_format)
    21 worksheet.write('B1', 'Cost', bold_format)
    22 worksheet.write('C1', 'Cost', bold_format)
    23 
    24 expenses = (
    25     ['Rent', '2016-03-11', 1000],
    26     ['Gad',  '2016-03-12',  100],
    27     ['Food', '2016-03-13', 400],
    28     ['Gym',  '2016-03-14',  50],
    29 )
    30 
    31 row = 1
    32 col = 0
    33 
    34 for item, date_str, cost in (expenses):
    35     #将数据格式转化为Python datetime.datetime 格式
    36     #之后用write_datetime方法录入日期格式
    37     date = datetime.strptime(date_str, "%Y-%m-%d")
    38 
    39     #使用write_string方法,指定数据格式写入数据
    40     worksheet.write_string(row, col,     item)
    41     worksheet.write_datetime(row, col + 1, date,  date_format)
    42     worksheet.write_number(row, col + 2, cost, money_format)
    43     row += 1
    44 
    45 worksheet.write(row, 0, 'Total',       bold_format)
    46 worksheet.write(row, 1, '=SUM(B2:B5)', money_format)
    47 
    48 workbook.close()

      效果展示:

      

      写入日期格式时,指定对象要是 Python 的 datetime.datetime 格式

      使用 workbook.add_format 绑定时,可以指定如下格式

     

     三、xlsxwriter 添加表格,在 xlsx 文件中添加表格

     1 #!/usr/bin/python
     2 #coding: utf-8
     3 
     4 import xlsxwriter
     5 
     6 workbook = xlsxwriter.Workbook('chart.xlsx')
     7 worksheet = workbook.add_worksheet()
     8 
     9 #新建图标对象
    10 chart = workbook.add_chart({'type': 'column'})
    11 
    12 #向 excel 中写入数据,建立图标时要用到
    13 data = [
    14     [1, 2, 3, 4, 5],
    15     [2, 4, 6, 8, 10],
    16     [3, 6, 9, 12, 15],
    17 ]
    18 
    19 worksheet.write_column('A1', data[0])
    20 worksheet.write_column('B1', data[1])
    21 worksheet.write_column('C1', data[2])
    22 
    23 #向图表中添加数据,例如第一行为:将A1~A5的数据转化为图表
    24 chart.add_series({'values': '=Sheet1!$A$1:$A$5'})
    25 chart.add_series({'values': '=Sheet1!$B$1:$B$5'})
    26 chart.add_series({'values': '=Sheet1!$C$1:$C$5'})
    27 
    28 #将图标插入表单中
    29 worksheet.insert_chart('A7', chart)
    30 
    31 workbook.close()

      效果展示:

    四、更多可用的单元格式对象(Format Class)

      ecxel 中每一个单元,都有如下属性:字体(fonts)、颜色(colors)、模式(patterns)、边界(borders)、alignment、number formatting

      设置属性:

    format = workbook.add_format()
    
    #用对象接口设置格式属性
    format.set_bold()
    format.set_font_color('red')
    
    #用字典设置格式属性
    property = {
        'bold': True,
        'font_color': 'red'
    }
    format = workbook.add_format(property)

      更多相关参见:http://xlsxwriter.readthedocs.org/format.html

  • 相关阅读:
    java 类加载与初始化
    字符串匹配
    二分查找
    一般css样式开头公共部分
    js或jquery实现图片轮播
    w3chtml页面和css书写规范
    前端学习网站
    相关学习网站
    char对比varchar
    用抽象类或者接口?
  • 原文地址:https://www.cnblogs.com/ontheway703/p/5264517.html
Copyright © 2020-2023  润新知