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获取远程文件大小的函数代码分享
May 13 Python
Python标准库defaultdict模块使用示例
Apr 28 Python
python简单实现基数排序算法
May 16 Python
Python面向对象特殊成员
Apr 24 Python
python实现对文件中图片生成带标签的txt文件方法
Apr 27 Python
python bmp转换为jpg 并删除原图的方法
Oct 25 Python
Django objects的查询结果转化为json的三种方式的方法
Nov 07 Python
对web.py设置favicon.ico的方法详解
Dec 04 Python
如何用OpenCV -python3实现视频物体追踪
Dec 04 Python
Django admin管理工具TabularInline类用法详解
May 14 Python
python中time包实例详解
Feb 02 Python
学会用Python实现滑雪小游戏,再也不用去北海道啦
May 20 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
我常用的几个类
2006/10/09 PHP
php 购物车的例子
2009/05/04 PHP
解析如何用php screw加密php源代码
2013/06/20 PHP
yii通过小物件生成view的方法
2016/10/08 PHP
js操作Xml(向服务器发送Xml,处理服务器返回的Xml)(IE下有效)
2009/01/30 Javascript
扩展JavaScript功能的正确方法(译文)
2012/04/12 Javascript
js中判断对象是否为空的三种实现方法
2013/12/23 Javascript
js实现鼠标感应图片展示的方法
2015/02/27 Javascript
JavaScript获取页面上被选中文字的方法技巧
2015/03/13 Javascript
node网页分段渲染详解
2016/09/05 Javascript
javascript使用递归算法求两个数字组合功能示例
2017/01/03 Javascript
jQuery实现标签页效果实战(4)
2017/02/08 Javascript
vue.js+Echarts开发图表放大缩小功能实例
2017/06/09 Javascript
Node.js爬取豆瓣数据实例分析
2018/03/05 Javascript
vue.js 实现评价五角星组件的实例代码
2018/08/13 Javascript
浅谈vue引用静态资源需要注意的事项
2018/09/28 Javascript
Angular4.x Event (DOM事件和自定义事件详解)
2018/10/09 Javascript
微信js-sdk 录音功能的示例代码
2019/11/01 Javascript
JS对日期操作封装代码实例
2019/11/08 Javascript
jquery实现穿梭框功能
2021/01/19 jQuery
[01:14:34]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第一局
2016/02/28 DOTA
qpython3 读取安卓lastpass Cookies
2016/06/19 Python
详解pandas安装若干异常及解决方案总结
2019/01/10 Python
详解python中sort排序使用
2019/03/23 Python
HTML5的新特性(1)
2016/03/03 HTML / CSS
花园仓库建筑:Garden Buildings Direct
2018/02/16 全球购物
JackJones官方旗舰店:杰克琼斯男装
2018/03/27 全球购物
美国第二大连锁药店:Rite Aid
2019/04/03 全球购物
英国名牌服装购物网站:OD’s Designer
2019/09/02 全球购物
描述RIP和OSPF区别以及特点
2015/01/17 面试题
信息管理专业推荐信
2013/10/29 职场文书
建筑施工员岗位职责
2013/11/26 职场文书
服装促销活动方案
2014/02/23 职场文书
对祖国的寄语大全
2014/04/11 职场文书
班级口号大全
2014/06/09 职场文书
旷工检讨书1000字
2015/01/01 职场文书