python批量修改excel数据库_python批量修改excel文件

python 批量修改excel

早上突然接到小姐姐求助,如何用程序批量删除excel里面的图片,作为前端狗的我心里咯噔一下,毕竟这不是我专长。小姐姐说python应该可以,赶紧google一下。

学python从入门到放弃至今已经有2年多了吧,心里赶紧列了一个问题清单

问题清单以及后续找到的解决方案

单个excel文件

** 读取

# 使用xlrd读取excel文件

wb = open_workbook(path + '/' + name)

** 获取每个工作表

# 获取当前文件的工作表(sheet)list

sheetList = wb.sheets()

...

for sheet in sheetList:

...

** 修改工作表

# 修改工作表使用的是xlutils, 其实也可以用xlwt,

# 我没有用,原因:用资料上demo,demo使用的是这个,虽然demo没有跑通

from xlutils.copy import copy

...

wb = open_workbook(path + '/' + name)

...

# 复制原文件,因为原文件只能读取,不能写入数据,所以要复制得到一个可以写入数据的文件

newwb = copy(wb)

...

for row in sheet.get_rows():

# 遍历每一行,当8列的值小于12时,就把该值改为0

if row[0].value < 12:

newsheet.write(index, 0, 0)

...

** 保存

newwb.save('./data/' + name)

文件下的excel文件

** 获取文件列表

import os

os.listdir(path)

嗯,功能如下:

7663db3dbe03955b1d87a3c525a0076f.png

全部代码如下:

# -*- coding: utf-8 -*-

from xlrd import open_workbook

from xlutils.copy import copy

import os

def editExl(path, name):

if os.path.exists('/data'):

os.removedirs("/data")

# 括号里放入要读取的文件的绝对路径,相对路径也可以

# os.getcwd() 返回当前.py文件所在的绝对路径

# print(os.getcwd(), 'lujing')

wb = open_workbook(path + '/' + name)

# 获取所读取文件的第一张表单

# sheet = wb.sheet_by_index(0)

# 获取该表单的行数

# s = sheet.nrows

# 获取当前文件的工作表(sheet)list

sheetList = wb.sheets()

# print('sheetList', sheetList)

# 复制原文件,因为原文件只能读取,不能写入数据,所以要复制得到一个可以写入数据的文件

newwb = copy(wb)

sheetIndex = 0

for sheet in sheetList:

# 获取可写文件的第一张表单

newsheet = newwb.get_sheet(sheetIndex)

# print(newsheet, newsheet.get_rows())

index = 0

try:

for row in sheet.get_rows():

# 遍历每一行,当8列的值小于12时,就把该值改为0

# print(row)

# print(row[0].value, '000000000000000')

if row[0].value < 12:

# print('here', index)

newsheet.write(index, 0, 0)

# print('after here')

index = index + 1

except:

print("aaa")

sheetIndex = sheetIndex + 1

mkdir('./data')

newwb.save('./data/' + name)

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():

originPath = './origin'

fileList = getFileList(originPath)

# print(fileList)

for fileItem in fileList:

editExl(originPath, fileItem)

editAll()

缺陷:

只能修改单元格的内容,图片还没有办法读取,修改完成后,表格里面的图片都丢失了。但是也差不多满足小姐姐的需求了,一会有空让我家小哥哥过来优化。

运行方式

把你需要修改的文件放到origin文件夹下,如果没有辛苦手动创建一下

安装python

看到我这篇文章的应该都是大佬,应该不用贴出来了,也可以看我python学习专栏中的其他文章

只提一点,如果是windows,安装完成之后,如果cmd下运行python提示

python不是内部命令XXXXXXX

之类的,那就找到python的安装目录,添加到环境变量中(还有pip的目录)

还是举个例子吧

pthon安装目录:D:\software\Python27

pip安装目录: D:\software\Python27\Scripts

63ad43e1b3bdb98a113a9e8f87c56453.png

点击确定 -> 重启cmd -> cd excel_opt.py所在的文件夹

45077e1a3306a9401f48a22d5ec100c3.png

真实过程

文章虽然是这样写,但是实际编程过程是这样的

读取excel文件

修改第一个工作表的数据

保存excel文件

读取文件夹下的所有excel文件

遍历每个excel下的工作表并且修改

啰嗦时间

整个过程其实没有花很多时间,能够实现基本功能跟我之前从入门到放弃有着必然联系,虽然当时门也没有入。感觉,多学点东西还是有用的,说不定哪天还真能用上。[手动😀]

不知道满不满足小姐姐需求,但是我今天确实没有时间去优化了,毕竟我还深陷在工作和带娃之中。

先记录一下,我抽空再对上面的一些知识点进行研究和补充。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值