目标: 将json文本解析并存储到excel中

使用python包 openpyx

import simplejson
mport codecs
import openpyxl
import os #
def write_xlsx(origin_root_path,file_name, write_path, workbook): origin_path = origin_root_path + file_name
sheet_name = file_name.split('.')[0]
print(sheet_name + ' sheet ' + "processing ...") # 使用simplejson.load方法先读原始json文件origin_path
file = codecs.open(origin_path, 'rb', 'utf-8')
file_json = simplejson.load(file) # 创建sheet
# 该方法传入了workbook的参数,所以函数体内部未新建workbook
worksheet = workbook.create_sheet(sheet_name) # 写入excel数据行
row = 1
cmp_names = list(file_json.keys())
cmp_len = len(cmp_names)
for i in range(cmp_len): #每个公司
cmp_name = cmp_names[i]
# 是否有多页数据
pages_len = len(file_json[cmp_name])
for pages_in in range(pages_len): #每页数据
cmp_page = file_json[cmp_name][pages_in]
# code = 200 有数据
if(cmp_page['code'] == 100 or cmp_page['code'] ==500):
continue elif(cmp_page['code'] == 200):
cmp_page_data = file_json[cmp_name][pages_in]['data'] # 第pages_in页数据
# 判断每页是否有多条数据(根据cmp_data字典中时是否有key:list来判断)
if( 'list' in list(cmp_page_data.keys())): #data中多条数据
# list中每一个元素一行数据
cmp_data_list = cmp_page_data['list']
cmp_data_list_len = len(cmp_data_list)
for item_in in range(cmp_data_list_len):
item_data = cmp_data_list[item_in]
item_data_keys = list(item_data.keys())
item_data_values = list(item_data.values())
item_data_len = len(item_data_values) #写入表头
if(row == 1):
worksheet.cell(row, 1, "CMP_NAME")
for col in range(item_data_len):
                   #调用worksheet.cel方法根据row和col定位在excel中的单元格,写入value。
                    #注意,row和col均从1开始
                    worksheet.cell(row, col+2, item_data_keys[col])
row = row +1 # 写入行数据
else:
worksheet.cell(row, 1, cmp_name)
for col in range(item_data_len):
worksheet.cell(row, col+2, item_data_values[col])
row = row + 1
# print(cmp_name + '\t' + item_data_values)# 打印行数据 else: # data中没有list。单条数据
cmp_data_len = len(cmp_page_data)
cmp_data_keys = list(cmp_page_data.keys())
cmp_data_values = list(cmp_page_data.values())
# 写入表头
if (row == 1):
worksheet.cell(row=row, column=1).value = "CMP_NAME"
for col in range(cmp_data_len):
worksheet.cell(row, col+2, cmp_data_keys[col])
row = row + 1
else:
worksheet.cell(row, 1, cmp_name)
for col in range(cmp_data_len):
worksheet.cell(row, col+2, cmp_data_values[col])
# print (cmp_name + '\t' + str(cmp_data_values))
row = row + 1 print(sheet_name + ' sheet ' + "Done ...")
print ('-'*30) if __name__ == '__main__': origin_root_path = r'C:\Users\01161151\Desktop\20家公司\testcmp/'
write_path = r'C:\Users\01161151\Desktop\20家公司/excel.xlsx'
files = os.listdir(origin_root_path) #workbook
workbook = openpyxl.Workbook()
for i in range(len(files)):
file_name= files[i]
write_xlsx(origin_root_path, file_name, write_path, workbook) #存储在xlsx路径中
workbook.save(write_path)

 使用openpyxl写入excel(格式为xlsx)主要步骤:

 1. workbook    workbook = openpyxl.Workbook()    

    2. worksheet  worksheet = workbook.create_sheet(sheet_name) 在workbook中创建一个名字为sheetname的sheet页

    3. worksheet.cell(row,col,value) worksheet.cell(row, col+2, cmp_data_values[col]) 以(ROW,COL)定位单元格,写入value

    4. workbook.save(xlsx文件路径)

 

