python实现excel手动保存

    最近在用python写一个备份计费自动脚本,涉及到从txt中读取数据量并求和、将对应策略的数据量填写到模板excel中,最后通过模板预先设置好的公式计算得出结果、再将结果拿出来放到最终我要提交的表里。

    使用的模块:

import os    # 用于拼接目录

import openpyxl    # 用于excel处理

from datetime import datetime    # 用于文件命名中附带时间

 

    大体过程:

1、 从这堆txt中按每个文件为一个备份策略,将里面每行涉及数据备份量的值求和,把这个键值对保存到字典中。

python实现excel手动保存_第1张图片

2、 将字典中所保存的key(备份策略名)与我计算费用模板excel中的策略名去匹配,匹配成功就将数据量写到excel中,最终会计算出一个中心部门的整体费用

3、在将这个最终费用提取出来,写入到我最终提交的excel中。

 

    在调试过程中发现了一个问题,在我提取最终费用时,返回的所有结果均是None。百度了一下,很多网友都说需要在openpyxl.load_workbook() 加上data_only = True 参数,我尝试之后发现仍然是None状态。

    后来在一个帖子中有这么个说法:“使用openpyxl.Workbook()函数生成Excel文档并保存后,单元格中公式并没有进行计算,所以提取其值的时候是None,当我手动打开Excel并保存后,才可提取公式的值。”

    于是我打开了用于计算出费用的excel,手动点了一下保存。之后用jupyter手动调用了一下,果然可以读取到值了。那有什么办法可以让我手动保存一下呢……

    找了半天看到了这篇文章:https://blog.csdn.net/qq_37088317/article/details/89493876

    里面介绍了使用win32com.client中的Dispatch函数来进行手动保存。

    于是开始尝试:

        pip install pypiwin32

    直接将上面老哥just_open函数搬过来,换了一下参数,这段应该算是通用代码,改一下参数即可使用。

def just_open(proc_name):
    # 保存excel使公式计算出结果
    xlApp = Dispatch("Excel.Application")
    xlApp.Visible = False
    xlBook = xlApp.Workbooks.Open(proc_name)
    xlBook.Save()
    xlBook.Close()

    然后调试了一下。果然好使!!

python实现excel手动保存_第2张图片

    真的是找了一下午才找到的方法,记录下来并分享。感谢阅读!

你可能感兴趣的:(python实现excel手动保存)