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完成FizzBuzzWhizz问题(拉勾网面试题)示例
May 05 Python
总结Python编程中三条常用的技巧
May 11 Python
详解Python中expandtabs()方法的使用
May 18 Python
Python实现SMTP发送邮件详细教程
Mar 02 Python
Python常见MongoDB数据库操作实例总结
Jul 24 Python
win10下tensorflow和matplotlib安装教程
Sep 19 Python
Python小进度条显示代码
Mar 05 Python
Pyqt QImage 与 np array 转换方法
Jun 27 Python
python科学计算之scipy——optimize用法
Nov 25 Python
PyTorch的自适应池化Adaptive Pooling实例
Jan 03 Python
使用celery和Django处理异步任务的流程分析
Feb 19 Python
python百行代码自制电脑端网速悬浮窗的实现
May 12 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
打造计数器DIY三步曲(下)
2006/10/09 PHP
php连接oracle数据库的核心步骤
2016/05/26 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
解决IE下select标签innerHTML插入option的BUG(兼容IE,FF,Opera,Chrome,Safari)
2010/05/13 Javascript
JavaScript 学习历程和心得分享
2010/12/12 Javascript
js中用window.open()打开多个窗口的name问题
2014/03/13 Javascript
jquery获取css的color值返回RGB的方法
2015/12/18 Javascript
不得不分享的JavaScript常用方法函数集(上)
2015/12/23 Javascript
基于javascript实现tab选项卡切换特效调试笔记
2016/03/30 Javascript
基于JQuery实现图片上传预览与删除操作
2016/05/24 Javascript
jsonp跨域请求详解
2017/07/13 Javascript
关于JavaScript中的this指向问题总结篇
2017/07/23 Javascript
js和jQuery以及easyui实现对下拉框的指定赋值方法
2018/01/23 jQuery
js字符串处理之绝妙的代码
2019/04/05 Javascript
JS中如何轻松遍历对象属性的方式总结
2019/08/06 Javascript
[01:01:31]2018DOTA2亚洲邀请赛3月29日小组赛B组 Mineski VS paiN
2018/03/30 DOTA
Python采用raw_input读取输入值的方法
2014/08/18 Python
python使用wxPython打开并播放wav文件的方法
2015/04/24 Python
Python数据类型学习笔记
2016/01/13 Python
详解Python中heapq模块的用法
2016/06/28 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
2018/01/29 Python
哈工大自然语言处理工具箱之ltp在windows10下的安装使用教程
2020/05/07 Python
python 安装移动复制第三方库操作
2020/07/13 Python
Python获取excel内容及相关操作代码实例
2020/08/10 Python
Python爬虫之Selenium警告框(弹窗)处理
2020/12/04 Python
python+selenium实现12306模拟登录的步骤
2021/01/21 Python
使用html2canvas.js实现页面截图并显示或上传的示例代码
2018/12/18 HTML / CSS
雪花秀美国官方网站:韩国著名草本护肤化妆品品牌
2016/10/19 全球购物
留学推荐信中文范文三篇
2014/01/25 职场文书
《最佳路径》教学反思
2014/04/13 职场文书
领导干部对照检查材料
2014/08/24 职场文书
关于上班时间调整的通知
2015/04/23 职场文书
利用 SQL Server 过滤索引提高查询语句的性能分析
2021/07/15 SQL Server
TV动画《神废柴☆偶像》公布先导PV
2022/03/20 日漫
Ruby处理YAML和json数据
2022/04/18 Ruby
sql注入报错之注入原理实例解析
2022/06/10 MySQL