【python】使用openpyxl解析json并写入excel(xlsx)的更多相关文章

  1. Python读取Json字典写入Excel表格的方法

    需求: 因需要将一json文件中大量的信息填入一固定格式的Excel表格,单纯的复制粘贴肯定也能完成,但是想偷懒一下,于是借助Python解决问题. 环境: Windows7 +Python2.7 + ...

  2. Python 使用 docopt 解析json参数文件

    1. 背景 在深度学习的任务中,通常需要比较复杂的参数以及输入输出配置,比如需要不同的训练data,不同的模型,写入不同的log文件,输出到不同的文件夹以免混淆输出 常用的parser.add()方法 ...

  3. python小练习之读取文件写入excel

    文件是个json文件 内容为: 导入excel后的格式为 屡一下思路 一步步怎么实现: 1 首先需要读取json文件 然后将读取的内容转为字典 2 将excel的列名写入一个list中 然后遍历执行写 ...

  4. python 简单抓取网页并写入excel实例

    # -*- coding: UTF-8 -*- import requests from bs4 import BeautifulSoup import xlwt import time #获取第一页 ...

  5. python从数据库取数据后写入excel 使用pandas.ExcelWriter设置单元格格式

    用python从数据库中取到数据后,写入excel中做成自动报表,ExcelWrite默认的格式一般来说都比较丑,但workbook提供可以设置自定义格式,简单记录个demo,供初次使用者参考. 一. ...

  6. Unity3D研究院之在MAC上脚本XlsxWriter写入Excel .xlsx格式

    原地址:http://www.xuanyusong.com/archives/3011 以前找了很久可以跨平台支持读写Excel的工具,我也试了很多种DLL.可在Windows上各个完美支持,可是在M ...

  7. python 使用openpyxl来写数据到excel表格

    使用openpyxl写execl确实很方便.我先介绍用到的相关模块与函数 Workbook:工作簿模块,在内存创建一个工作簿. ExcelWriter:使用它向exel中写数据. get_column ...

  8. python常识系列07-->python利用xlwt写入excel文件

    前言 读书之法,在循序而渐进,熟读而精思.--朱熹 抽空又来写一篇,毕竟知识在于分享! 一.xlwt模块是什么 python第三方工具包,用于往excel中写入数据:(ps:只能创建新表格,不能修改表 ...

  9. python 读取单所有json数据写入mongodb(单个)

    <--------------主函数-------------------> from pymongo import MongoClientfrom bson.objectid impor ...

随机推荐

  1. SecureCRT配色方案(转)

    1. 设置背景颜色和字体颜色: 选项(Options)==>会话选项(Sessions options)==>终端(Terminal)==>仿真(Emulation)  选项(Opt ...

  2. .Net Core 2.2 项目部署到IIS

    1.安装IIS所需的Host扩展 从官网(https://dotnet.microsoft.com/download/dotnet-core/2.2)下载对应的.net core版本的Runtime ...

  3. Office 2010 经验总结

    1. 如何设置蓝底白字? 答:点击菜单项上的"页面布局"→"页面颜色",就可以选择喜欢的页面颜色,字体颜色也会跟着发生改变. 补充:如果不喜欢相应的页面颜色中系 ...

  4. JavaScript控制浏览器全屏及各种浏览器全屏模式的方法、属性和事件

    实现全屏 个人版:function isFullScreen() { var fullscreenElement = document.fullscreenElement || document.we ...

  5. RestTemplate对象的使用

  6. 解决 IE 或者兼容模式不支持 document.getElementsByClassName() 的方法

    网页错误详细信息消息: 对象不支持此属性或方法 document.getElementsByClassName('element_name') 需要自己实现下该方法,因为ie5之前的版本并不支持这个方 ...

  7. Jenkins+maven+gitlab自动化部署之docker发布sprint boot项目(七)

    Jenkins发布docker应用与发布java应用配置基本一致,需要配置Dockerfile及构建的步骤,步骤如下: 1.jenkins主机构建应用为jar包 2.jenkins主机把生产的jar包 ...

  8. Mybatis笔记3

    Mybatis映射文件的SQL深入 (Mybatis今天学的不多,看了半天的mysql必知必会) 动态sql语句-if语句,查询一个用户的时候,有可能根据地址查询,用户名查询,性别查询等,所以需要动态 ...

  9. 如何创建etcd双向通信证书

    # 安装证书生成软件 wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -O /usr/bin/cfssl wget https://pkg.cfss ...

  10. mininet安装配置

    mininet安装配置 安装mininet mininet使用 在VM中运行mininet 安装VMware,在VMware中打开下载好的mininet虚拟机映像 启动虚拟机,虚拟机的初始账号密码均为 ...