python3 循环读取excel文件并写入json操作


Posted in Python onJuly 14, 2020

文件内容:

python3 循环读取excel文件并写入json操作

excel内容:

python3 循环读取excel文件并写入json操作

代码:

import xlrd
import json
import operator
 
def read_xlsx(filename):
 # 打开excel文件
 data1 = xlrd.open_workbook(filename)
 # 读取第一个工作表
 table = data1.sheets()[0]
 # 统计行数
 n_rows = table.nrows
 
 data = []
 
 # 微信文章属性:wechat_name wechat_id title abstract url time read like number
 for v in range(1, n_rows-1):
  # 每一行数据形成一个列表
  values = table.row_values(v)
  # 列表形成字典
  data.append({'wechat_name': values[0],
      'wechat_id': values[1],
      'title':  values[2],
      'abstract': values[3],
      'url':   values[4],
      'time':  values[5],
      'read':  values[6],
      'like':  values[7],
      'number':  values[8],
      })
 # 返回所有数据
 return data
 
if __name__ == '__main__':
 d = []
 # 循环打开每个excel
 for i in range(1, 16):
  d1 = read_xlsx('./excel data/'+str(i)+'.xlsx')
  d.extend(d1)
 
 # 微信文章属性
 # 按时间升序排列
 d = sorted(d, key=operator.itemgetter('time'))
 # 写入json文件
 with open('article.json', 'w', encoding='utf-8') as f:
  f.write(json.dumps(d, ensure_ascii=False, indent=2))
 
 name = []
 # 微信id写文件
 f1 = open('wechat_id.txt', 'w')
 for i in d:
  if i['wechat_id'] not in name:
   name.append(i['wechat_id'])
  f1.writelines(i['wechat_id'])
  f1.writelines('\n')
 
 print(len(name))

结果:

python3 循环读取excel文件并写入json操作

补充知识:Python mysql数据 读取时间参数 for循环写入Excel文件

最近在利用Python 实现自动化表报时,有个功能是mysql的业务时间是读取模板文件的时间参数,需要用到for循环功能,基本思路是:

1.自动创建一个输出文件的文件夹

2.根据模板文件创建一个新的excel文件到新创建的文件夹中

3.每次写入时返回sheet的最大行数max_row,下次写入时从最大行的下一行开始继续写入

4.每次读取必须为同一个文件

代码如下:

#! /usr/bin/env python
# -*- coding:utf-8 -*-
 
import MySQLdb
from openpyxl import load_workbook
import sys
import time
import os
 
reload(sys)
sys.setdefaultencoding('utf8')
 
# 打开数据库连接
db = MySQLdb.connect(host="localhost", user="zimu", passwd="zimu", db="xxx", port=0000,charset='utf8')
 
template_file_demo = r"D:\path\demo.xlsx"
# makedirs 创建文件时如果路径不存在会创建这个路径
output_path = r"D:\output\demo"+"_"+ time.strftime("%Y%m%d", time.localtime()) +"_" + str(int(time.time()))+"\\"
os.makedirs(output_path)
#创建文件到新创建的文件夹中
book_demo = load_workbook(template_file_demo)
book_demo.save(output_path + "demo" +"_"+time.strftime("%Y%m%d", time.localtime())+".xlsx")
#读取指定文件夹下的文件
demo_file = output_path+"demo"+"_"+time.strftime("%Y%m%d", time.localtime())+".xlsx"
 
def savedata(start_time,end_time):
	demosql = '''select * from demo where start_date<='%s' and end_date>='%s''''%(start_time,end_time)
  cursor = db.cursor()
  cursor.execute(demosql)
  demodata = cursor.fetchall()
 
  demo_book = load_workbook(demo_file)
  demosheet = demo_book['demo']
  row_t = demosheet.max_row
 
  i = 0
  while i < len(demodata):
    for j in range(0, 8):
      demosheet.cell(row_t + i + 1, j + 1).value = demodata[i][j]
    i += 1
    demo_book.save(output_path+"demo"+"_"+time.strftime("%Y%m%d", time.localtime())+".xlsx")
 
