4
python 批量修改excel

因为上一篇中,使用xlrd和xlutils修改excel,运行之后,表格格式和图片全没有了,我家小哥哥又太忙,只能自己再研究研究了。

xlwings

这两天查了python修改excel的库,蛮多,最终选择了xlwings,使用方式也很简单

全部代码如下:

# -*- coding: utf-8 -*-
import os
import xlwings as xw

def editExlXL(app, originPath, fileItem):
    # 打开已经有的工作薄(支持相对路径和绝对路径)
    wb = app.books.open(originPath + '/' + fileItem)

    # 获取第一个sheet
    sht = wb.sheets[0]

    # print(sht, 'sheet')

    # 修改a1的值
    # sht.range('a1').value = ''
    for sheet in wb.sheets:
        for picture in sheet.pictures:
            height = picture.height
            top = picture.top

            # 删除指定位置的图片
            if (top < 10 and height < 30):
                picture.delete()
    wb.save('./data/' + fileItem)

    # 关闭工作薄
    wb.close()

def mkdir(path): 
    folder = os.path.exists(path)
    if not folder:
        os.makedirs(path)
        print('--- folder mk ---')
    else:
        print('--- folder exists ---')

def getFileList(path):
    return os.listdir(path)

def editAll():
    # 新建工作薄(只打开不新建)
    app = xw.App(visible=True, add_book=False)
    # wb = app.books.add()

    originPath = './origin'
    fileList = getFileList(originPath)
    print(fileList)
    # 运行之前先清空data
    # if os.path.exists('./data'):
    #     os.removedirs("./data")
    # 创建data文件夹
    mkdir('./data')
    for fileItem in fileList:
        editExlXL(app, originPath, fileItem)
    # 退出excel
    app.quit()
editAll()
运行方式
  • 把你需要修改的文件放到origin文件夹下,如果没有辛苦手动创建一下,然后按照下面方式操作
pip install xlwings

python excel_opt.py

也可以参照我的python学习专栏的其他文章运行
xlwings API Document

啰嗦时间

借用我家小哥哥的口头禅:方法总比困难多。


Rhinoceros
180 声望12 粉丝

以终为始