背景需求:
流程很复杂,解析时间不够,暂时就放个代码,过几天详细解析。
# 一、导入相关模块,设定excel所在文件夹和生成word保存的文件夹
from docxtpl import DocxTemplate
import pandas as pd
import os
print('------------第1步:导出docx文件(非照片的内容批量导入模板)---------------')
zpath=os.getcwd()+'\'
zpath=r'D:\test办公类教师信息技术培训word带图片'+'\'
file_path=zpath+r'\教师培训作业'
# 二、遍历excel,逐个生成word(form.docx是前面的模板)
try:
os.mkdir(file_path)
except:
pass
tpl = DocxTemplate(zpath+'form.docx')
autho = pd.read_excel(zpath+'autho.xlsx')
name = autho["name"].str.rstrip()
group =autho['group'].str.rstrip() # str.rstrip()用于去掉换行符
question1 =autho['question1'].str.rstrip()
question2 =autho['question2'].str.rstrip()
# photo=autho['photo']
topic=autho['topic'].str.rstrip()
number=autho['number'].str.rstrip()
date = autho['date']
# 遍历excel行,逐个生成
num = autho.shape[0]
for i in range(num):
context = {
"name": name[i],
"group": group[i],
"date": date[i],
"question1": question1[i],
"question2":question2[i],
"topic": topic[i],
"number": number[i],
}
tpl = DocxTemplate(zpath+'form.docx')
tpl.render(context)
tpl.save(file_path+r"\{}.docx".format(number[i]))
print('------------第1步结束---------------')
print('-----------第2步 批量修改图片文件名-----------------')
'''
https://blog.csdn.net/qq_45659693/article/details/123671909
qq_45659693
'''
import os
class BatchRename():
# 批量重命名文件夹中的图片文件
def __init__(self):
self.path = 'D:/test/02办公类/02教师信息技术培训word带图片/照片' #表示需要命名处理的文件夹
self.save_path='D:/test/02办公类/02教师信息技术培训word带图片/照片'#保存重命名后的图片地址
def rename(self):
filelist = os.listdir(self.path) #获取文件路径
filelist.sort(key=lambda x: int(x.split('_')[0][-2]))
print(filelist)
total_num = len(filelist) #获取文件长度(个数)
i = 1 #表示文件的命名是从200000开始的
for item in filelist:
print(item)
if item.endswith('.jpg'): #初始的图片的格式为jpg格式的(或者源文件是png格式及其他格式,后面的转换格式就可以调整为自己需要的格式即可)
src = os.path.join(os.path.abspath(self.path), item)#当前文件中图片的地址
dst = os.path.join(os.path.abspath(self.save_path), '序号'+str(i).rjust(2,'0') + '.jpg')#处理后文件的地址和名称,可以自己按照自己的要求改进
try:
os.rename(src, dst)
print ('converting %s to %s ...' % (src, dst))
i = i + 1
except:
continue
print ('total %d to rename & converted %d jpgs' % (total_num, i))
if __name__ == '__main__':
demo = BatchRename()
demo.rename()
print('-----------第2步结束-----------------')
print('-----------第3步:提取docx和jpg的文件名称存入excel.xls-----------------')
#导入所需模块
'''
版权声明:本文为CSDN博主「qq_43309940」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43309940/article/details/123405047
'''
from openpyxl import load_workbook
import os
import xlwt
import os,copy
import xlrd
from openpyxl import load_workbook
wb = xlwt.Workbook('encoding = utf-8') #设置工作簿编码
sheet1 = wb.add_sheet('sheet1',cell_overwrite_ok=True) #创建sheet工作表
col = ('word_path','jpg_path')
for i in range(0,2):
sheet1.write(0,i,col[i])
# 提取培训作业docx的路径
filenames=[]
path = r"D:/test/02办公类/02教师信息技术培训word带图片/教师培训作业" # 文件夹目录
# 合并文件所在路径
for root,dirs,files in os.walk(path):
for file in files:
print(os.path.join(root,file))# 导出文件及文件路径d
filenames.append(os.path.join(root,file))
for i in range(0,len(filenames)): # 1=第二行
sheet1.write(i+1,0,filenames[i]) #写入数据参数对应 行, 列, 值
# 提取培训作业docx的路径
jpgnames=[]
path2 = r"D:/test/02办公类/02教师信息技术培训word带图片/照片" # 文件夹目录
# 合并文件所在路径
for root,dirs,files in os.walk(path2):
for file in files:
print(os.path.join(root,file))# 导出文件及文件路径d
jpgnames.append(os.path.join(root,file))
for i in range(0,len(jpgnames)): # 1=第二行
sheet1.write(i+1,1,jpgnames[i]) #写入数据参数对应 行, 列, 值
wb.save(r'D:/test/02办公类/02教师信息技术培训word带图片/图片导入.xls')
# 把序号、名字、内容提取培训作业docx的路径
print('-----------第3步结束-----------------')
print('-----------第4步 把序号、名字、内容提取培训作业docx的路径-----------------')
'''https://zhuanlan.zhihu.com/p/93421672 作者:fffff'''
#1、应用xlwings包
import xlwings as xw
#2、读取待复制的表格
path = r'D:/test/02办公类/02教师信息技术培训word带图片/autho.xlsx'
workbook = xw.Book(path)
#3、读取待粘贴的表格
path2 =r'D:/test/02办公类/02教师信息技术培训word带图片/图片导入.xls'
workbook2 = xw.Book(path2)
#3-1、找到最后一行的第一个单元格
rng = workbook2.sheets("Sheet1").range('C1').expand('table') # 导出表的C1开始黏贴
cell_index = str(rng.rows.count)
range1 = workbook2.sheets("Sheet1").range('C'+cell_index)
#3-2、按行复制数据到目标表格。
range1.value = workbook.sheets("Sheet1").range('A1').expand('table').value# 从被复制表的A1开始复制
workbook.save(r'D:/test/02办公类/02教师信息技术培训word带图片/autho.xlsx')
workbook2.save(r'D:/test/02办公类/02教师信息技术培训word带图片/图片导入.xls')
workbook.close()
workbook2.close()
print('-----------第4步结束-----------------')
print('-----------第5步 把序号、名字、内容提取培训作业docx的路径-----------------')
'''
https://zhuanlan.zhihu.com/p/396606043
阿果
'''
import xlrd
from docx import Document
from docx.shared import Inches,Cm,Pt#照片尺寸
# import com.spire.doc.documents.TextWrappingStyle;
wb=xlrd.open_workbook(r'D:/test/02办公类/02教师信息技术培训word带图片/图片导入.xls')#读取工作簿
ws=wb.sheet_by_name('sheet1')#读取工作表
i=53#读取已使用的行数
a=1#初始化 行第二行喀什
# 这里是如何从excel表格内取值
while a
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)