book_template = load_workbook(template_file_demo)
timet = book_template['时间配置']
for t in range(2, timet.max_row + 1): # 读取配置表中的时间
  savedata(timet.cell(t, 1).value, timet.cell(t, 2).value)

5.模板文件的时间参数设置如下:

python3 循环读取excel文件并写入json操作

以上这篇python3 循环读取excel文件并写入json操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python随机数random模块使用指南
Sep 09 Python
Python动刷新抢12306火车票的代码(附源码)
Jan 24 Python
python验证码识别实例代码
Feb 03 Python
Django之提交表单与前后端交互的方法
Jul 19 Python
详解django实现自定义manage命令的扩展
Aug 13 Python
Python如何存储数据到json文件
Mar 09 Python
Pymysql实现往表中插入数据过程解析
Jun 02 Python
简单介绍一下pyinstaller打包以及安全性的实现
Jun 02 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
Oct 20 Python
python实现简单的井字棋
May 26 Python
Python编程中Python与GIL互斥锁关系作用分析
Sep 15 Python
用Python可视化新冠疫情数据
Jan 18 Python
Python爬虫实例——scrapy框架爬取拉勾网招聘信息
Jul 14 #Python
Python爬虫爬取新闻资讯案例详解
Jul 14 #Python
Win10下配置tensorflow-gpu的详细教程(无VS2015/2017)
Jul 14 #Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
Jul 14 #Python
python操作微信自动发消息的实现(微信聊天机器人)
Jul 14 #Python
python如何写try语句
Jul 14 #Python
Python操作MySQL数据库的示例代码
Jul 13 #Python
You might like
PHP生成网页快照 不用COM不用扩展.
2010/02/11 PHP
php 字符串函数收集
2010/03/29 PHP
PHP7之Mongodb API使用详解
2015/12/26 PHP
Linux下编译redis和phpredis的方法
2016/04/07 PHP
PHP用PDO如何封装简单易用的DB类详解
2017/07/30 PHP
php 删除一维数组中某一个值元素的操作方法
2018/02/01 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
php从数据库读取数据,并以json格式返回数据的方法
2018/08/21 PHP
PHP实现微信对账单处理
2018/10/01 PHP
php基于Redis消息队列实现的消息推送的方法
2018/11/28 PHP
List Installed Software Features
2007/06/11 Javascript
jQuery Validation实例代码 让验证变得如此容易
2010/10/18 Javascript
jquery live()重复绑定的解决方法介绍
2014/01/03 Javascript
js数组与字符串的相互转换方法
2014/07/09 Javascript
jQuery通过写入cookie实现更换网页背景的方法
2016/04/15 Javascript
vue实现可增删查改的成绩单
2016/10/27 Javascript
js字符串操作总结(必看篇)
2016/11/22 Javascript
深入理解Node.js中的进程管理
2017/03/13 Javascript
解析Vue.js中的组件
2018/02/02 Javascript
微信小程序实现顶部下拉菜单栏
2018/11/04 Javascript
可拖拽组件slider.js使用方法详解
2020/12/04 Javascript
[40:16]TFT vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
在ironpython中利用装饰器执行SQL操作的例子
2015/05/02 Python
Python之csv文件从MySQL数据库导入导出的方法
2018/06/21 Python
python通过移动端访问查看电脑界面
2020/01/06 Python
Python线程threading模块用法详解
2020/02/26 Python
PyCharm2020.1.1与Python3.7.7的安装教程图文详解
2020/08/07 Python
Python datetime 如何处理时区信息
2020/09/02 Python
澳大利亚网上书店:QBD
2021/01/09 全球购物
.NET现在共支持多少种语言
2014/02/26 面试题
销售人员自我评价
2014/02/01 职场文书
夫妻婚内购房协议书
2014/10/05 职场文书
党的群众路线教育实践活动个人对照检查材料(四风)
2014/11/05 职场文书
MySQL锁机制
2021/04/05 MySQL
理解深度学习之深度学习简介
2021/04/14 Python
my.ini优化mysql数据库性能的十个参数(推荐)
2021/05/26 MySQL