(办公类-08-03)Python VSC 教师培训作业(二)培训感悟+培训照片

(办公类-08-03)Python VSC 教师培训作业(二)培训感悟+培训照片,第1张

背景需求:

流程很复杂,解析时间不够,暂时就放个代码,过几天详细解析。

# 一、导入相关模块,设定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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/873504.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)