当前位置: 首页 > news >正文

python写入excel数据时保存之前内容_如何使用python在保留原excel格式的前提下插入/修改数据...

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

"""Created on Fri Dec 29 10:29:35 2017

@author: Administrator"""

importpandas as pdimportpymysqlimportdatetime#使用前提导入以下两个库importxlrdimportxlutils.copy#用于SQL中限定时间

yestoday= datetime.date.today() - datetime.timedelta(days = 1)

yestoday= yestoday.strftime("%Y-%m-%d")

time_limit= str(yestoday) + '23:59:59'#指定原始excel路径

filepath= 'C:\\Users\\Administrator\\Desktop\\python脚本\\origin_excel.xls'#使用pandas库传入该excel的数值仅仅是为了后续判断插入数据时应插入行是哪行

original_data= pd.read_excel(filepath,encoding='utf-8')

#rb打开该excel,formatting_info=True表示打开excel时并保存原有的格式

rb= xlrd.open_workbook(filepath,formatting_info=True)

#创建一个可写入的副本

wb=xlutils.copy.copy(rb)

#本文重点,该函数中定义:对于没有任何修改的单元格,保持原有格式。defsetOutCell(outSheet, col, row, value):"""Change cell value without changing formatting."""

def_getOutCell(outSheet, colIndex, rowIndex):"""HACK: Extract the internal xlwt cell representation."""row=outSheet._Worksheet__rows.get(rowIndex)if not row: returnNone

cell=row._Row__cells.get(colIndex)returncell#HACK to retain cell style.

previousCell =_getOutCell(outSheet, col, row)#END HACK, PART I

outSheet.write(row, col, value)#HACK, PART II

ifpreviousCell:

newCell=_getOutCell(outSheet, col, row)ifnewCell:

newCell.xf_idx=previousCell.xf_idx

#定义一个执行SQL的函数,因为数据需要连接数据库查询defexecude_sql(sql):

results=[]

db= pymysql.connect('xx','xx','xx','xx',charset='utf8')

cur=db.cursor()

cur.execute(sql)

result=cur.fetchone()

results.append(result[0])returnresults

sql1_1= """SELECT COUNT(id) FROM cl_user cu WHERE cu.regist_time <= '"""+ time_limit +"""' AND cu.id IN (SELECT id FROM v_13bmd_regist)"""sql1_2= """xxx"""sql1_3= """xxx"""#判断需要写入的行是哪一行

for row inrange(0,len(original_data)):if original_data.iloc[row,0] ==yestoday:print('当前需要修改的行为:' +row)print('正在查询:注册人数……')

regist_white=execude_sql(sql1_1)

regist_nature=execude_sql(sql1_2)

regist_all=execude_sql(sql1_3)#写入excel数据

outSheet=wb.get_sheet(0)

setOutCell(outSheet,1,row,regist_white[0])

setOutCell(outSheet,2,row,regist_nature[0])

setOutCell(outSheet,3,row,regist_all[0])#保存excel

wb.save('output.xls')print('finish')

相关文章:

  • asp.net web开发框架_ASP.NET Core Blazor未来的Web开发框架
  • 操作系统实验c语言页面置换算法(lru和lfu算法)_「任性」的C语言之父:因拒付论文装订费错失博士学位,论文52年后重见天日...
  • python生日快乐代码_【震惊小伙伴的单行代码—Python篇】的实践操作
  • c3p0连接池配置_数据库连接池amp;Spring JDBC(JdbcTemplate)
  • cdr自动排版插件_牛逼!网上卖328的CorelDraw插件免费送一键转曲批量导图文字识别...
  • python最接近某个值怎么表示_在python3中实现查找数组中最接近与某值的元素操作...
  • java连接rabbitmq_RabbitMQ指南之一:Hello World!
  • python if 单行_学python时,发现很多高手的代码只有一行或几行就达到了我多行代码一样的功能,应该追求这种简洁吗?...
  • python openpyxl读写xlsx_Python使用openpyxl读取、修改excel文件及绘chart图(支持xlsx)...
  • java array 元素的位置_JAVA《集合框架》
  • 植物图像识别python_python 实现图像识别
  • python开发博客系统_python 全栈开发,Day80(博客系统分析,博客主页展示)
  • python如何执行部分代码_Python 在局部变量域中执行代码
  • gradle jar 修改 output 路径_Gradle系列之Java Gradle插件
  • sql数据源名称过长_使用Druid解析SQL小试
  • java概述
  • JS 面试题总结
  • JSDuck 与 AngularJS 融合技巧
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • Octave 入门
  • SQLServer插入数据
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • text-decoration与color属性
  • 彻底搞懂浏览器Event-loop
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 讲清楚之javascript作用域
  • 开源SQL-on-Hadoop系统一览
  • 三分钟教你同步 Visual Studio Code 设置
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • linux 淘宝开源监控工具tsar
  • $(selector).each()和$.each()的区别
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (第二周)效能测试
  • (分布式缓存)Redis持久化
  • (九十四)函数和二维数组
  • (学习日记)2024.02.29:UCOSIII第二节
  • (转)Linq学习笔记
  • ***监测系统的构建(chkrootkit )
  • .Net 6.0 处理跨域的方式
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • @angular/cli项目构建--http(2)
  • @Conditional注解详解
  • @RequestMapping用法详解
  • [ C++ ] STL---stack与queue
  • [ 网络基础篇 ] MAP 迈普交换机常用命令详解
  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹
  • [acwing周赛复盘] 第 69 场周赛20220917
  • [Android] Implementation vs API dependency
  • [bzoj1006]: [HNOI2008]神奇的国度(最大势算法)
  • [BZOJ1178][Apio2009]CONVENTION会议中心
  • [c]扫雷
  • [CSAWQual 2019]Web_Unagi ---不会编程的崽
  • [Git 1]基本操作与协同开发