excel转json_用openpyxl 来实现python操作excel

本文介绍了如何利用Python的openpyxl库进行Excel文件操作,包括将JSON转换为Excel,根据条件删除特定行,以及修改Excel中的字体颜色和单元格填充色。提供了简单易懂的代码示例。
摘要由CSDN通过智能技术生成

f4354591a3e453e0941b003657230112.png

openpyxl 是操作excel 比较方便的python 包,基本操作excel 的功能都能够实现。

通过pip按照,方便快捷。

pip3 install openpyxl

官方教程: https://openpyxl.readthedocs.io/en/stable/tutorial.html

记录使用的经历,通过openpyxl实现的几个功能。

1)json 转换为excel

2)通过条件判断,删除excel 中的某些行

♪(・ω・)ノ都是很简单很轻量级的脚本, 但都是我工作时真实用到的,稍微组合完善,可以完成很多精彩的操作, 大大减少工作时间。

一、会用到的操作

from openpyxl import Workbook

# 工作薄实例化
excel = Workbook()

# 注意:该函数调用工作表的索引(_active_sheet_index),默认是0。除非你修改了这个值,否则你使用该函数一直是在对第一张工作表进行操作。
sheet = excel.active

# 将默认操作的第一张sheet 修改名字
sheet.title = sheet_name

# 除了 excel.active 的方法外, 或者创建一张新的sheet ,可以设置sheet的名称和位置
sheet = excel.create_sheet(sheet_name, index=0)

# 给某一单元格(A1)写入值"abc" (row=1 对应第一行,column=1 对应第一列,value 为写入的值)
sheet.cell(row=1, column=1, value="abc")

# 删除第i行
sheet.delete_rows(i)

二、json转换为excel

熟悉上述的openpyxl功能就可以进行json 转excel 操作啦。

例如如下的json, 存在本地的路径为:/Users/macos/Documents/apple_.json

{
    "items": [
        {
            "name": "apple",
            "href": "/listedinfo/announcement/c/1231.pdf",
            "info_type": "好吃的水果",
            "info_type_front": "好吃的红红的水果",
            "key": "85265cf9fsdfdf3754-好吃的水果-好吃的红红的水果",
            "original_url": "https://www.runoob.com/python3/python3-string-split.html",
            "publish_date": "2019-11-18",
            "revoke_flag": 0,
            "title": "公告",
            "update_time": "2019-11-18 11:51:29",
            "uuid": "85265cf9fsdfdf3754"
        },
        {
            "name": "banana",
            "href": "/listedinfo/announcement/c/1232.pdf",
            "info_type": "好吃的水果",
            "info_type_front": "好吃的黄黄的水果",
            "key": "85265cf9fsdfdffbdf4-好吃的水果-好吃的黄黄的水果",
            "original_url": "https://www.runoob.com/python3/python3-string-split.html",
            "publish_date": "2019-11-12",
            "revoke_flag": 0,
            "title": "公告",
            "update_time": "2019-11-12 11:51:29",
            "uuid": "85265cf9fsdfdffbdf4"
        }
    ]
}

输出结果如下:

b48747d2187518f38e6abca1073318e2.png

具体代码如下:

# coding=utf-8
import os
import json
from openpyxl import Workbook


def read_json(file):
        """
        打开设置路径下的json,并json中的内容。 (此时的内容为dict 格式)
        """
    if os.path.exists(file):
        with open(file, 'r', encoding='utf8') as fp:
            json_data = json.load(fp)
    else:
        print("不存在json文件")
    return json_data


def write2xlsx(read_path, sheet_name, write_path):
        """
        将json中的内容,写入xlsx文件中。 
        json 的格式与想要转化成excel 的格式都是case by case, 通用很难,所以遇到了,要自己修改逻辑。
        """
    json = read_json(read_path)
    item_list = json['items']
    excel = Workbook()
    sheet = excel.create_sheet(sheet_name, index=0)
    v = 0
    for ig in item_list:
        dic_item = dict(ig)
        if v == 0:
            for i, key in enumerate(dic_item):
                sheet.cell(row=1, column=i+1, value=key)
                sheet.cell(row=v+2, column=i+1, value=dic_item[key])
        if v > 0:
            for i, key in enumerate(dic_item):
                sheet.cell(row=v+2, column=i+1, value=dic_item[key])
        v = v+1
    excel.save(write_path)


def main():
    json_path = '/Users/macos/Documents/apple_.json'
    save_path = '/Users/macos/Documents/apple_new.xlsx'
    st_name = 'apple'
    write2xlsx(json_path, st_name, save_path)


if __name__ == '__main__':
    main()

三、通过判断第一行的第一个单元格,删除特定行

原来的excel

d2e48c4cd1d921f0195e40cce752ea55.png

cce4f2c2fdc67edddd01d4217f8b91f4.png

删除后的excel

e2cc8a114a8133aed591024b595321fb.png

c454c0b61869b4fdec9b01481c0a7542.png

代码如下:

# coding=utf-8

import os
import json
from openpyxl import Workbook
from openpyxl import load_workbook

judge_list = ["apple","Blueberry","lemon"]

def remove_rows_and_save(path, save_path):
    wb = load_workbook(path)
    sheet = wb.worksheets[0]
    i = 1
    while i <= sheet.max_row:
        value = sheet.cell(i, 1).value
        # print(value)
        if value in a_list:
            sheet.delete_rows(i)
            print('       delete ===>', value)
            # i = i+1
            pass
        else:
            i += 1
    wb.save(save_path)


def main():
        file_path = '/Users/macos/Downloads/1130test/'
        save_file = '/Users/macos/Downloads/1130test/test/'
    for path in os.listdir(file_path):
        if path[0] == '.' or not path.endswith('.xlsx'):
            continue
        excel_path = file_path+path
        remove_rows_and_save(excel_path, save_file+path)


if __name__ == '__main__':
    main()

四、在修改excel 中的字体颜色、填充单元格颜色

import os
import json
from openpyxl import Workbook
from openpyxl.styles import PatternFill, Font

# 开始执行excel操作
excel = Workbook()

# 新建sheet,并且命名
sheet = excel.create_sheet(key, index=ig)

# 确定操作的单元格
cell = sheet.cell(row=1, column=1)
# 修改该单元的值
cell.value = "hello world"
# 修改该单元格内容的字体颜色
cell.font = Font(color="00FFBB00")
# 修改该单元格的填充颜色
cell.fill = PatternFill("solid", fgColor="d4bb22")

单元格的具体颜色在这个网站来直观的选取: https://www.color-hex.com/color/1874cd

还有一个网站 http://www.114la.com/other/rgb.htm

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值