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实现批量转换文件编码(批转换编码示例)
Jan 23 Python
跟老齐学Python之不要红头文件(2)
Sep 28 Python
在Python的Flask框架下使用sqlalchemy库的简单教程
Apr 09 Python
分享python数据统计的一些小技巧
Jul 21 Python
SQLite3中文编码 Python的实现
Jan 11 Python
视觉直观感受若干常用排序算法
Apr 13 Python
python中WSGI是什么,Python应用WSGI详解
Nov 24 Python
对numpy中array和asarray的区别详解
Apr 17 Python
python Django 创建应用过程图示详解
Jul 29 Python
python通过txt文件批量安装依赖包的实现步骤
Aug 13 Python
Python3简单爬虫抓取网页图片代码实例
Aug 26 Python
超全Python图像处理讲解(多模块实现)
Apr 13 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/11/22 PHP
判断Keep-Alive模式的HTTP请求的结束的实现代码
2011/08/06 PHP
PHP 使用pcntl和libevent 实现Timer功能
2013/10/27 PHP
FastCGI 进程意外退出造成500错误
2015/07/26 PHP
使用YII2框架实现微信公众号中表单提交功能
2017/09/04 PHP
laravel框架关于搜索功能的实现
2018/03/15 PHP
JQuery 小练习(实例代码)
2009/08/07 Javascript
jQuery 验证插件 Web前端设计模式(asp.net)
2010/10/17 Javascript
利用JS解决ie6不支持max-width,max-height问题的方法
2014/01/02 Javascript
页面元素绑定jquery toggle后元素隐藏的解决方法
2014/03/27 Javascript
js遍历子节点子元素附属性及方法
2014/08/19 Javascript
限制复选框最多选择项的实现代码
2016/05/30 Javascript
JS实现的手机端精简幻灯片效果
2016/09/05 Javascript
jQuery 的 ready()的纯js替代方法
2016/11/20 Javascript
详解本地Node.js服务器作为api服务器的解决办法
2017/02/28 Javascript
Easyui Datagrid自定义按钮列(最后面的操作列)
2017/07/13 Javascript
JS数组交集、并集、差集的示例代码
2017/08/23 Javascript
jQuery中getJSON跨域原理的深入讲解
2020/09/02 jQuery
python实现数据导出到excel的示例--普通格式
2018/05/03 Python
Python 200行代码实现一个滑动验证码过程详解
2019/07/11 Python
python重要函数eval多种用法解析
2020/01/14 Python
基于K.image_data_format() == 'channels_first' 的理解
2020/06/29 Python
css3动画事件—webkitAnimationEnd与计时器time事件
2013/01/31 HTML / CSS
韩国流行时尚女装网站:Dintchina(中文)
2018/07/19 全球购物
西班牙宠物用品和食品网上商店:Tiendanimal
2019/06/06 全球购物
奥地利手表、香水、化妆品和珠宝购物网站:Brasty.at
2021/01/17 全球购物
日本整理专家Marie Kondo的官方在线商店:KonMari
2020/06/29 全球购物
C语言笔试题回忆
2015/04/02 面试题
.NET里面如何取得当前的屏幕分辨率
2012/12/06 面试题
Java的类可以定义为Protected或者Private得吗
2015/09/25 面试题
2015夏季作息时间调整通知
2015/04/24 职场文书
大学军训通讯稿(2016最新版)
2015/12/21 职场文书
2016年6.5世界环境日宣传活动总结
2016/04/01 职场文书
浅析python中特殊文件和特殊函数
2022/02/24 Python
windows server2012 R2下安装PaddleOCR服务的的详细步骤
2022/09/23 Servers
教你使用Ubuntu搭建DNS服务器
2022/09/23 Servers