猫目男 2022-03-12 07:37 采纳率: 83.3%
浏览 105
已结题

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 09: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(路径)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月20日
  • 已采纳回答 3月12日
  • 赞助了问题酬金10元 3月12日
  • 修改了问题 3月12日
  • 展开全部

悬赏问题

  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装
  • ¥40 复杂的限制性的商函数处理