100多个相同格式的word表格,如何一次性提取里面的内容制成一个Excel表?

现有160个word表格,想一次性将里面的内容提取出来制成一个方便查看的Excel表?表头为:姓名、住院号、床号、肝功、肾功、既往史、监护计划等等所有内容题目。然后每个人生成一列,总共160列内容。

第1个回答  2024-08-27

要一次性从160个Word文档中提取表格内容并整合到一个Excel表中,其中每个Word文档的内容占据Excel中的一列,这可以通过编程或利用一些自动化工具来实现。下面是一个基于Python和pandas库的解决方案概述,因为它提供了灵活的数据处理能力和与Excel文件的交互能力。

步骤一:安装必要的Python库

你需要安装python-docx来读取Word文档,以及pandas和openpyxl来处理Excel文件。可以使用pip来安装这些库:

bash复制代码pip install python-docx pandas openpyxl

步骤二:编写Python脚本来提取和整合数据

    遍历Word文档:使用python-docx库遍历所有的Word文档。

    提取表格:从每个Word文档中读取表格内容。

    构建DataFrame:为每个文档的表格内容创建一个pandas DataFrame。

    合并DataFrame:将所有DataFrame合并为一个大的DataFrame,其中每个文档的表格内容成为单独的一列。

    保存Excel文件:使用pandas的to_excel方法将合并后的DataFrame保存为Excel文件。

    示例代码

    这里是一个简化的代码示例,用于说明基本思路。请注意,实际代码可能需要根据你的具体需求(如表格的复杂性、数据的一致性等)进行调整。

    python复制代码

    import pandas as pd    

    from docx import Document    

    # 假设所有Word文档都存放在一个名为'word_files'的文件夹中      

    files = ['word_files/doc1.docx', 'word_files/doc2.docx', ..., 'word_files/doc160.docx']    

    # 初始化一个空的DataFrame,用于存放所有文档的数据      

    all_data = pd.DataFrame()    

    # 遍历文件      

    for file in files:    

    doc = Document(file)    

    # 假设每个文档只有一个表格      

    table = doc.tables[0]    

    # 这里需要根据表格的具体结构来提取数据      

    # 例如,如果每行代表一个记录,每列对应一个字段      

    data = []    

    for row in table.rows:    

    row_data = [cell.text.strip() for cell in row.cells]    

    data.append(row_data)    

    # 假设表头在文档的第一个表格的第一行      

    df = pd.DataFrame(data[1:], columns=data[0])  # 跳过第一行表头      

    # 将当前文档的DataFrame添加到all_data中,每个文档的数据成为一列      

    # 注意:这里需要根据实际情况调整,因为直接将多个DataFrame的列合并成一行可能不是直接可行的      

    # 一种可能的解决方案是将每个DataFrame转置,然后水平合并      

    df_t = df.T  # 转置DataFrame      

    df_t.columns = [f'Doc{files.index(file) + 1}_{col}' for col in df_t.columns]  # 重命名列以区分不同文档      

    all_data = pd.concat([all_data, df_t], axis=1)  # 水平合并      

    # 保存为Excel文件      

    all_data.to_excel('output.xlsx', index=False)    

    注意:

    上面的代码示例中,data[1:] 假设表头在第一行(data[0]),而实际数据从第二行开始。

    如果Word文档中的表格结构复杂(如不同文档的表格列数不同),则直接合并为单一DataFrame可能会有问题。你可能需要编写更复杂的逻辑来处理这些情况,例如只提取特定的列或行。

    如果表格中的数据需要特殊处理(如类型转换、清洗等),你需要在将数据添加到all_data之前进行这些操作。

    代码中使用了pd.concat进行水平合并,但请注意,如果每个文档的表格行数不一致,这种方法可能无法直接工作。你可能需要先填充缺失值或采用其他方法来确保所有DataFrame的行数相同。

相似回答