【办公类-22-04】周计划系列(4)-生成“周计划”(提取旧docx指定段落的内容,写入EXCLE模板,再次生成新docx)

这篇具有很好参考价值的文章主要介绍了【办公类-22-04】周计划系列(4)-生成“周计划”(提取旧docx指定段落的内容,写入EXCLE模板,再次生成新docx)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

代码相当复杂,操作很繁琐,自己都要研究半天T_T

文件夹展示

【办公类-22-04】周计划系列(4)-生成“周计划”(提取旧docx指定段落的内容,写入EXCLE模板,再次生成新docx)

01提取提取新表的已有内容(提取大8班、大7班的新版本里面的额内容)

(需要里面的一些反思,用来占位)

【办公类-22-04】周计划系列(4)-生成“周计划”(提取旧docx指定段落的内容,写入EXCLE模板,再次生成新docx)

这里有一份根据新模板用Python批量做过的“完整”的教案集合

【办公类-22-04】周计划系列(4)-生成“周计划”(提取旧docx指定段落的内容,写入EXCLE模板,再次生成新docx)

【办公类-22-04】周计划系列(4)-生成“周计划”(提取旧docx指定段落的内容,写入EXCLE模板,再次生成新docx)

 文章来源地址https://www.toymoban.com/news/detail-430579.html

 一些内容可以被继续套用(手写修改的,提取出来做公共素材)

【办公类-22-04】周计划系列(4)-生成“周计划”(提取旧docx指定段落的内容,写入EXCLE模板,再次生成新docx)

 

from docx import Document

import os

pathall=[]
path =r'D:\2022.9大七班上下学期资料\202106 大八班级资料(程 阿夏)\03 202202大八班下学期资料\01周计划 信息窗\01 新周计划\大八周计划的批量(等待修改)'
for file_name in os.listdir(path):
    print(path+'\\'+file_name)
    pathall.append(path+'\\'+file_name)
print(pathall)
print(len(pathall))# 19

# 新建EXCEL
import xlwt 
f = xlwt.Workbook('encoding = utf-8')#设置工作簿编码
sheet1 = f.add_sheet('sheet1',cell_overwrite_ok=True)#创建sheet工作表

