Python实现Word表格自动化转为Excel

Written by

in

文章目录
  • 在开始之前,我们需要确保Python环境已正确配置,并安装所需的库。本文假设您已经安装了Python 3.x 版本。 首先,打开您的命令行工具(如CMD、PowerShell或Terminal),然后使用pip命令安装Spire.Doc for Python和Spire.XLS for Python。这两个库是本次任务的核心,Spire.Doc for Python负责读取和解析Word文档内容,特别是识别和提取表格数据;而Spire.XLS for Python则用于创建、写入和保存Excel文件。 pip install Spire.Doc pip install Spire.XLS 安装完成后,您就可以在Python脚本中导入和使用它们了。
  • 数据提取是整个转换过程的关键一步。我们将使用Spire.Doc for Python来加载Word文档,并遍历文档中的所有表格,逐一提取其内容。 以下是一个示例Word文档: 我们将编写代码来识别并提取这些数据。 from spire.doc import * from spire.doc.common import * def extract_tables_from_word(word_file_path): “”” 从Word文档中提取所有表格数据。 返回一个列表,其中每个元素代表一个表格,表格内部是行的列表,行内部是单元格内容的列表。 “”” document = Document() document.LoadFromFile(word_file_path) all_tables_data = [] # 遍历文档中的所有节 for sec_index in range(document.Sections.Count): section = document.Sections.get_Item(sec_index) # 遍历节中的所有表格 for table_index in range(section.Tables.Count): table = section.Tables.get_Item(table_index) current_table_data = [] # 遍历表格中的所有行 for row_index in range(table.Rows.Count): table_row = table.Rows.get_Item(row_index) current_row_data = [] # 遍历行中的所有单元格 for cell_index in range(table_row.Cells.Count): table_cell = table_row.Cells.get_Item(cell_index) # 提取单元格文本,并保持单元格内原有段落结构 paras = [table_cell.Paragraphs.get_Item(i).Text.rstrip(‘rn’) for i in range(table_cell.Paragraphs.Count) if table_cell.Paragraphs.get_Item(i).Text.strip()] current_cell_data = “n”.join(paras) current_row_data.append(current_cell_data) current_table_data.append(current_row_data) all_tables_data.append(current_table_data) document.Close() return all_tables_data # 假设您的Word文档名为 ‘input.docx’ 并且在当前目录下 word_file = “input.docx” extracted_data = extract_tables_from_word(word_file) # 打印提取的数据以供验证 for i, table_data in enumerate(extracted_data): print(f”— Table {i + 1} Data —“) for row in table_data: print(row) 控制台输出结果: 代码解析: Document() 实例用于加载Word文档。 document.LoadFromFile() 方法加载指定路径的Word文档。 我们通过 document.Sections 迭代文档中的所有节,再通过 section.Tables 迭代每个节中的所有表格。 对于每个表格,我们进一步迭代 table.Rows 获取行,然后迭代 row.Cells 获取单元格。 cell.Text.strip() 用于获取单元格的纯文本内容,并移除可能存在的额外空白字符。 所有提取的数据都存储在一个嵌套列表中,all_tables_data 是一个包含所有表格数据的列表,每个表格数据又是一个包含行数据的列表,行数据再包含单元格数据的列表。
  • 通过本文的详细教程,我们学习了如何利用Python结合 Spire.Doc for Python 和 Spire.XLS for Python 库,实现Word文档中表格数据到Excel表格的高效自动化转换。这一过程不仅省去了繁琐的手动复制粘贴,显著提升了数据处理效率,还最大程度地减少了人为错误的可能性。 这种自动化能力在多个领域都具有广泛的应用前景,例如: 报告数据整合:从多个Word报告中提取关键数据,汇总到Excel进行分析。 企业数据迁移:将旧的Word文档中的结构化数据批量导入到新的数据库或系统。 日常办公自动化:简化重复性数据录入和格式转换工作,让您有更多时间专注于核心业务。 到此这篇关于Python实现Word表格自动化转为Excel的文章就介绍到这了,更多相关Python Word表格转Excel内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: 使用Python实现将Excel表格插入到Word文档中 Python实现快速提取Word表格并写入Excel 使用python将CSV和Excel表格数据导入到Word表格 利用Python实现读取Word表格计算汇总并写入Excel Python实现将Word表格嵌入到Excel中 Python实现Word表格转成Excel表格的示例代码 使用python批量读取word文档并整理关键信息到excel表格的实例
  • 目录
    • 环境准备与库安装
    • Word表格读取与数据提取
      • 数据写入Excel与文件保存
    • 总结与展望

      在日常工作中,我们经常需要处理各种格式的数据。Word文档以其灵活的排版能力,常用于报告和文档撰写,但当这些文档中包含大量表格数据时,将其用于进一步的数据分析或统计时,手动复制粘贴到Excel无疑是一项耗时且易出错的任务。想象一下,面对几十甚至上百个Word文档中的表格,这种重复性工作效率低下且令人沮丧。

      幸运的是,Python作为一种强大的自动化工具,能够完美解决这一痛点。本文将深入探讨如何利用Python,结合 Spire.Doc for PythonSpire.XLS for Python 这两个库,高效、准确地将Word文档中的表格数据提取并转换为可编辑的Excel表格。通过自动化这一过程,您将能够显著提升工作效率,减少人为错误,并专注于更有价值的数据洞察。

      在开始之前,我们需要确保Python环境已正确配置,并安装所需的库。本文假设您已经安装了Python 3.x 版本。

      首先,打开您的命令行工具(如CMD、PowerShell或Terminal),然后使用pip命令安装Spire.Doc for Python和Spire.XLS for Python。这两个库是本次任务的核心,Spire.Doc for Python负责读取和解析Word文档内容,特别是识别和提取表格数据;而Spire.XLS for Python则用于创建、写入和保存Excel文件。

      pip install Spire.Doc
      pip install Spire.XLS
      

      安装完成后,您就可以在Python脚本中导入和使用它们了。

      数据提取是整个转换过程的关键一步。我们将使用Spire.Doc for Python来加载Word文档,并遍历文档中的所有表格,逐一提取其内容。

      以下是一个示例Word文档:

      我们将编写代码来识别并提取这些数据。

      from spire.doc import *
      from spire.doc.common import *
      
      
      def extract_tables_from_word(word_file_path):
          """
          从Word文档中提取所有表格数据。
          返回一个列表,其中每个元素代表一个表格,表格内部是行的列表,行内部是单元格内容的列表。
          """
          document = Document()
          document.LoadFromFile(word_file_path)
      
          all_tables_data = []
          # 遍历文档中的所有节
          for sec_index in range(document.Sections.Count):
              section = document.Sections.get_Item(sec_index)
              # 遍历节中的所有表格
              for table_index in range(section.Tables.Count):
                  table = section.Tables.get_Item(table_index)
                  current_table_data = []
                  # 遍历表格中的所有行
                  for row_index in range(table.Rows.Count):
                      table_row = table.Rows.get_Item(row_index)
                      current_row_data = []
                      # 遍历行中的所有单元格
                      for cell_index in range(table_row.Cells.Count):
                          table_cell = table_row.Cells.get_Item(cell_index)
                          # 提取单元格文本,并保持单元格内原有段落结构
                          paras = [table_cell.Paragraphs.get_Item(i).Text.rstrip('rn')
                                   for i in range(table_cell.Paragraphs.Count)
                                   if table_cell.Paragraphs.get_Item(i).Text.strip()]
                          current_cell_data = "n".join(paras)
                          current_row_data.append(current_cell_data)
                      current_table_data.append(current_row_data)
                  all_tables_data.append(current_table_data)
      
          document.Close()
          return all_tables_data
      
      
      # 假设您的Word文档名为 'input.docx' 并且在当前目录下
      word_file = "input.docx"
      extracted_data = extract_tables_from_word(word_file)
      
      # 打印提取的数据以供验证
      for i, table_data in enumerate(extracted_data):
          print(f"--- Table {i + 1} Data ---")
          for row in table_data:
              print(row)
      

      控制台输出结果:

      代码解析:

      • Document() 实例用于加载Word文档。
      • document.LoadFromFile() 方法加载指定路径的Word文档。
      • 我们通过 document.Sections 迭代文档中的所有节,再通过 section.Tables 迭代每个节中的所有表格。
      • 对于每个表格,我们进一步迭代 table.Rows 获取行,然后迭代 row.Cells 获取单元格。
      • cell.Text.strip() 用于获取单元格的纯文本内容,并移除可能存在的额外空白字符。
      • 所有提取的数据都存储在一个嵌套列表中,all_tables_data 是一个包含所有表格数据的列表,每个表格数据又是一个包含行数据的列表,行数据再包含单元格数据的列表。

      提取到数据后,下一步就是将其写入Excel文件。我们将使用Spire.XLS for Python来创建新的Excel工作簿,并将提取的数据逐一写入工作表。

      from spire.xls import *
      from spire.xls.common import *
      
      
      def write_data_to_excel(extracted_data, excel_file_path):
          """
          将提取的表格数据写入Excel文件。
          每个Word表格将写入Excel的一个新工作表。
          """
          workbook = Workbook()
          # 清楚默认工作表
          workbook.Worksheets.Clear()
      
          # 如果没有提取到数据,则不创建Excel文件
          if not extracted_data:
              print("没有从Word文档中提取到任何表格数据。")
              return
      
          # 遍历所有提取的表格数据
          for i, table_data in enumerate(extracted_data):
              # 为每个表格创建一个新的工作表
              sheet = workbook.Worksheets.Add(f"Table_{i + 1}")
      
              # 将表格数据写入工作表
              for r_idx, row_data in enumerate(table_data):
                  for c_idx, cell_value in enumerate(row_data):
                      # Excel的行和列索引从1开始
                      sheet.Range[r_idx + 1, c_idx + 1].Value = cell_value
      
              # (可选)应用基本表格格式
              # 如自动对齐列宽
              sheet.AllocatedRange.AutoFitColumns()
      
          # 保存Excel文件
          workbook.SaveToFile(excel_file_path, ExcelVersion.Version2016)
          workbook.Dispose()
          print(f"数据已成功写入到 {excel_file_path}")
      
      # 调用函数将数据写入Excel
      excel_file = "output.xlsx"
      write_data_to_excel(extracted_data, excel_file)
      

      写入效果:

      代码解析:

      • Workbook() 实例用于创建一个新的Excel工作簿。
      • 我们遍历 extracted_data 中的每个Word表格。
      • 对于第一个表格,我们使用 workbook.Worksheets[0] (默认的“Sheet1”),并为其重命名;对于后续表格,则使用 workbook.Worksheets.Add() 创建新的工作表。
      • 然后,我们遍历每个表格的行和单元格数据,使用 sheet.Range[r_idx + 1, c_idx + 1].Value = cell_value 将数据写入Excel单元格。注意,Excel的行和列索引是从1开始的,所以需要 + 1
      • workbook.SaveToFile() 方法将工作簿保存为指定的Excel文件,ExcelVersion.Version2016 指定了保存的Excel版本。

      将上述两个部分的Python代码片段整合在一起,您就拥有了一个完整的Word表格到Excel转换的自动化脚本。

      通过本文的详细教程,我们学习了如何利用Python结合 Spire.Doc for Python 和 Spire.XLS for Python 库,实现Word文档中表格数据到Excel表格的高效自动化转换。这一过程不仅省去了繁琐的手动复制粘贴,显著提升了数据处理效率,还最大程度地减少了人为错误的可能性。

      这种自动化能力在多个领域都具有广泛的应用前景,例如:

      • 报告数据整合:从多个Word报告中提取关键数据,汇总到Excel进行分析。
      • 企业数据迁移:将旧的Word文档中的结构化数据批量导入到新的数据库或系统。
      • 日常办公自动化:简化重复性数据录入和格式转换工作,让您有更多时间专注于核心业务。

      到此这篇关于Python实现Word表格自动化转为Excel的文章就介绍到这了,更多相关Python Word表格转Excel内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

      您可能感兴趣的文章:

      • 使用Python实现将Excel表格插入到Word文档中
      • Python实现快速提取Word表格并写入Excel
      • 使用python将CSV和Excel表格数据导入到Word表格
      • 利用Python实现读取Word表格计算汇总并写入Excel
      • Python实现将Word表格嵌入到Excel中
      • Python实现Word表格转成Excel表格的示例代码
      • 使用python批量读取word文档并整理关键信息到excel表格的实例

      站内搜索