网络编程
位置:首页>> 网络编程>> Python编程>> python3 循环读取excel文件并写入json操作

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

作者:qubeijun  发布时间:2022-11-07 15:40:11 

标签:python3,excel,json

文件内容:

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操作

来源:https://blog.csdn.net/qubeijun/article/details/81389980

0
投稿

猜你喜欢

  • HTTP请求方法GET:请求指定的页面信息,并返回实体主体。HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头POS
  • 在我们的日常生活工作中,经常会遇到需要上传日志的场景,比如多台机器运行同一个程序,并且需要记录每台机器程序产生的日志,根据相关关键词告警,或
  • 前言:由于使用Django框架来做网站,需要动态显示数据库内的信息,所以读取数据库必须要做,写此博文来记录。接下来分两步来做这个事,添加网页
  • XSL(EXtensible Stylesheet Language)它是指可扩展样式表语言。 XSL之于 XML 就像 CSS 之于 HT
  • 内容摘要:您是否想让您的网站有多种显示风格呢,本文介绍了如何使用CSS结合js实现动态更换页面皮肤风格。看了下面的介绍您就明白了如何实现了这
  • 开发微信小程序过程中,有个需求需要用到日期时间筛选器,查看微信官方文档后,发现官方文档的picker筛选器只能单独支持日期或者是时间,所以为
  • 最近游戏项目在多个国家上线,每个国家都对应两份儿svn目录(一份是本地策划目录,一份是线上目录)。于是乎维护变得很烦躁。需要先更新本地策划s
  • 需求背景:进行分值计算。如下图,如果只是一两个还好说,写写判断,但是如果有几十个,几百个,会不会惨不忍睹。而且,下面的还是三种情况。例如:解
  • 今天碰到这个极度郁闷的报错,搞了大半下午,才发现是ie的问题,忍不住大骂。例子是这样的:页面中有多处能出发菜单,并且菜单出现在触发点的旁边,
  • wlile循环while True表示永远为真,不管是什么条件都会向下执行,下面是写的一个例子。#!/usr/bin/env pythona
  • 一、线性回归的理论1)线性回归的基本概念线性回归是一种有监督的学习算法,它介绍的自变量的和因变量的之间的线性的相关关系,分为一元线性回归和多
  • XML即可扩展标记语言(eXtensible Markup Language)。标记是指计算机所能理解的信息符号,通过此种标记,计算机之间可
  • 列表的逆序遍历a = [1,3,6,8,9]print("通过下标逆序遍历1:")for i in a[::-1]: &
  • Gtalk 软件的最下方有个很好又很实用的功能,就是 Gmail 邮件提醒功能。会定时更新你 Gmail 中未读新邮件的数量。试想
  • 一、通用爬虫通用网络爬虫是搜索引擎抓取系统(Baidu、Google、Sogou等)的一个重要组成部分。主要目的是将互联网上的网页下载到本地
  • 问题:1.一个销售系统,设有各级代理商,每个代理商的表是这样设计的 数据库结构表1:  代理商资料表[id] 
  • 如果你已经理解了block formatting contexts那么请继续,否则请先看看这篇文章。Overflow能够做一些很牛掰的事情,
  • [Hack] 意为”劈”、”砍”。 [Hacker] 意为”黑客”CSS Hack 是指针对不同的浏览器写不同的CSS code的过程,简单
  • 设置密码保护SqlServer数据库备份文件! 备份SqlServer数据库 Backup Database [数据库] To disk=&
  • 这篇文章主要介绍了python next()和iter()函数原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学
手机版 网络编程 asp之家 www.aspxhome.com