n=1
for h in range(len(pathall)):    # 19份19行
    path=pathall[h]

    doc = Document(path)

    # 获取所有表格对象
    tables = doc.tables
    # 获取word中第一个表格(周计划表)
    table = tables[0]


    print('-----提取第1张表格(周计划表)里面的内容----------')

    list=[]
    # 生活名称
    l = table.cell(1,4).text
    print(l)
    # 吃点心
    list.append(l)
    # 生活说明(1格2行,分开) (导入做参考,实际是自己写)
    ll=table.cell(2,4).text.split('\n')
    print(ll)
    # ['1、观察幼儿在吃点心时是否能熟练地使用夹子夹取饼干。', '2、提醒个别幼儿喝完牛奶擦嘴巴。']
    # 不要“1、”、“2、”
    L=[]
    for lll in range(2):    # 一共2条
        L.append(ll[lll][2:])      #    # 不要“1、”、“2、”
        list.append(ll[lll][2:])   
    print(L)
    # ['观察幼儿在吃点心时是否能熟练地使用夹子夹取饼干。', '提醒个别幼儿喝完牛奶擦嘴巴。']

    # 运动=集体游戏+分散游戏 不导入,每年都在更换

    # 运动观察与指导(导入做参考,实际是自己写)
    s=table.cell(5,4).text.split('\n')
    print(s)
    # ['观察幼儿是否能双手握住曲棍杆将皮球打出一定距离。', '观察幼儿是否能寻找皮球的多种玩法。', '3、提醒幼儿注意打曲棍干的安全。']
    # 有些序号是自动编号,不占字数。
    S=[]
    for sss in range(3):    # 一共3条
        S.append(s[sss][2:])         # 不要“1、”、“2、”、“3、”
        list.append(s[sss][2:])
    print(S)
    # ['幼儿是否能双手握住曲棍杆将皮球打出一定距离。', '幼儿是否能寻找皮球的多种玩法。', '提醒幼儿注意打曲棍干的安全。']

    # 游戏内容 不导入,每年都在更换
    # 游戏观察与指导(导入做参考,实际是自己写)
    g=table.cell(8,4).text.split('\n')
    print(g)
    # ['1、观察娃娃家的幼儿是否会照顾娃娃,与娃娃互动。', '2、重点观察医生在小医院游戏中,与病人的互动时能否加上一些肢体动作。', '3、观察幼儿角色游戏结束后,能否帮助其他伙伴一同整理材料。']
    # 有些序号是自动编号,不占字数。
    G=[]
    for ggg in range(2):    # 一共3条
        G.append(g[ggg][2:])         # 不要“1、”、“2、”、“3、”
        list.append(g[ggg][2:]) 
    print(G)
    # ['观察娃娃家的幼儿是否会照顾娃娃,与娃娃互动。', '重点观察医生在小医院游戏中,与病人的互动时能否加上一些肢体动作。', '观察幼儿角色游戏结束后,能否帮助其他伙伴一同整理材料。']

    # 主题和主题说明
    ti=table.cell(9,4).text.split('\n')
    print(ti)

    # ['春天来了', '1、了解春天是个万物生长的季节,关注自然环境的不断变化。', '2、感受大自然美丽的景像,以各种方式表达自己的情感与体验。']
    # 有些序号是自动编号,不占字数。
    T=[]# 第1个春天来了,不需要删除序号,直接添加
    T.append(ti[0])
    list.append(ti[0])
    for ttt in range(1,3):    # 一共2条主题说明
        T.append(ti[ttt][2:])         # 不要“1、”、“2、”、
        list.append(ti[ttt][2:])
    print(T)
    # ['春天来了', '了解春天是个万物生长的季节,关注自然环境的不断变化。', '感受大自然美丽的景像,以各种方式表达自己的情感与体验。']

    # 个别化内容(3-5项) 一行多个,全部写入
    iiii=table.cell(10,4).text.split('\n')
    print(iiii)
    list.append(iiii)
    # ['三只蝴蝶、找蝴蝶、柳树姑娘的头发、春雨沙沙等']

    # 个别化观察与指导(导入做参考,实际是自己写)
    ii=table.cell(12,4).text.split('\n')
    print(ii)
    # ['1、观察幼儿是否能通过协商分配角色表演故事《三只蝴蝶》。', '2、观察幼儿是否能看懂图谱,跟着音乐打节奏。']
    # 有些序号是自动编号,不占字数。
    I=[]
    for iii in range(3):    # 一共3条
        I.append(ii[iii][2:])         # 不要“1、”、“2、”、“3、”
        list.append(ii[iii][2:])
    print(I)
    # ['观察幼儿是否能通过协商分配角色表演故事《三只蝴蝶》。', '观察幼儿是否能看懂图谱,跟着音乐打节奏。']

    # 集体学习 横向五个格子
    K =[]
    for e in range(4,9):
        k = table.cell(12,e).text
        K.append(k)        
        list.append(k)
    print(K)
    # ['空中小屋\n(偏语言领域)', '花园里有什么\n(偏科学领域-探究)', '*猴子看猴子做\n(偏艺术领域-音乐)', '*借形想象\n(偏艺术领域-美术)', 'PATHS课程--赞美1(偏社会领域)']


    # 家园共育(导入做参考,实际是自己写)    
    yy=table.cell(13,4).text.split('\n')
    print(yy)
    # ['1、为春游活动做准备。', '2、在家长的帮助下学习折一些纸花。', '3、天气转暖,适当地为孩子减少衣服。']
    # 有些序号是自动编号,不占字数。删除2字符后,可能会少前面几个字
    Y=[]
    for yyy in range(2):    # 一共3条
        Y.append(yy[yyy][2:])         # 不要“1、”、“2、”、“3、”
        list.append(yy[yyy][2:])
    print(Y)
    # ['为春游活动做准备。', '在家长的帮助下学习折一些纸花。', '天气转暖,适当地为孩子减少衣服。']


    # # 反馈与调整(变化很大)不导入
    ff=table.cell(1,8).text.split('\n')
    print(ff)
    for j in range(2):
        # 提取活动1
        list.append(ff[j*4][0:2])    
        # 提取身份1
        list.append(ff[j*4][10:-1])
        print(list)
        # 提取反思1
        list.append(ff[j*4+1])
        print(list)
        # 提取调整1
        list.append(ff[j*4+3])
    # print(list)

    # ['1、观察幼儿是否能通过协商分配角色表演故事《三只蝴蝶》。', '2、观察幼儿是否能看懂图谱,跟着音乐打节奏。']
    # 有些序号是自动编号,不占字数。
    I=[]
    for iii in range(3):    # 一共3条
        I.append(ii[iii][2:])         # 不要“1、”、“2、”、“3、”
        list.append(ii[iii][2:])
    print(I)

    
    print('-----提取第2-5张表格(教案)里面的内容----------')
    # 第1周、第20周,或国庆周会出现格子表格不满的情况,需要手动调整
    for a in range(1,3): # 先提取2张表(  共有3张表,其中第1、2张表提取00和01,第3表提取00)
        for b in range(2):        # 表1有两个格子00 01 表2有两个格子00 01
            
            table = tables[a]        # 表1 表2 
            # 有两张表
            all=table.cell(0,b).text.split('\n')
            print(all)

            # 提取活动名称(删除后面的执教人员)
            title=all[0][5:][:-6]
            list.append(title)
            print(title)
            # 空中小屋

            # 提取活动目标(2行)删除前面的序号
            topic=[]
            for to in range(2,4):    # 行数
                topic.append(all[to][2:])
                list.append(all[to][2:])
            print(topic)
            # ['理解故事,知道春天是竹笋快速生长的季节。', '乐意想办法帮助小狐狸解决问题,并能大胆表达自己的想法。']

            # 提取活动准备(第二种准备,第一种准备需要自己写)
            pre=all[4][5:]
            list.append(pre)
            print(pre)
            # ppt、故事录音

            # 提取活动过程
            pro=all[6:]
            print(pro)
            # # 这是列表样式
            # ['一、我家住几楼---导入主题,激起幼儿兴趣', '1、你们的家住在哪里?住在几楼?为什么买这么高?', '小结:是呀,住这么高的房子可以看到远远的风景。', '2、小狐狸也想住楼房,楼上的房间高高的,远远望去 
            # ,可以看见一片美景,那该多开心。', '二、房
            # 合并列表
            PRO='\n'.join(pro)
            print(PRO)
            list.append(PRO)
            # 一、我家住几楼---导入主题,激起幼儿兴趣
            # 1、你们的家住在哪里?住在几楼?为什么买这么高?
            # 小结:是呀,住这么高的房子可以看到远远的风景。
            # 2、小狐狸也想住楼房,楼上的房间高高的,远远望去,可以看见一片美景,那该多开心。
            # 二、房子造在哪?---分段欣赏

    for a in range(3,4): # 最后提取第3张表的00部分
        for b in range(1):        # 表1有两个格子00 01 表2有两个格子00 01
            
            table = tables[a]        # 表1 表2 
            # 有两张表
            all=table.cell(0,b).text.split('\n')
            print(all)

            # 提取活动名称(删除后面的执教人员)
            title=all[0][5:][:-6]
            list.append(title)
            print(title)
            # 空中小屋

            # 提取活动目标(2行)删除前面的序号
            topic=[]
            for t in range(2,4):    # 行数
                topic.append(all[t][2:])
                list.append(all[t][2:])
            print(topic)
            # ['理解故事,知道春天是竹笋快速生长的季节。', '乐意想办法帮助小狐狸解决问题,并能大胆表达自己的想法。']

            # 提取活动准备(第二种准备,第一种准备需要自己写)
            pre=all[4][5:]
            list.append(pre)
            print(pre)
            # ppt、故事录音

            # 提取活动过程
            pro=all[6:]
            print(pro)
            # # 这是列表样式
            # ['一、我家住几楼---导入主题,激起幼儿兴趣', '1、你们的家住在哪里?住在几楼?为什么买这么高?', '小结:是呀,住这么高的房子可以看到远远的风景。', '2、小狐狸也想住楼房,楼上的房间高高的,远远望去 
            # ,可以看见一片美景,那该多开心。', '二、房
            # 合并列表
            PRO='\n'.join(pro)
            print(PRO)
            list.append(PRO)
            # 一、我家住几楼---导入主题,激起幼儿兴趣
            # 1、你们的家住在哪里?住在几楼?为什么买这么高?
            # 小结:是呀,住这么高的房子可以看到远远的风景。
            # 2、小狐狸也想住楼房,楼上的房间高高的,远远望去,可以看见一片美景,那该多开心。
            # 二、房子造在哪?---分段欣赏


    for c in range(2):        # 表3的01有两个上下格子  表2有两个格子00 01
        
        table = tables[3]        # 表3
        # 有两张表
        fs=table.cell(c,1).text.split('\n')
        print(fs)
        # 提取反思的课程名字
        # 提取活动名称(删除后面的执教人员)
        fstitle=fs[1][4:][:-6]
        list.append(fstitle)
    
        # 纯反思部分(第三行开始)    
        fs1=fs[2:]
        print(fs1)
        fs3=[]
        for i in range(len(fs1)):
            fs4='         '+fs1[i]        # 主动添加缩进2字符
            print(fs4)
            fs3.append(fs4)

        # 合并列表
        fs2='\n'.join(fs3)
        print(fs2)
        list.append(fs2)


        

    print(list)   


    for g in range(len(list)):
        # K =[1,3,4,6,8,10]#要写入的列表的值
        sheet1.write(n,g,list[g])#写入数据参数对应 行,列,值

    n+=1
