本文实例讲述了python实现的生成word文档功能。分享给大家供大家参考,具体如下:

每月1次的测试费用报销,需要做一个文档。干脆花点时间写个程序吧。

# -*- coding: utf-8 -*-

from tools import get_data

from docx import Document

def new_doc(fee_data,doc_path,fee):#新建一个word文档,写入汇总表的数据

document = Document()

p_total = document.add_paragraph()

r_total = p_total.add_run(u'测试订单费用汇总表:')

r_total.font.bold = True

table = document.add_table(1,5,style="Light List Accent 5")

heading_cells = table.rows[0].cells

heading_cells[0].text = u'序号'

heading_cells[1].text = u'订单号'

heading_cells[2].text = u'订单总额'

heading_cells[3].text = u'运费'

heading_cells[4].text = u'实付金额'

total = 0

for i in range(0,len(fee_data)):

cells = table.add_row().cells

cells[0].text = str(i+1)

cells[1].text = str(fee_data[i][0])

cells[2].text = str(float(fee_data[i][1])/100)

cells[3].text = str(float(fee_data[i][2])/100)

cells[4].text = str(float(fee_data[i][3])/100)

total = total + fee_data[i][3]

if total > fee:#如果实付总额大于传入的金额,终止写入数据,并记录序号

number = i

break

total = str(float(total)/100)

document.add_paragraph(u'实付金额总计:' + total + u' 元。')

document.add_paragraph()

p_detail = document.add_paragraph()

r_detail = p_detail.add_run(u'测试订单明细:')

r_detail.font.bold = True

for i in range(0,number+1):

order_no = str(fee_data[i][0])

paid_amount = str(float(fee_data[i][3])/100)

row_str = str(i+1) + '.' + u'订单号:' + order_no + u'实付金额:' + paid_amount + u'元。'

document.add_paragraph(row_str)

document.save(doc_path)

if __name__ == "__main__":

#sql语句筛选实付金额在5元和39元之间的订单

sql = "SELECT outer_order_id,order_amount,real_shipping_amount,paid_amount FROM oh_order_info WHERE " \

"order_create_time between '2017-12-01 9:00:00' and '2017-12-27 9:00:00' " \

"AND paid_amount between '500' and '3900'"

fee_data = get_data(sql)

doc_path = r'd:\yuzhong.docx'

fee = 12300 #多少元以上,单位:分

new_doc(fee_data,doc_path,fee)

使用到的tools文件中get_data函数

# -*- coding: utf-8 -*-

import MySQLdb

import conf

def get_data(*sql_list):#根据sql语句,获取数据库的数据

conn = MySQLdb.connect(conf.test_dbhost,conf.test_user,conf.test_passd,conf.test_dbname,port=3306,charset="utf8")

cur = conn.cursor()

for sql in sql_list:

cur.execute(sql)

conn.commit()

results = cur.fetchall()

cur.close()

conn.close()

return results

conf文件中记录的数据库帐号和密码。

运行结果:

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

