1.可以看到下面图表内有两个日期,每次都需要将下面两个日期改为其他的日期,一个一个改太费劲了
2.由于我的原文件是.xlsx,不能保留原始格式(formatting_info=True),所以要做.xlsx转.xls文件的步骤
可以看我以前写过的博客,这里就不赘述了
Python-批处理.xlsx文件与.xls文件相互转换
3.代码如下:
from xlutils.copy import copy
import xlrd
import xlwt
import win32com.client as win32
import os
path1 = r"E:\untitled1\测试\input" # .xlsx文件存放路径即原始文件
path2 = r"E:\untitled1\测试\temp" # .xls文件存放路径
path3 = r"E:\untitled1\测试\output" # 最终生成的文件路径
for each in os.walk(path2): # 删除.xls文件存放路径下的文件
for i in each[2]:
file2 = each[0]+'\\'+i
if ".xls" in file2:
os.remove(file2)
############批处理格式转换###################
for file1 in os.listdir(path1):
filename1 = file1.split('.') # 文件和格式分开
transfile1 = path1 + '\\' + file1 # 要转换的excel
transfile2 = path2 + '\\' + filename1[0] + '.xls' # 转换出来excel
excel = win32.gencache.EnsureDispatch('excel.application')
pro = excel.Workbooks.Open(transfile1) # 打开要转换的excel
pro.SaveAs(transfile2, FileFormat=56) # 另存为xls格式
pro.Close()
excel.Application.Quit()
##########批量修改Excel内的内容################
old_excel = xlrd.open_workbook(transfile2, formatting_info=True) # 打开文件,保留原格式
rows = old_excel.sheets()[0].nrows #获取行数
new_excel = copy(old_excel) # 复制excel
new_sheet = new_excel.get_sheet(0) # 获取sheet
style = xlwt.XFStyle() # 预定一个格式
# 边框
borders = xlwt.Borders()
borders.top = xlwt.Borders.THIN
borders.bottom = xlwt.Borders.THIN
borders.left = xlwt.Borders.THIN
borders.right = xlwt.Borders.THIN
style.borders = borders
key1 = '2021/1/28' # 这里修改第一个日期
key2 = '2021/2/11' # 这里修改第二个日期
x1 = 1
x2 = 2
t = 4
y = 0 # 表示列
for i in range(rows): # 遍历行
if x1 <= i:
new_sheet.write(x1, y, key1, style) # 修改第一列的数据
new_sheet.write(x2, y, key2, style) # 修改第一列的数据
x1 = x1+t
x2 = x2+t
new_excel.save(path3 + '\\' + filename1[0] + '.xls') # 保存
4.运行效果,如下:
看第一列的日期都批量修改了,此脚本是批处理的,所以就100个xlsx文件要这样改的话,只需要把key1和key2的参数改一下,点击运行,超方便的~不用一个一个的打开,然后修改,然后保存