f.save(r'D:\test\02办公类\90周计划4份\04 周计划\大8旧版周计划提取信息.xls')#保存.x1s到当前工作目录


doc.save(path)


               

二、提取旧模板(doc旧模板,内容要补充)

过去做的都是大班一套上下学期,这次我是中班,就要重新找中班以前的教案集合进行修改

(以前的教案基本都是doc格式、而且周数是一位数)

【办公类-22-04】周计划系列(4)-生成“周计划”(提取旧docx指定段落的内容,写入EXCLE模板,再次生成新docx)

 旧样式【办公类-22-04】周计划系列(4)-生成“周计划”(提取旧docx指定段落的内容,写入EXCLE模板,再次生成新docx)

 新样式

【办公类-22-04】周计划系列(4)-生成“周计划”(提取旧docx指定段落的内容,写入EXCLE模板,再次生成新docx)

 (新模板框架变化不大,但是里面填写内容很细碎、人工书写一定有很多的遗漏,用Python批量做可以批量统一处理这些细节——如字体、段落、居中、缩进等等。大大减少遗漏率

【办公类-22-04】周计划系列(4)-生成“周计划”(提取旧docx指定段落的内容,写入EXCLE模板,再次生成新docx)

from docx import Document

import os

pathall=[]
path =r'D:\test\02办公类\90周计划4份\04 周计划\01周计划备课(已改+随机调整)'
for file_name in os.listdir(path):
    print(path+'\\'+file_name)
    pathall.append(path+'\\'+file_name)
print(pathall)
print(len(pathall))# 19

# 新建EXCEL
import xlwt 
f = xlwt.Workbook('encoding = utf-8')#设置工作簿编码
sheet1 = f.add_sheet('sheet1',cell_overwrite_ok=True)#创建sheet工作表

n=1
for t in range(len(pathall)):    # 19份19行
    path=pathall[t]

    doc = Document(path)

    # 获取所有表格对象
    tables = doc.tables
    # 获取word中第一个表格(周计划表)
    table = tables[0]


    print('-----提取第1张表格(周计划表)里面的内容----------')

    list=[]
    # 生活名称
    l = table.cell(1,4).text
    print(l)
    # 吃点心
    list.append(l)
    # 生活说明(1格2行,分开) (导入做参考,实际是自己写)
    ll=table.cell(2,4).text.split('\n')
    print(ll)
    # ['1、观察幼儿在吃点心时是否能熟练地使用夹子夹取饼干。', '2、提醒个别幼儿喝完牛奶擦嘴巴。']
    # 不要“1、”、“2、”
    L=[]
    for lll in range(2):    # 一共2条
        L.append(ll[lll][2:])      #    # 不要“1、”、“2、”
        list.append(ll[lll][2:])   
    print(L)
    # ['观察幼儿在吃点心时是否能熟练地使用夹子夹取饼干。', '提醒个别幼儿喝完牛奶擦嘴巴。']

    # 运动=集体游戏+分散游戏 不导入,每年都在更换

    # 运动观察与指导(导入做参考,实际是自己写)
    s=table.cell(5,4).text.split('\n')
    print(s)
    # ['观察幼儿是否能双手握住曲棍杆将皮球打出一定距离。', '观察幼儿是否能寻找皮球的多种玩法。', '3、提醒幼儿注意打曲棍干的安全。']
    # 有些序号是自动编号,不占字数。
    S=[]
    for sss in range(3):    # 一共3条
        S.append(s[sss][2:])         # 不要“1、”、“2、”、“3、”
        list.append(s[sss][2:])
    print(S)
    # ['幼儿是否能双手握住曲棍杆将皮球打出一定距离。', '幼儿是否能寻找皮球的多种玩法。', '提醒幼儿注意打曲棍干的安全。']

    # 游戏内容 不导入,每年都在更换
    # 游戏观察与指导(导入做参考,实际是自己写)
    g=table.cell(8,4).text.split('\n')
    print(g)
    # ['1、观察娃娃家的幼儿是否会照顾娃娃,与娃娃互动。', '2、重点观察医生在小医院游戏中,与病人的互动时能否加上一些肢体动作。', '3、观察幼儿角色游戏结束后,能否帮助其他伙伴一同整理材料。']
    # 有些序号是自动编号,不占字数。
    G=[]
    for ggg in range(3):    # 一共3条
        G.append(g[ggg][2:])         # 不要“1、”、“2、”、“3、”
        list.append(g[ggg][2:]) 
    print(G)
    # ['观察娃娃家的幼儿是否会照顾娃娃,与娃娃互动。', '重点观察医生在小医院游戏中,与病人的互动时能否加上一些肢体动作。', '观察幼儿角色游戏结束后,能否帮助其他伙伴一同整理材料。']

    # 主题和主题说明
    t=table.cell(9,4).text.split('\n')
    print(t)

    # ['春天来了', '1、了解春天是个万物生长的季节,关注自然环境的不断变化。', '2、感受大自然美丽的景像,以各种方式表达自己的情感与体验。']
    # 有些序号是自动编号,不占字数。
    T=[]# 第1个春天来了,不需要删除序号,直接添加
    T.append(t[0])
    list.append(t[0])
    for ttt in range(1,3):    # 一共2条主题说明
        T.append(t[ttt][2:])         # 不要“1、”、“2、”、
        list.append(t[ttt][2:])
    print(T)
    # ['春天来了', '了解春天是个万物生长的季节,关注自然环境的不断变化。', '感受大自然美丽的景像,以各种方式表达自己的情感与体验。']

    # 个别化内容(3-5项) 一行多个,全部写入
    iiii=table.cell(10,4).text.split('\n')
    print(iiii)
    list.append(iiii)
    # ['三只蝴蝶、找蝴蝶、柳树姑娘的头发、春雨沙沙等']

    # 个别化观察与指导(导入做参考,实际是自己写)
    ii=table.cell(11,4).text.split('\n')
    print(ii)
    # ['1、观察幼儿是否能通过协商分配角色表演故事《三只蝴蝶》。', '2、观察幼儿是否能看懂图谱,跟着音乐打节奏。']
    # 有些序号是自动编号,不占字数。
    I=[]
    for iii in range(2):    # 一共3条
        I.append(ii[iii][2:])         # 不要“1、”、“2、”、“3、”
        list.append(ii[iii][2:])
    print(I)
    # ['观察幼儿是否能通过协商分配角色表演故事《三只蝴蝶》。', '观察幼儿是否能看懂图谱,跟着音乐打节奏。']

    # 集体学习 横向五个格子
    K =[]
    for e in range(4,9):
        k = table.cell(12,e).text
        K.append(k)        
        list.append(k)
    print(K)
    ['空中小屋\n(偏语言领域)', '花园里有什么\n(偏科学领域-探究)', '*猴子看猴子做\n(偏艺术领域-音乐)', '*借形想象\n(偏艺术领域-美术)', 'PATHS课程--赞美1(偏社会领域)']

    # 家园共育(导入做参考,实际是自己写)
    # 个别化观察与指导(导入做参考,实际是自己写)
    yy=table.cell(13,4).text.split('\n')
    print(yy)
    # ['1、为春游活动做准备。', '2、在家长的帮助下学习折一些纸花。', '3、天气转暖,适当地为孩子减少衣服。']
    # 有些序号是自动编号,不占字数。删除2字符后,可能会少前面几个字
    Y=[]
    for yyy in range(2):    # 一共3条
        Y.append(yy[yyy][2:])         # 不要“1、”、“2、”、“3、”
        list.append(yy[yyy][2:])
    print(Y)
    # ['为春游活动做准备。', '在家长的帮助下学习折一些纸花。', '天气转暖,适当地为孩子减少衣服。']

    # 反馈与调整(变化很大)不导入
    print('-----提取第2-5张表格(教案)里面的内容----------')
    # 第1周、第20周,或国庆周会出现格子表格不满的情况,需要手动调整
    for a in range(1,3): # 先提取2张表(  共有3张表,其中第1、2张表提取00和01,第3表提取00)
        for b in range(2):        # 表1有两个格子00 01 表2有两个格子00 01
            
            table = tables[a]        # 表1 表2 
            # 有两张表
            all=table.cell(0,b).text.split('\n')
            print(all)

            # 提取活动名称(删除后面的执教人员)
            title=all[0][5:][:-6]
            list.append(title)
            print(title)
            # 空中小屋

            # 提取活动目标(2行)删除前面的序号
            topic=[]
            for t in range(2,4):    # 行数
                topic.append(all[t][2:])
                list.append(all[t][2:])
            print(topic)
            # ['理解故事,知道春天是竹笋快速生长的季节。', '乐意想办法帮助小狐狸解决问题,并能大胆表达自己的想法。']

            # 提取活动准备(第二种准备,第一种准备需要自己写)
            pre=all[4][5:]
            list.append(pre)
            print(pre)
            # ppt、故事录音

            # 提取活动过程
            pro=all[6:]
            print(pro)
            # # 这是列表样式
            # ['一、我家住几楼---导入主题,激起幼儿兴趣', '1、你们的家住在哪里?住在几楼?为什么买这么高?', '小结:是呀,住这么高的房子可以看到远远的风景。', '2、小狐狸也想住楼房,楼上的房间高高的,远远望去 
            # ,可以看见一片美景,那该多开心。', '二、房
            # 合并列表
            PRO='\n'.join(pro)
            print(PRO)
            list.append(PRO)
            # 一、我家住几楼---导入主题,激起幼儿兴趣
            # 1、你们的家住在哪里?住在几楼?为什么买这么高?
            # 小结:是呀,住这么高的房子可以看到远远的风景。
            # 2、小狐狸也想住楼房,楼上的房间高高的,远远望去,可以看见一片美景,那该多开心。
            # 二、房子造在哪?---分段欣赏

    for a in range(3,4): # 最后提取第3张表的00部分
        for b in range(1):        # 表1有两个格子00 01 表2有两个格子00 01
            
            table = tables[a]        # 表1 表2 
            # 有两张表
            all=table.cell(0,b).text.split('\n')
            print(all)

            # 提取活动名称(删除后面的执教人员)
            title=all[0][5:][:-6]
            list.append(title)
            print(title)
            # 空中小屋

            # 提取活动目标(2行)删除前面的序号
            topic=[]
            for t in range(2,4):    # 行数
                topic.append(all[t][2:])
                list.append(all[t][2:])
            print(topic)
            # ['理解故事,知道春天是竹笋快速生长的季节。', '乐意想办法帮助小狐狸解决问题,并能大胆表达自己的想法。']

            # 提取活动准备(第二种准备,第一种准备需要自己写)
            pre=all[4][5:]
            list.append(pre)
            print(pre)
            # ppt、故事录音

            # 提取活动过程
            pro=all[6:]
            print(pro)
            # # 这是列表样式
            # ['一、我家住几楼---导入主题,激起幼儿兴趣', '1、你们的家住在哪里?住在几楼?为什么买这么高?', '小结:是呀,住这么高的房子可以看到远远的风景。', '2、小狐狸也想住楼房,楼上的房间高高的,远远望去 
            # ,可以看见一片美景,那该多开心。', '二、房
            # 合并列表
            PRO='\n'.join(pro)
            print(PRO)
            list.append(PRO)
            # 一、我家住几楼---导入主题,激起幼儿兴趣
            # 1、你们的家住在哪里?住在几楼?为什么买这么高?
            # 小结:是呀,住这么高的房子可以看到远远的风景。
            # 2、小狐狸也想住楼房,楼上的房间高高的,远远望去,可以看见一片美景,那该多开心。
            # 二、房子造在哪?---分段欣赏


    for c in range(2):        # 表3的01有两个上下格子  表2有两个格子00 01
        
        table = tables[3]        # 表3
        # 有两张表
        fs=table.cell(c,1).text.split('\n')
        print(fs)
        # 提取反思的课程名字
        # 提取活动名称(删除后面的执教人员)
        fstitle=fs[1][4:][:-6]
        list.append(fstitle)
    
        # 纯反思部分(第三行开始)    
        fs1=fs[2:]
        print(fs1)
        fs3=[]
        for i in range(len(fs1)):
            fs4='         '+fs1[i]        # 主动添加缩进2字符
            print(fs4)
            fs3.append(fs4)

        # 合并列表
        fs2='\n'.join(fs3)
        print(fs2)
        list.append(fs2)


        

    print(list)   


    for g in range(len(list)):
        # K =[1,3,4,6,8,10]#要写入的列表的值
        sheet1.write(n,g,list[g])#写入数据参数对应 行,列,值

    n+=1
f.save(r'D:\test\02办公类\90周计划4份\04 周计划\旧版周计划提取信息.xls')#保存.x1s到当前工作目录


doc.save(path)


               

三、生成本学期本班用周计划20份

【办公类-22-04】周计划系列(4)-生成“周计划”(提取旧docx指定段落的内容,写入EXCLE模板,再次生成新docx)

# 一、导入相关模块,设定excel所在文件夹和生成word保存的文件夹
from docxtpl import DocxTemplate
import pandas as pd
import os
zpath=os.getcwd()+'\\'
zpath=r'D:\test\02办公类\90周计划4份\04 周计划'+'\\'
# zpath=r'D:\test\05批量改名字程序\00周计划批量'+'\\'

# 生成的新周计划所在文件夹
file_path=zpath+r'\03 新周计划生成(原版)'


# 二、遍历excel,逐个生成word(WeeklyPlan.docx.docx是前面的模板)
try:
    os.mkdir(file_path)
except:
    pass

tpl = DocxTemplate(zpath+'05 WeeklyPlan.docx')
WeeklyPlan = pd.read_excel(zpath+'06 WeeklyPlan.xlsx')
grade = WeeklyPlan["grade"].str.rstrip()
classnum =WeeklyPlan["classnum"] # 没有str.rstrip()是数字格式
weekhan =WeeklyPlan["weekhan"].str.rstrip() # str.rstrip()都是文字格式
# day=WeeklyPlan["day"].str.rstrip() 
sc =WeeklyPlan["sc"].str.rstrip() 
datelong =WeeklyPlan["datelong"].str.rstrip() 
dateshort=WeeklyPlan["dateshort"].str.rstrip() 
weekshu=WeeklyPlan["weekshu"]# 没有str.rstrip()是数字格式
day1 = WeeklyPlan["day1"].str.rstrip() 
day2 = WeeklyPlan["day3"].str.rstrip() 
day3 = WeeklyPlan["day3"].str.rstrip() 
day4 = WeeklyPlan["day4"].str.rstrip() 
day5 = WeeklyPlan["day5"].str.rstrip() 
T1 = WeeklyPlan["T1"].str.rstrip() 
T2 = WeeklyPlan["T2"].str.rstrip()
life = WeeklyPlan["life"].str.rstrip() 
life1 = WeeklyPlan["life1"].str.rstrip() 
life2 = WeeklyPlan["life2"].str.rstrip()
sportcon1 = WeeklyPlan["sportcon1"].str.rstrip() 
sportcon2 = WeeklyPlan["sportcon2"].str.rstrip()
sportcon3 = WeeklyPlan["sportcon3"].str.rstrip() 
sportcon4 = WeeklyPlan["sportcon4"].str.rstrip()
sportcon5 = WeeklyPlan["sportcon5"].str.rstrip() 

sport1 = WeeklyPlan["sport1"].str.rstrip() 
sport2 = WeeklyPlan["sport2"].str.rstrip() 
sport3 = WeeklyPlan["sport3"].str.rstrip() 
sport4 = WeeklyPlan["sport4"].str.rstrip() 
sport5 = WeeklyPlan["sport5"].str.rstrip() 
sportzd1 = WeeklyPlan["sportzd1"].str.rstrip() 
sportzd2 = WeeklyPlan["sportzd2"].str.rstrip()
sportzd3 = WeeklyPlan["sportzd3"].str.rstrip()
game1 = WeeklyPlan["game1"].str.rstrip() 
game2 = WeeklyPlan["game2"].str.rstrip() 
game3 = WeeklyPlan["game3"].str.rstrip() 
game4 = WeeklyPlan["game4"].str.rstrip() 
game5 = WeeklyPlan["game5"].str.rstrip() 
gamezd1 = WeeklyPlan["gamezd1"].str.rstrip() 
gamezd2 = WeeklyPlan["gamezd2"].str.rstrip() 
theme= WeeklyPlan["theme"].str.rstrip() 
theme1= WeeklyPlan["theme1"].str.rstrip() 
theme2= WeeklyPlan["theme2"].str.rstrip() 
gbstudy = WeeklyPlan["gbstudy"].str.rstrip()
art = WeeklyPlan["art"].str.rstrip()
gbstudy1 = WeeklyPlan["gbstudy1"].str.rstrip() 
gbstudy2 = WeeklyPlan["gbstudy2"].str.rstrip() 
gbstudy3 = WeeklyPlan["gbstudy3"].str.rstrip() 
jtstudy1 = WeeklyPlan["jtstudy1"].str.rstrip() 
jtstudy2 = WeeklyPlan["jtstudy2"].str.rstrip() 
jtstudy3 = WeeklyPlan["jtstudy3"].str.rstrip() 
jtstudy4 = WeeklyPlan["jtstudy4"].str.rstrip() 
jtstudy5 = WeeklyPlan["jtstudy5"].str.rstrip() 
gy1 = WeeklyPlan["gy1"].str.rstrip()
gy2 = WeeklyPlan["gy2"].str.rstrip()
fk1	= WeeklyPlan["fk1"].str.rstrip()
pj11 = WeeklyPlan["pj11"].str.rstrip()
fk1nr = WeeklyPlan["fk1nr"].str.rstrip()
fk1tz = WeeklyPlan["fk1tz"].str.rstrip()
fk2 = WeeklyPlan["fk2"].str.rstrip()
pj21= WeeklyPlan["pj21"].str.rstrip()
fk2nr = WeeklyPlan["fk2nr"].str.rstrip()
fk2tz = WeeklyPlan["fk2tz"].str.rstrip()

title1 = WeeklyPlan["title1"].str.rstrip()
topic11 = WeeklyPlan["topic11"].str.rstrip()
topic12 = WeeklyPlan["topic12"].str.rstrip()
pre1 = WeeklyPlan["pre1"].str.rstrip()
j1gc= WeeklyPlan["j1gc"].str.rstrip()

title2 = WeeklyPlan["title2"].str.rstrip()
topic21 = WeeklyPlan["topic21"].str.rstrip()
topic22 = WeeklyPlan["topic22"].str.rstrip()
pre2 = WeeklyPlan["pre2"].str.rstrip()
j2gc= WeeklyPlan["j2gc"].str.rstrip()

title3 = WeeklyPlan["title3"].str.rstrip()
topic31 = WeeklyPlan["topic31"].str.rstrip()
topic32 = WeeklyPlan["topic32"].str.rstrip()
pre3 = WeeklyPlan["pre3"].str.rstrip()
j3gc= WeeklyPlan["j3gc"].str.rstrip()

title4 = WeeklyPlan["title4"].str.rstrip()
topic41 = WeeklyPlan["topic41"].str.rstrip()
topic42 = WeeklyPlan["topic42"].str.rstrip()
pre4 = WeeklyPlan["pre4"].str.rstrip()
j4gc= WeeklyPlan["j4gc"].str.rstrip()

title5 = WeeklyPlan["title5"].str.rstrip()
topic51 = WeeklyPlan["topic51"].str.rstrip()
topic52 = WeeklyPlan["topic52"].str.rstrip()
pre5 = WeeklyPlan["pre5"].str.rstrip()
j5gc= WeeklyPlan["j5gc"].str.rstrip()

fs1 = WeeklyPlan["fs1"].str.rstrip()
fs11= WeeklyPlan["fs11"].str.rstrip()
fs2= WeeklyPlan["fs2"].str.rstrip()
fs21= WeeklyPlan["fs21"].str.rstrip()

# 遍历excel行,逐个生成
num = WeeklyPlan.shape[0]
for i in range(num):
    context = {
        "grade": grade[i],
        "classnum": classnum[i],
        "weekhan": weekhan[i],
        # "day": day[i],
        "sc": sc[i],
        "datelong": datelong[i],
        "dateshort": dateshort[i],
        "weekshu": weekshu[i], 
        "day1": day1[i],
        "day2": day2[i],
        "day3": day3[i], 
        "day4": day4[i],
        "day5": day5[i],
        "T1": T1[i],  
        "T2": T2[i],
        "life": life[i],
        "life1": life1[i],
        "life2": life2[i],
        "sportcon1": sportcon1[i],
        "sportcon2": sportcon2[i],
        "sportcon3": sportcon3[i],
        "sportcon4": sportcon4[i],
        "sportcon5": sportcon5[i],
        "weekshu": weekshu[i], 
        "sport1": sport1[i],
        "sport2": sport2[i],
        "sport3": sport3[i], 
        "sport4": sport4[i],
        "sport5": sport5[i],
        "sportzd1": sportzd1[i],  
        "sportzd2": sportzd2[i],
        "sportzd3": sportzd3[i],  
        "game1": game1[i],
        "game2": game2[i],
        "game3": game3[i], 
        "game4": game4[i],
        "game5": game5[i],
        "gamezd1": gamezd1[i],
        "gamezd2": gamezd2[i],
        "theme": theme[i],
        "theme1": theme1[i],
        "theme2": theme2[i],
        "gbstudy": gbstudy[i],
        "art": art[i],
        "gbstudy1": gbstudy1[i], 
        "gbstudy2": gbstudy2[i], 
        "gbstudy3": gbstudy3[i], 
        "jtstudy1": jtstudy1[i],
        "jtstudy2": jtstudy2[i],
        "jtstudy3": jtstudy3[i],  
        "jtstudy4": jtstudy4[i],
        "jtstudy5": jtstudy5[i],  
        "gy1": gy1[i],
        "gy2": gy2[i],
        "fk1": fk1[i],
        "pj11": pj11[i], 
        "fk1nr": fk1nr[i],
        "fk1tz": fk1tz[i],
        "fk2": fk2[i],
        "pj21": pj21[i],
        "fk2nr": fk2nr[i],
        "fk2tz":fk2tz[i], 
        "title1":title1[i],   
        "topic11":topic11[i],   
        "topic12":topic12[i],   
        "pre1":pre1[i],   
        "j1gc": j1gc[i],
        "title2":title2[i],   
        "topic21":topic21[i],   
        "topic22":topic22[i],   
        "pre2":pre2[i],   
        "j2gc": j2gc[i],
        "title3":title3[i],   
        "topic31":topic31[i],   
        "topic32":topic32[i],   
        "pre3":pre3[i],   
        "j3gc": j3gc[i],
        "title4":title4[i],   
        "topic41":topic41[i],   
        "topic42":topic42[i],   
        "pre4":pre4[i],   
        "j4gc": j4gc[i],
        "title5":title5[i],   
        "topic51":topic51[i],   
        "topic52":topic52[i],   
        "pre5":pre5[i],   
        "j5gc": j5gc[i],
        "fs1": fs1[i],
        "fs11": fs11[i],
        "fs2": fs2[i],
        "fs21": fs21[i]																	
    
    }
    tpl = DocxTemplate(zpath+'05 WeeklyPlan.docx')
    tpl.render(context)
    tpl.save(file_path+r"\{} 第{}周 周计划({})({}{}班下学期).docx".format('%02d'%weekshu[i],weekhan[i],sc[i],grade[i],classnum[i]))

四、把周计划第一页(周计划部分)变成图片(上传园园通)

【办公类-22-04】周计划系列(4)-生成“周计划”(提取旧docx指定段落的内容,写入EXCLE模板,再次生成新docx)

【办公类-22-04】周计划系列(4)-生成“周计划”(提取旧docx指定段落的内容,写入EXCLE模板,再次生成新docx)

 【办公类-22-04】周计划系列(4)-生成“周计划”(提取旧docx指定段落的内容,写入EXCLE模板,再次生成新docx)

 

'''
作者:毛毛 
性质:转载
原网址 https://zhuanlan.zhihu.com/p/367985422

安装python,确保以下模块已经安装:win32com,fitz,re
在桌面新建文件夹,命名为:word2pdf2png
将需要转换的word(只能docx格式,可以多个)放入文件夹word2pdf2png
复制以下代码并运行。

本代码只生成png 文件夹内只有一级,子文件不生成

说明:
1、
2、把“03 新周计划生成(原版)”的内容复制到“04 新周计划(没有反思的打印)”
3、把“04 新周计划(没有反思的打印)”内容复制到“05 新周计划(没有反思的jpg上传)”
4、然后“05 新周计划(没有反思的jpg上传)”文件夹删除并生成第一张无反思的图片20份
5、空余时间。把““03 新周计划生成(原版)”文件夹的内容复制到“08 新周计划生成(手动修改-准)”文件夹,手动修改
(1)周计划第一页反思(限定在一页内)
(2)教案等
'''
#coding=utf-8
from win32com.client import Dispatch
import os
import re
import fitz
wdFormatPDF = 17 #转换的类型
zoom_x=2 #尺寸大小,越大图片越清晰 5超大,这里改成2
zoom_y=2 #尺寸大小,越大图片越清晰,长宽保持一致
rotation_angle=0#旋转的角度,0为不旋转

# import os
# #导入os模块
# save_path=r"D:\test\02办公类\90周计划4份\04 周计划\03 docx to jpg"
# #在桌面上创建文件夹
# if os.path.exists(save_path):#判断文件夹是否存在
#     print(f'文件夹{save_path}已存在!')
# else:
#     print(f'文件夹{save_path}不存在,可以创建')
#     os.mkdir(save_path)#创建文件夹

# 把(原版)文件夹里的资料复制到(没有反思的打印)
#coding=utf-8
import os
import shutil

old_path = r'D:\test\02办公类\90周计划4份\04 周计划\03 新周计划生成(原版)'  # 要复制的文件所在目录
new_path = r'D:\test\02办公类\90周计划4份\04 周计划\04 新周计划(没有反思的打印)'  #新路径

def FindFile(path):
    for ipath in os.listdir(path):
        fulldir = os.path.join(path, ipath)  # 拼接成绝对路径
        print(fulldir)         #打印相关后缀的文件路径及名称
        if os.path.isfile(fulldir):  # 文件,匹配->打印
            shutil.copy(fulldir,new_path)
        if os.path.isdir(fulldir):  # 目录,递归   
            FindFile(fulldir)

FindFile(old_path)

# 把(没有反思的打印)文件夹里面所有的文档中的1,8格子里面的内容全部删除(不要反思)

from docx import Document
import os

pathall=[]
path =r'D:\test\02办公类\90周计划4份\04 周计划\04 新周计划(没有反思的打印)' 
for file_name in os.listdir(path):
    print(path+'\\'+file_name)
    pathall.append(path+'\\'+file_name)
print(pathall)
print(len(pathall))# 19


for h in range(len(pathall)):    # 19份19行
    path=pathall[h]
    doc = Document(path)
    # 获取所有表格对象
    tables = doc.tables
    # 获取word中第一个表格(周计划表)
    table = tables[0]    
    # # 反馈与调整(变化很大)不导入
    table.cell(1,8).text=' '
    doc.save(path)    # 重新保存docx(此时没有反思)

# 把“没有反思的docx”复制到“JPG上传”文件夹里
import os
import shutil

old_path2 = r'D:\test\02办公类\90周计划4份\04 周计划\04 新周计划(没有反思的打印)'  # 要复制的文件所在目录
new_path2 = r'D:\test\02办公类\90周计划4份\04 周计划\05 新周计划(没有反思的jpg上传)'  #新路径

def FindFile2(path2):
    for ipath2 in os.listdir(path2):
        fulldir2 = os.path.join(path2, ipath2)  # 拼接成绝对路径
        print(fulldir2)         #打印相关后缀的文件路径及名称
        if os.path.isfile(fulldir2):  # 文件,匹配->打印
            shutil.copy(fulldir2,new_path2)
        if os.path.isdir(fulldir2):  # 目录,递归   
            FindFile(fulldir2)

FindFile2(old_path2)

#生成PDF和图片
def doc2pdf2png(input_file):

    for root, dirs, files in os.walk(input_file):
        for file in files:
            if re.search('\.(docx|doc)$', file):
                filename = os.path.abspath(root + "\\" + file)
                print('filename', filename)
                word = Dispatch('Word.Application')
                doc = word.Documents.Open(filename)
                doc.SaveAs(filename.replace(".docx", ".pdf"), FileFormat=wdFormatPDF)
                doc.Close()
        word.Quit()

    for root, dirs, files in os.walk(input_file):
        for file in files:
            if re.search('\.pdf$', file):
                filename = os.path.abspath(root + "\\" + file)
                print('filename', filename)
                # 打开PDF文件
                pdf = fitz.open(filename)
                # 逐页读取PDF
                for pg in range(0, pdf.pageCount):
                    page = pdf[pg]
                    # 设置缩放和旋转系数
                    trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotation_angle)
                    pm = page.getPixmap(matrix=trans, alpha=False)
                    # 开始写图像
                    pm.writePNG(filename.replace('.pdf', '') + str(pg+1) + ".png")
                pdf.close()

