欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python写入Excel文件操作

程序员文章站 2022-10-19 22:45:36
**任务描述:** 最近在做一个为公文写作提供素材的任务,大致就是将原有公文进行分块保存,然后以块的形式提供给用户,辅助用户完成公文写作中各部分的编写。代码编写好后运行结果存放在json文件中,本地测试校验时需要将json文件中的结果存放到前期数据调研时的excel中预留的行、列中,那么怎么来做呢?(此问题转换为:如何将结果存入已存在的excel中?)**xlutils模块** 该模块的功能是作为xlrd和xlwt的桥梁,解决了xlrd中book对象无法编辑的问题。通......

任务描述:

        最近在做一个为公文写作提供素材的任务,大致就是将原有公文进行分块保存,然后以块的形式提供给用户,辅助用户完成公文写作中各部分的编写。代码编写好后运行结果存放在json文件中,本地测试校验时需要将json文件中的结果存放到前期数据调研时的excel中预留的行、列中,那么怎么来做呢?(此问题转换为:如何将结果存入已存在的excel中?)

xlutils模块

        该模块的功能是作为xlrd和xlwt的桥梁,解决了xlrd中book对象无法编辑的问题。通过copy模块将xlrd.Book对象转换为xlwt.Workbook对象,从而实现了原始excel文件的编辑功能。

如果没有xlutils模块,可以按照以下命令安装:

pip install xlutils -i https://pypi.douban.com/simple/

代码实现:

 -*- coding:utf-8 -*-
"""Automated_testing.py
~~~~~~~~~~~~~~~~
写入Excel文件功能实现

:copyright: (c) 2020 by keyidanmeibiyao
:modified: 2020-07-15
"""
import xlrd, xlwt
import json
from xlwt import Style
from xlutils.copy import copy
excel_data = xlrd.open_workbook("C:/Users/xzc/Desktop/工作总结报告等四类调研汇总.xlsx")  # 打开待写入的Eecel文件
excel = copy(excel_data)
table_acc_inv = excel.get_sheet(2)
title_acc_inv = excel_data.sheets()[2].col_values(1)  # 获取"调查类报告"标题列,2表示excel中第三张表,1表示取第二列,返回值为list类型
with open("C:/Users/xzc/Desktop/调查类报告分块结果.json", "r", encoding='utf-8') as f:
    data_acc_inv = f.readlines()
    for i, each_data in enumerate(data_acc_inv):
        result = json.loads(each_data)
        for idx, each_title in enumerate(title_acc_inv):
            if idx != 0:  # 第1行为标题行,需排除
                if result["标题"] == each_title:  # 遍历excel中第二列的title,如果在json文件中找到一样的title,则把对应的字段添加到对应的行列
                    print("调查类报告>>>", result["标题"])
                    table_acc_inv.write(idx, 4, result["调研/普查设计"])  # (行,列,待存值)
                    table_acc_inv.write(idx, 7, result["调研/普查结果"])
                    table_acc_inv.write(idx, 10, result["存在问题和下一步工作打算"])
excel.save("C:/Users/xzc/Desktop/工作总结报告等四类调研汇总_0716.xls")

excel文件展示:

红框表示存入的列为4和7的内容

python写入Excel文件操作

本文地址:https://blog.csdn.net/zhichaoxia/article/details/107382618