python工具之exccel模板生成报表
from Db import Db
from log import log
import xlwt
import xlrd
from xlutils.copy import copy
import sys
import os
from sched import sched
from datetime import datetime
import config sql = '''
''' @sched.scheduled_job('cron', second='', minute='', hour='10,14', id='supplierXlsGen')
# @sched.scheduled_job('cron',second='*/1',id='supplierXlsGen')
def supplierXlsGen():
try:
descfilePath = config.descfilePath + datetime.now().strftime('%Y%m%d_%H%M%S')
if not os.path.exists(descfilePath):
os.mkdir(descfilePath)
# 获取所有模板,对模板进行遍历即可
temlist = os.listdir(sys.path[0] + '/template/')
for tem in temlist:
log.info('开始处理%s' % tem)
# 根据文件名获取供应商id
id = tem.split('.')[0]
db = Db()
# 获取数据源
data = db.query(sql, (id))
if len(data) == 0:
log.info('数据为空,不处理')
continue
xls = xlrd.open_workbook(sys.path[0] + '/template/' + tem)
excel = copy(xls)
sheets = xls.sheets()
# 解决多sheet兼容问题
for tableidx, temtable in enumerate(sheets):
# table = xls.sheets()[0]
# 获取模板取的字段
collist = temtable.row_values(1)
table = excel.get_sheet(tableidx)
for idx, d in enumerate(data):
for i, col in enumerate(collist):
if col != '':
# 判断下数据类型
if type(d[col]) == datetime:
table.write(
idx + 1, i, d[col].strftime('%Y-%m-%d %H:%M:%S'))
else:
table.write(idx + 1, i, d[col])
dateStr = datetime.now().strftime('%Y%m%d_%H%M%S')
# 获取供应商名称
name = db.queryOne(
'SELECT * from qmall_supplier where id=%s', (id))['name']
excel.save(descfilePath + "/%s_%s_%s.xls" % (id, name, dateStr))
log.info('处理结束')
tarfileName = datetime.now().strftime('%Y%m%d_%H%M%S') + '.tar'
os.system('tar -cvPf /mall_image/report/deliverXls/%s %s' %
(tarfileName, descfilePath))
except Exception as e:
log.error(e)
log.info('处理完成')
python工具之exccel模板生成报表的更多相关文章
- 根据模板导出Excel报表并复制模板生成多个Sheet页
因为最近用报表导出比较多,所有就提成了一个工具类,本工具类使用的场景为 根据提供的模板来导出Excel报表 并且可根据提供的模板Sheet页进行复制 从而实现多个Sheet页的需求, 使用本工具类时 ...
- 使用java Apache poi 根据word模板生成word报表
项目开发过程中,客户提出一堆导出报表的需求,需要导出word格式,页眉还需要加上客户公司的logo,试了几种方案,最后选择了用 Apache poi 加上自定义标签的方式实现. 目前功能还比较简单,一 ...
- 使用FastReport报表工具生成报表PDF文档
在我们开发某个系统的时候,客户总会提出一些特定的报表需求,固定的报表格式符合他们的业务处理需要,也贴合他们的工作场景,因此我们尽可能做出符合他们实际需要的报表,这样我们的系统会得到更好的认同感.本篇随 ...
- ASP.NET MVC 4.0 中使用NPOI 2.2.0 按模板生成Excel报表
使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写.NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office的情况下对Word/ ...
- 使用Python定时执行一任务,自动登录某web系统,生成报表,然后发送邮件给指定人员
一.项目需求 每周从A系统生成一张Excel报表,发送此报表给指定人员,相关人员依据此报表去完成后续的工作. 项目限制: 1.无法通过EDI系统交互的方式从后台读取数据 2.由于公司网络环境限制,不能 ...
- 使用python获取整月每一天的系统监控数据生成报表
1.安装阿里开源监控工具tsar tsar官方网站 wget -O tsar.zip https://github.com/alibaba/tsar/archive/master.zip --no-c ...
- Python 写了一个批量生成文件夹和批量重命名的工具
Python 写了一个批量生成文件夹和批量重命名的工具 目录 Python 写了一个批量生成文件夹和批量重命名的工具 演示 功能 1. 可以读取excel内容,使用excel单元格内容进行新建文件夹, ...
- python/数据库操作补充—模板—Session
python/数据库操作补充—模板—Session 一.创建一个app目录 在models.py只能类进行进行创建表 class Foo: xx= 字段(数据库数据类型) 字段类型 字符串 Email ...
- 使用T4模板生成不同部署环境下的配置文件
在开发企业级应用的时候,通常会有不同的开发环境,比如有开发环境,测试环境,正式环境,生产环境等.在一份代码部署到不同环境的时候,不同环境的配置文件可能需要根据目标环境不同而不同.比如在开发环境中,数据 ...
随机推荐
- react native camera
最近在尝试用react native camera iOS版本很方便就调试通过了,react的试用非常方便 android版本要单独试用fork的 屏蔽了lint的报错后也可以调试通过 参考这篇文章填 ...
- umask文件屏蔽字的使用【学习笔记】
#include "apue.h" #include <fcntl.h> #define RWRWRW (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP ...
- 使用TextView实现跑马灯的效果
1.定义textView标签的4个属性: android:singleLine="true"//使其只能单行 android:ellipsize="marquee&quo ...
- Viewpager animation duration setting
private void animatePagerTransition(final boolean forward) { ValueAnimator animator = ValueAnimator. ...
- I.MX6 lcd lvds 注册流程
/************************************************************************ * I.MX6 lcd lvds 注册流程 * 说明 ...
- Com组件介绍
COM组件简介 面向对象的思想难以适应这种分布式软件模型,于是组件化程序设计思想得到了迅速的发展. 按照组件化的程序设计的思想,复杂的应用程序被设计成一些小的,功能单一的组件模块,这些组件模块可以运行 ...
- JAVA interrupte中断线程的真正用途
Java线程之中,一个线程的生命周期分为:初始.就绪.运行.阻塞以及结束.当然,其中也可以有四种状态,初始.就绪.运行以及结束. 一般而言,可能有三种原因引起阻塞:等待阻塞.同步阻塞以及其他阻塞(睡眠 ...
- cmake官方文档
https://cmake.org/cmake/help/v3.0/genindex.html
- DDK编写64位驱动时加入x64汇编的方法
上篇讲了如何在编写x64应用程序时加入x64汇编,这里来说说如何在编写x64驱动时加入x64汇编. 一.在asm文件中单独编写功能函数 比如要实现一个64位的加法函数,原型如下: ULONG64 my ...
- Oracle的db.properties文件
转自:https://blog.csdn.net/lssqk/article/details/79133829