doc2pdf2png(r'D:\test\02办公类\90周计划4份\04 周计划\05 新周计划(没有反思的jpg上传)')

# 删除生成文件PDF  和 生成文件docx
for parent, dirnames, filenames in os.walk('D:/test/02办公类/90周计划4份/04 周计划/05 新周计划(没有反思的jpg上传)'):
    for fn in filenames:
        if fn.lower().endswith('.pdf'):
            os.remove(os.path.join(parent, fn))
        if fn.lower().endswith('.docx'):# 删除原始文件docx 正则[pdf|docx]套不上,只能分成两条了
            os.remove(os.path.join(parent, fn))
           
# 删除png中,尾号是2-8的png(Word只要第一页,后面生成的第二页图片不要
for parent, dirnames, filenames in os.walk('D:/test/02办公类/90周计划4份/04 周计划/05 新周计划(没有反思的jpg上传)'):
        for fn in filenames:
            for k in range(2,9):                # png文件名的尾数是2,3,4,5,6,7,8 不确定共有几页,可以把9这个数字写大一点)
                if fn.lower().endswith(f'{k}.png'):  # 删除尾号为2,3,4,5,6,7,8的png图片 f{k}='{}'.formart(k) 
                    os.remove(os.path.join(parent, fn))

到了这里,关于【办公类-22-04】周计划系列(4)-生成“周计划”(提取旧docx指定段落的内容,写入EXCLE模板,再次生成新docx)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【ubuntu|内核】ubuntu 22.04修改内核为指定版本

    every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?type=blog ubuntu 22.04 安装指定内核 查看已安装的内核镜像 安装镜像 安装内核头文件 安装内核模块 安装驱动 出现问题修复: 检查是否安装成功 安装完成后修改配置 找到GRUB_DEFAULT=0,修改为: 保存退出后:

    2024年02月04日
    浏览(48)
  • 第八篇【传奇开心果系列】Python自动化办公库技术点案例示例:深度解读使用Python库清洗处理从PDF文件提取的文本

    在使用pyPDF4或任何其他Python的PDF解析库提取PDF文件的文本后,进行清洗处理是非常重要的。这是因为PDF文件通常包含了各种格式化元素,如页眉、页脚、页码、图表、图片等,这些元素可能会干扰到你提取的文本内容。清洗处理的目标是去除这些干扰元素,仅提取出你真正需

    2024年03月22日
    浏览(61)
  • PVE系列教程(十六)、安装ubuntu server22.04系统

    为了更好的浏览体验,欢迎光顾勤奋的凯尔森同学个人博客http://www.huerpu.cc:7000 一、ubuntu官网下载ubuntu服务器版 二、PVE创建ubuntu server虚拟机 在pve首页点击创建虚拟机,虚拟机名称随便写一个即可。 操作系统这里选择刚刚下载并上传到pve的ubuntu server22.04 系统选择默认 磁盘这

    2023年04月25日
    浏览(47)
  • 【OMNET++网络仿真系列学习笔记-1】Ubuntu 22.04版本安装OMNET++6.0版本及各类报错合集解决方案

    本篇文章记录了22.04版本Ubuntu安装OMNET++6.0版本及各类报错合集解决方案,途中遇到了无数问题,很多问题都无法找到解决方案,好在询问了一下实验室研究生师兄,在他的帮助指导下解决了。感谢师兄! 首先,我们进行下载6.0的压缩包。 一般来说,OMNeT++要求设置某些环境变

    2024年02月02日
    浏览(43)
  • Wordhero AI智能写作工具:购买、攻略、资源 -揭秘如何根据关键词和标题生成段落

    Wordhero AI是我经过仔细对比,实际应用之后获得相应效果之后,坚持使用的AI写作工具。为了持续获得这方面的提升和反馈,我建立了两个渠道去让自己不断获得国内外同样工具使用者的反馈和建议: AI Content Hacker - AI Writing Guide 网站 AI Content Hacker - AI Writing Guide 油管频道 具体

    2024年02月11日
    浏览(84)
  • DocX 生成Word

    当然,这里是一个使用DocX库在.NET Core中操作Word文档的简单示例: 首先,确保你在项目中安装了DocX库。你可以在NuGet包管理器中搜索并安装 DocX 。 然后,使用以下代码来创建一个简单的Word文档并添加一些内容: 在这个示例中,我们首先创建了一个新的Word文档对象,并使用

    2024年02月13日
    浏览(32)
  • Springboot -- 按照模板生成docx、pdf文件,docx转pdf格式

    使用 poi-tl 根据模板生成 word 文件。 使用 xdocreport 将 docx 文件转换为 pdf 文件。 xdocreport 也支持根据模板导出 word ,但是 poi-tl 的功能更齐全,操作更简单,文档清晰。 poi-tl 、xdocreport 内部均依赖了 poi ,要注意两者中 poi 和 自身项目引用的 poi 的版本是否存在冲突。 使用 p

    2024年02月15日
    浏览(38)
  • 【实战分享】js生成word(docx)

    本文将记录如何从纯前端实现生成带图片的表格的word文件,并下载到本地。 docx文档地址 github地址 npm install --save docx 这里的用例最终生成文档内容长这样 如有不满足需求的地方,还是可以上它的官方文档看看,地址再贴一次 希望对大家有所帮助,毕竟我肝文档肝了一天,希望给

    2024年02月16日
    浏览(30)
  • vue 使用docx库生成word表格文档

            在Vue.js中生成Word表格文档,可以通过前端库来实现。这些库可以帮助我们轻松地将HTML表格转换为Word文档(通常是.docx格式)。以下是一些流行的前端库,它们可以用于在Vue项目中生成Word表格文档:                  docx是一个流行的JavaScript库,用于在浏览

    2024年02月21日
    浏览(56)
  • 【办公自动化】使用Python一键提取PDF中的表格到Excel

      🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+ 目录 一、Python处理Excel 二、提取PDF表格到excel 三、往期推荐 文末推荐  文末福利   Pyth

    2024年02月13日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包