关闭
猫目男 2022-03-11 23:37 采纳率: 83.3%
浏览 108
已结题

python openpyxl 如何将每个word中提取的数据 一行一行导入到excel中

代码如下,我需要将 第一份文件中的“品名” 和 “j” 放到excel的A1、B1单元格,然后第二份文件中的“品名” 和 “j” 放到A2,B2单元格,以此类推,然而现在每行只会重复第一个文件的“品名” 和 “j” 。

用到的库:openpyxl、docx
python版本:3.8

import docx
import os
import openpyxl as vb
from docx import *

P = 0

for 文件夹路径, 子文件夹路径, 文件列表 in os.walk('这里填入文件夹地址'):
    for i in 文件列表:
        # print(文件夹路径 + "/" + i)
        h = (文件夹路径 + "/" + i)
        P += 1                 #这一段之前是为了拿到每个文件的路径,然后依次打开

        document = Document(h)  # 打开每个文件
        y = len(document.paragraphs)  # 查询每个文件有几个段落
        print('总段落为:' + str(y))

        for o in range(30, y):  # 从第十行开始直到最后一行找出 含有“正式文件” 和 “审批意见”中间的段落数
            T = document.paragraphs[o].text
            if "正式文件" in T:
                # print(T)
                a = o
                print('正式文件在第:' + str(a) + '段')
                a = a + 1
            if "审批意见" in T:
                b = o
                print('审批意见在第:' + str(b) + '段')

                table1 = document.tables[0]
                品名 = table1.cell(0, 1).text
                print(品名)    #拿到每个文件的品名
                j = []
                for g in range(a, b):  
                    k = document.paragraphs[g].text   #拿到 “正式文件” 和 “审批意见”中间的段落
                    j.append(k)    #内容较多,将j添加到list
                print(j)
  
        # 打开excel ,就是下面这块出现了问题
        # 无法将每个文件的内容依次填入每行的第一个单元格和第二个单元格,希望热心网友帮忙解决!


        路径 = '这里填入xlsx的空白excel文件地址'
        工作簿 = vb.load_workbook(路径)
        工作表 = 工作簿['Sheet1']
        u = len(文件列表)
        print(u)

        forin range(1, u + 1):
            品名 = 工作表.cell(行, 1).value    #品名填入每行的第一个单元格
            列表 = 工作表.cell(行, 2).value    # “j”  填入每行的第二个单元格
            行 = 行 + 1
        工作簿.save(路径)

展开全部

  • 写回答

2条回答 默认 最新

  • 陈年椰子 2022-03-12 01:15
    关注

    我按逻辑改了一下程序结构,试试看是否有效
    我没试过用中文名做变量名 , 修改后的代码没测试。

    
    import docx
    import os
    import openpyxl as vb
    from docx import *
    
    P = 0
    
    # 在最开始就打开工作表 
    路径 = '这里填入xlsx的空白excel文件地址'
    工作簿 = vb.load_workbook(路径)
    工作表 = 工作簿['Sheet1']
    行 = 1
    
    
    for 文件夹路径, 子文件夹路径, 文件列表 in os.walk('这里填入文件夹地址'):
        for i in 文件列表:
            # print(文件夹路径 + "/" + i)
            h = (文件夹路径 + "/" + i)
            P += 1  # 这一段之前是为了拿到每个文件的路径,然后依次打开
    
            document = Document(h)  # 打开每个文件
            y = len(document.paragraphs)  # 查询每个文件有几个段落
            print('总段落为:' + str(y))
            # 品名 初始化
            品名 = ""
            j = []
    
            for o in range(30, y):  # 从第十行开始直到最后一行找出 含有“正式文件” 和 “审批意见”中间的段落数
                T = document.paragraphs[o].text
                if "正式文件" in T:
                    # print(T)
                    a = o
                    print('正式文件在第:' + str(a) + '段')
                    a = a + 1
                if "审批意见" in T:
                    b = o
                    print('审批意见在第:' + str(b) + '段')
    
                    table1 = document.tables[0]
                    品名 = table1.cell(0, 1).text
                    print(品名)  # 拿到每个文件的品名
                    
                    for g in range(a, b):
                        k = document.paragraphs[g].text  # 拿到 “正式文件” 和 “审批意见”中间的段落
                        j.append(k)  # 内容较多,将j添加到list
                    print(j)
    
            # 品名 = 工作表.cell(行, 1).value  # 品名填入每行的第一个单元格
            # 列表 = 工作表.cell(行, 2).value  # “j”  填入每行的第二个单元格
            工作表.cell(行, 1).value = 品名
            工作表.cell(行, 2).value = str(j)
            行 = 行 + 1
            # 打开excel ,就是下面这块出现了问题
            # 无法将每个文件的内容依次填入每行的第一个单元格和第二个单元格,希望热心网友帮忙解决!
    
    
            
            u = len(文件列表)
            print(u)
    
            
                
            
    # 最后保存        
    工作簿.save(路径)
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    猫目男 2022-03-12 01:33

    感谢!已经解决!达成目的了!

    回复
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 3月19日
  • 已采纳回答 3月12日
  • 赞助了问题酬金10元 3月12日
  • 修改了问题 3月11日
  • 展开全部
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部