python生成word文档_python实现的生成word文档功能示例相关推荐

  1. python统计文章单词次数_Python实现的统计文章单词次数功能示例

    本文实例讲述了Python实现的统计文章单词次数功能.分享给大家供大家参考,具体如下: 题目是这样的:你有一个目录,放了你一个月的日记,都是 txt,为了避免分词的问题,假设内容都是英文,请统计出你认 ...

  2. python如何画贝塞尔曲线_Python使用matplotlib实现绘制自定义图形功能示例

    本文实例讲述了Python使用matplotlib实现绘制自定义图形功能.分享给大家供大家参考,具体如下: 一 代码 from matplotlib.path importPath from matp ...

  3. python获取电脑硬件信息_Python实现的读取电脑硬件信息功能示例

    本文实例讲述了Python实现的读取电脑硬件信息功能.分享给大家供大家参考,具体如下: 上学那会,老师让我用java获取电脑硬件信息,CPU, 硬盘,MAC等,那个时候感觉搞了好久...... 今天, ...

  4. python字典遍历 没有顺序_Python实现字典的遍历与排序功能示例

    本文实例讲述了Python实现字典的遍历与排序功能.分享给大家供大家参考,具体如下: 字典的遍历: 首先: items(): 功能:以列表的形式返回字典键值对 eg: dict_={"a&q ...

  5. python实现模拟浏览器登录_Python使用win32com实现的模拟浏览器功能示例

    本文实例讲述了Python使用win32com实现的模拟浏览器功能.分享给大家供大家参考,具体如下: # -*- coding:UTF-8 -*- #!/user/bin/env python ''' ...

  6. python微信推送消息_Python实现微信推送模板消息功能示例

    这篇文章主要介绍了Python编程之微信推送模板消息功能,结合实例形式分析了Python微信推送消息接口的调用相关操作技巧,需要的朋友可以参考下 本文实例讲述了Python微信推送模板消息功能.分享给 ...

  7. python自动生成word版本试卷_Python解决问题:生成包含加减练习题的Word文件

    简   介 这里     小朋友假期作业有一项是每天做50道题的口算.之前的题目做完了,网上看到的习题集又木有合适的,再不然就是电子版本无法下载的,心想还是自己动手丰衣足食吧. 01 重点和难点 1F ...

  8. python自动化之文件处理_Python自动化办公之Word批量转成自定义格式的Excel

    作者:青春阳光king python实现word转成自定义格式的excel文档(解决思路和代码)支持按照文件夹去批量处理,也可以单独一个文件进行处理,并且可以自定义标识符. 最近在开发一个答题类的小程 ...

  9. python产生5个随机数_Python和numpy生成随机数

    http://blog.csdn.net/pipisorry/article/details/39086463 随机数种子 要每次产生随机数相同就要设置种子,相同种子数的Random对象,相同次数生成 ...

  10. python判断回文数_python如何判断是不是回文数

    什么是回文数: 有这样一类数,他们顺着看和倒着看是相同的数,例如:12321,1221,2332等,这样的数字就称为:回文数. 例子:输入一个5位数,判断它是不是回文数.即12321是回文数,个位与万 ...

最新文章

  1. Java黑皮书课后题第2章:2.11(人口统计)重写编程练习题1.11,提示用户输入年数,然后显示这个年数之后的人口值,将1.11中的提示用于这个程序
  2. Moblieye副总裁交流纪要
  3. BZOJ 1305 [CQOI2009]dance跳舞
  4. SQL Server如何链接到 Oracle并查询其中的数据?并实现做接口
  5. java数组 规定数量_java – 如何在数组中保持不同事物的数量?
  6. VB.NET/C# Free Grid Control 免费开源表格控件 - ReoGrid 介绍(1)
  7. excel2007加载宏的两种方法
  8. 可视化机器学习工具软件的比较分析研究
  9. java比特率转换,amr转换mp3所需的编码器、比特率、节录率、声音频道分别是什么?...
  10. viper4Android md风格,ViPER4Android音效 XHIFX版
  11. 检测站营销系列文章:机动车检测站如何做精益营销?
  12. 数据库一对一、一对多、多对多,表设计
  13. 生活大爆炸版石头剪刀布-简单模拟
  14. 电脑变时钟,防止消息游戏新闻的打扰,形成高效率的办公和学习
  15. 【误差】方差、标准差、均方误差和均方根误差的区别总结
  16. signal,blinker:信号(看我脸色行事)
  17. JavPlayer 109 1.09 AI破坏马赛克
  18. Excel打开csv文件时中文内容显示为乱码或问号的解决办法
  19. m基于MATLAB-GUI的GPS数据经纬度高度解析与kalman分析软件设计
  20. 51单片机定时器扫描按键

热门文章

  1. GloVe最全面、最深度的解析
  2. 2017中国IP指数盛典:一场IP界的“华山论剑”,你敢赴约吗?
  3. 教你怎么添加自己QQ为QQ好友 最新方法
  4. k8s 查看pod流量_K8s中对pod进行流量限制
  5. 智能驾驶安全专题 | 功能安全与SOTIF如何融合实施
  6. Compareable接口
  7. 物理机服务器重装nvidia显卡驱动
  8. 临近毕业,图像类SCI源刊哪本审稿快?
  9. 9种防止电脑辐射的方法
  10. 华为云618年中钜惠,服务器免费领三个月