python实现的生成word文档功能示例


Posted in Python onAugust 23, 2019

本文实例讲述了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实现的生成word文档功能示例

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

Python 相关文章推荐
python实现的一个p2p文件传输实例
Jun 04 Python
Python使用Flask框架同时上传多个文件的方法
Mar 21 Python
python过滤字符串中不属于指定集合中字符的类实例
Jun 30 Python
浅析Python中MySQLdb的事务处理功能
Sep 21 Python
详解python3中tkinter知识点
Jun 21 Python
使用Python实现在Windows下安装Django
Oct 17 Python
python从子线程中获得返回值的方法
Jan 30 Python
详解python tkinter教程-事件绑定
Mar 28 Python
解决pycharm不能自动补全第三方库的函数和属性问题
Mar 12 Python
Django Xadmin多对多字段过滤实例
Apr 07 Python
python关于集合的知识案例详解
May 30 Python
python自动获取微信公众号最新文章的实现代码
Jul 15 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
Aug 23 #Python
详解Matplotlib绘图之属性设置
Aug 23 #Python
python3.6生成器yield用法实例分析
Aug 23 #Python
python基础 range的用法解析
Aug 23 #Python
Django 导出项目依赖库到 requirements.txt过程解析
Aug 23 #Python
Django接收自定义http header过程详解
Aug 23 #Python
Python 处理文件的几种方式
Aug 23 #Python
You might like
建立文件交换功能的脚本(二)
2006/10/09 PHP
PHP的Json中文处理解决方案
2016/09/29 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
PHP将英文数字转换为阿拉伯数字实例讲解
2019/01/28 PHP
JS类库Bindows1.3中的内存释放方式分析
2007/03/08 Javascript
服务器安全设置的几个注册表设置
2007/07/28 Javascript
读jQuery之十一 添加事件核心方法
2011/07/31 Javascript
用JS判别浏览器种类以及IE版本的几种方法小结
2011/08/02 Javascript
javascript权威指南 学习笔记之javascript数据类型
2011/09/24 Javascript
通过下拉框的值来确定输入框是否可以为空的代码
2011/10/18 Javascript
javascript for循环从入门到偏门(效率优化+奇特用法)
2012/08/01 Javascript
js使下拉列表框可编辑不止是选择
2013/12/12 Javascript
深入探讨JavaScript、JQuery屏蔽网页鼠标右键菜单及禁止选择复制
2014/06/10 Javascript
基于jQuery创建鼠标悬停效果的方法
2015/03/07 Javascript
JavaScript实现输入框(密码框)出现提示语
2016/01/12 Javascript
微信小程序  TLS 版本必须大于等于1.2问题解决
2017/02/22 Javascript
jQuery Ajax前后端使用JSON进行交互示例
2017/03/17 Javascript
实现div内部滚动条滚动到底部和顶部的代码
2017/11/15 Javascript
vue如何通过id从列表页跳转到对应的详情页
2018/05/01 Javascript
基于JavaScript canvas绘制贝塞尔曲线
2018/12/25 Javascript
vue基于两个计算属性实现选中和全选功能示例
2019/02/08 Javascript
js实现图片跟随鼠标移动效果
2019/10/16 Javascript
在vue中利用v-html按分号将文本换行的例子
2019/11/14 Javascript
jquery自定义组件实例详解
2020/12/31 jQuery
Python实现文件按照日期命名的方法
2015/07/09 Python
Python基于scapy实现修改IP发送请求的方法示例
2017/07/08 Python
详解Python安装tesserocr遇到的各种问题及解决办法
2019/03/07 Python
Python selenium爬取微信公众号文章代码详解
2020/08/12 Python
英国Amara家居法国网站:家居装饰,现代装饰和豪华礼品
2016/12/15 全球购物
荷兰演唱会和体育比赛订票网站:viagogo荷兰
2018/04/08 全球购物
利群广告词
2014/03/20 职场文书
励志演讲稿800字
2014/08/21 职场文书
人事局接收函
2015/01/31 职场文书
大学推普周活动总结
2015/05/07 职场文书
准备去美国留学,那么大学申请文书应该怎么写?
2019/08/12 职场文书
golang 实现Location跳转方式
2021/05/02 Golang