需要从数据库读取日志生成相应的 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

  基本用法:

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

  效果展示:

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

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

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

 #!/usr/bin/python
#coding: utf-8 from datetime import datetime
import xlsxwriter workbook = xlsxwriter.Workbook('Expenses02.xlsx')
worksheet = workbook.add_worksheet() #设定格式,等号左边格式名称自定义,字典中格式为指定选项
#bold:加粗,num_format:数字格式
bold_format = workbook.add_format({'bold':True})
money_format = workbook.add_format({'num_format':'$#,##0'})
date_format =workbook.add_format({'num_format':'mmmm d yyyy'}) #将二行二列设置宽度为15(从0开始)
worksheet.set_column(1, 1, 15) #用符号标记位置,例如:A列1行
worksheet.write('A1', 'Item', bold_format)
worksheet.write('B1', 'Cost', bold_format)
worksheet.write('C1', 'Cost', bold_format) expenses = (
['Rent', '2016-03-11', 1000],
['Gad', '2016-03-12', 100],
['Food', '2016-03-13', 400],
['Gym', '2016-03-14', 50],
) row = 1
col = 0 for item, date_str, cost in (expenses):
#将数据格式转化为Python datetime.datetime 格式
#之后用write_datetime方法录入日期格式
date = datetime.strptime(date_str, "%Y-%m-%d") #使用write_string方法,指定数据格式写入数据
worksheet.write_string(row, col, item)
worksheet.write_datetime(row, col + 1, date, date_format)
worksheet.write_number(row, col + 2, cost, money_format)
row += 1 worksheet.write(row, 0, 'Total', bold_format)
worksheet.write(row, 1, '=SUM(B2:B5)', money_format) workbook.close()

  效果展示:

  

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

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

 

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

 #!/usr/bin/python
#coding: utf-8 import xlsxwriter workbook = xlsxwriter.Workbook('chart.xlsx')
worksheet = workbook.add_worksheet() #新建图标对象
chart = workbook.add_chart({'type': 'column'}) #向 excel 中写入数据,建立图标时要用到
data = [
[1, 2, 3, 4, 5],
[2, 4, 6, 8, 10],
[3, 6, 9, 12, 15],
] worksheet.write_column('A1', data[0])
worksheet.write_column('B1', data[1])
worksheet.write_column('C1', data[2]) #向图表中添加数据,例如第一行为:将A1~A5的数据转化为图表
chart.add_series({'values': '=Sheet1!$A$1:$A$5'})
chart.add_series({'values': '=Sheet1!$B$1:$B$5'})
chart.add_series({'values': '=Sheet1!$C$1:$C$5'}) #将图标插入表单中
worksheet.insert_chart('A7', chart) 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

用 python 来操作 docx, xlsx 格式文件(一)(使用 xlsxwriter 库操作xlsx格式文件)的更多相关文章

  1. ios学习:AVAudioPlayer播放音乐文件及读取ipod库中的音乐文件

    首先要导入AVFoundation框架及 #import <AVFoundation/AVFoundation.h>头文件 注意:要在真机上调试 下面是ipad上的调试效果 下面是代码,代 ...

  2. ogr ogr2ogr 矢量数据格式转换 ogrinfo 矢量数据图层信息操作 ogr gdal的一部分 gdal 命令行 库操作

  3. mysqli扩展库操作mysql数据库

    配置环境 配置php.ini文件让php支持mysqli扩展库 extension=php_mysqli.dll 建库建表 详见博客 “mysql扩展库操作mysql数据库” 查询数据库 <?p ...

  4. 制作与使用静态链接库(.lib)文件

    (一)制作.lib文件 (1)打开vs,选择“新建项目”,选择“Visual C++“,选择”Win32 控制台应用程序“. (2)点击”确定“,点击”下一步“,设置如下 (3)点击”完成“,然后就可 ...

  5. 用 python 来操作 docx, xlsx 格式文件(二)(使用 docx 库操作 docx 格式文件

    docx 库 文章结构: 一.docx 基本用,创建 docx 文件并添加数据 二.深入理解文本格式(format),并设置所格式属性(attribute) 三.深入理解样式(styles),以及如何 ...

  6. Python常用的数据文件存储的4种格式(txt/json/csv/excel)及操作Excel相关的第三方库(xlrd/xlwt/pandas/openpyxl)(2021最新版)

    序言:保存数据的方式各种各样,最简单的方式是直接保存为文本文件,如TXT.JSON.CSV等,除此之外Excel也是现在比较流行的存储格式,通过这篇文章你也将掌握通过一些第三方库(xlrd/xlwt/ ...

  7. python操作docx文档(转)

    python操作docx文档 关于python操作docx格式文档,我用到了两个python包,一个便是python-docx包,另一个便是python-docx-template;,同时我也用到了很 ...

  8. Python基础笔记系列十一:标准输入输出、文件读写和指针等操作

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 标准输入输出一.输入 在sublime中这个时候需要安装SublimeRE ...

  9. python文件的读写追加等操作

    # encoding:utf-8 # 文件读取操作 fp=open("E:\\file.txt","r",encoding="utf-8" ...

随机推荐

  1. Top K 算法详解

    http://xingyunbaijunwei.blog.163.com/blog/static/7653806720111149318357/ 问题描述         百度面试题:        ...

  2. 【SSH】——spring的控制反转和依赖注入

    spring是一个轻量级的容器框架,主要是为了使企业的开发变得简单.高效.无论是从大小还是开销来讲,他都可以算是轻量级的,也是非侵入性的. 下图是spring的框架示意图,说到spring,就不得不提 ...

  3. CSS3基础选择器

    /*选择器分组:多个选择器使用同一个样式*/ h1,h2,a{ color: blue; } strong{ color: aquamarine; } /*选择器继承:body中未设置样式的会使用继承 ...

  4. SPOJ Distinct Substrings(后缀数组求不同子串个数,好题)

    DISUBSTR - Distinct Substrings no tags  Given a string, we need to find the total number of its dist ...

  5. 关于Maven项目install时出现No compiler is provided in this environment的处理

    关于Maven项目build时出现No compiler is provided in this environment的处理 新配置的Eclipse环境,运行现有项目没问题,一日,从svn上检出了一 ...

  6. 旋转数组 [ LeetCode ]

    原题地址:https://leetcode-cn.com/problems/rotate-array/description/ 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数. ...

  7. Centos7下redis设置密码、开放远程访问权限

    redis的安装与启动可参考前一篇文章:http://www.cnblogs.com/zuidongfeng/p/8032505.html redis安装成功后,默认是没有设置密码的启动redis-c ...

  8. Nginx中的长连接

    在nginx中,对于http1.0与http1.1是支持长连接的 我们知道,http请求是基于TCP协议之上的,那么,当客户端在发起请求前,需要先与服务端建立TCP连接,而每一次的TCP连接是需要三次 ...

  9. CDQ 学习笔记

    CDQ分治 CDQ(陈丹琦)分治是一种特殊的分治方法. 它只能处理非强制在线的问题. CDQ分治在维护一些动态的凸包.半平面交问题也有一定应用,然而本渣渣并不会. CDQ分治基于时间分治,整体二分基于 ...

  10. 【BZOJ】1770 [Usaco2009 Nov]lights 燈

    [算法]高斯消元-异或方程组 [题解]良心简中题意 首先开关顺序没有意义. 然后就是每个点选或不选使得最后得到全部灯开启. 也就是我们需要一种确定的方案,这种方案使每盏灯都是开启的. 异或中1可以完美 ...