使用Python在Word中创建和提取表格

打印 上一主题 下一主题

主题 662|帖子 662|积分 1986

目次
安装Python Word库
使用Python在Word中创建预定义行和列的表格
使用Python在Word中动态创建表格
使用Python在Word中提取表格数据

Word 文档中的表格是一种强盛且机动的数据构造和展示工具,它能将信息以行和列的形式有序地排列,使文档内容更加清晰易读。通过创建表格,我们可以轻松地将数据以结构化的方式出现出来,而提取表格数据则为后续的数据分析和二次利用提供了便利。这篇文章将探讨怎样使用Python在Word文档中创建表格和提取表格数据


  • 使用Python在Word中创建预定义行和列的表格
  • 使用Python在Word中动态创建表格
  • 使用Python在Word中提取表格数据
安装Python Word库

在Python中,我们可以使用Spire.Doc for Python库来操作Word文档中的表格,包括创建表格、填凑数据、设置格式、提取表格数据等。
Spire.Doc for Python主要用于在Python应用步伐中创建、读取、编辑和转换Word文件。它可以处理惩罚各种Word格式,包括Doc、Docx、Docm、Dot、Dotx、Dotm等。别的,还可以将Word文档转换为其他范例的文件格式,如Word转PDF、Word转RTF、Word转HTML、Word转文本、Word转图片、Word转OFD/XPS/PostScript。
你可以通过在终端运行以下命令来从PyPI安装Spire.Doc for Python:
  1. pip install Spire.Doc
复制代码
使用Python在Word中创建预定义行和列的表格

Spire.Doc for Python提供了Section.AddTable() 方法,用于向Word文档添加表格。表格添加后,你可以使用Table.ResetCells(int, int) 方法来定义它的行数和列数。最后再向表格的单位格中填凑数据。核心步骤如下:


  • 创建Document类的实例。
  • 使用Document.AddSection()方法给文档添加一个节。
  • 定义表格数据并将其存放至一个二维数组中。
  • 使用Section.AddTable()方法给节添加一个表格,然后使用Table.ResetCells(int, int)方法来定义表格的行数和列数。
  • 遍历表格数据并将其添补到表格单位格中,同时设置表头和数据行的格式。
  • 使用Document.SaveToFile()方法保存结果文档。
完整代码:
  1. from spire.doc import *
  2. from spire.doc.common import *
  3. # 创建 Document 类的实例
  4. document = Document()
  5. # 添加一个节到文档中
  6. section = document.AddSection()
  7. # 设置节的页边距
  8. section.PageSetup.Margins.All = 72.0
  9. # 向节添加一个段落
  10. para = section.AddParagraph()
  11. # 设置段落文本对齐方式
  12. para.Format.HorizontalAlignment = HorizontalAlignment.Center
  13. # 向段落添加文本
  14. txtRange = para.AppendText("员工薪资表")
  15. txtRange.CharacterFormat.FontName = "宋体"
  16. txtRange.CharacterFormat.FontSize = 16           
  17. txtRange.CharacterFormat.Bold = True
  18. # 定义表格数据
  19. table_data = [
  20.     ["员工姓名", "部门", "职位", "薪资"],
  21.     ["张三", "销售部", "销售经理", "75000元"],
  22.     ["李四", "市场部", "市场协调员", "55000元"],
  23.     ["王五", "IT部", "软件工程师", "85000元"],
  24.     ["赵六", "人力资源部", "HR专员", "60000元"],
  25.     ["陈七", "财务部", "财务分析师", "70000元"]
  26. ]
  27. # 向节添加一个表格
  28. table = section.AddTable(True)
  29. # 指定表格的行数和列数
  30. table.ResetCells(len(table_data), len(table_data[0]))
  31. # 向表格添加数据
  32. for r, row in enumerate(table_data):
  33.     for c, cell_data in enumerate(row):
  34.         # 向当前单元格添加一个段落
  35.         para = table.Rows[r].Cells[c].AddParagraph()
  36.         
  37.         if r == 0:  # 表头行
  38.             # 设置表头行的高度,背景色和文本对齐方式
  39.             table.Rows[r].Height = 23
  40.             table.Rows[r].RowFormat.BackColor = Color.FromArgb(1, 142, 170, 219)
  41.             para.Format.HorizontalAlignment = HorizontalAlignment.Center
  42.             table.Rows[r].Cells[c].CellFormat.VerticalAlignment = VerticalAlignment.Middle
  43.             
  44.             # 向表头行填充数据并设置字体名称,大小,颜色和加粗
  45.             txtRange = para.AppendText(cell_data)
  46.             txtRange.CharacterFormat.FontName = "宋体"
  47.             txtRange.CharacterFormat.FontSize = 14
  48.             txtRange.CharacterFormat.TextColor = Color.get_White()
  49.             txtRange.CharacterFormat.Bold = True
  50.         else:
  51.             # 设置数据行的高度和文本对齐方式
  52.             table.Rows[r].Height = 20
  53.             para.Format.HorizontalAlignment = HorizontalAlignment.Center
  54.             table.Rows[r].Cells[c].CellFormat.VerticalAlignment = VerticalAlignment.Middle
  55.             # 向数据行填充数据并设置字体名称和大小
  56.             txtRange = para.AppendText(cell_data)
  57.             txtRange.CharacterFormat.FontName = "宋体"
  58.             txtRange.CharacterFormat.FontSize = 11
  59. # 保存文档
  60. document.SaveToFile("创建表格.docx", FileFormat.Docx2013)
  61. document.Close()
复制代码

使用Python在Word中动态创建表格

除了创建具有预定义行和列的静态表格,你还可以通过动态添加行和单位格的方式来创建表格。这种方式主要用到Table.AddRow()TableRow.AddCell()两个方法。核心步骤如下:


  • 创建Document类的实例。
  • 使用Document.AddSection()方法给文档添加一个节。
  • 定义表格数据并将其存放至一个二维数组中。
  • 使用Section.AddTable()方法给节添加一个表格。
  • 使用Table.AddRow()向表格添加行。
  • 使用TableRow.AddCell()方法向行添加单位格。
  • 使用TableCell.AddParagraph().AppendText()方法向单位格填凑数据,然后设置格式。
  • 重复以上第5-7个步骤向表格添加行和单位格,并填凑数据。
  • 使用Document.SaveToFile()方法保存结果文档。
完整代码:
  1. from spire.doc import *
  2. from spire.doc.common import *
  3. # 创建 Document 类的实例
  4. document = Document()
  5. # 添加一个节到文档
  6. section = document.AddSection()
  7. # 设置节的页边距
  8. section.PageSetup.Margins.All = 72.0
  9. # 添加一个表格到节
  10. table = section.AddTable()
  11. # 动态添加行和单元格到表格
  12. row = table.AddRow()
  13. cell = row.AddCell()
  14. cell.SetCellWidth(200, CellWidthType.Point)
  15. txtRange = cell.AddParagraph().AppendText("产品")
  16. txtRange.CharacterFormat.FontName = "宋体"
  17. txtRange.CharacterFormat.FontSize = 13
  18. txtRange.CharacterFormat.Bold = True
  19. cell = row.AddCell()
  20. cell.SetCellWidth(200, CellWidthType.Point)
  21. txtRange = cell.AddParagraph().AppendText("单价")
  22. txtRange.CharacterFormat.FontName = "宋体"
  23. txtRange.CharacterFormat.FontSize = 13
  24. txtRange.CharacterFormat.Bold = True
  25. row = table.AddRow(True, False)
  26. cell = row.AddCell()
  27. cell.SetCellWidth(200, CellWidthType.Point)
  28. txtRange = cell.AddParagraph().AppendText("显示器")
  29. txtRange.CharacterFormat.FontName = "宋体"
  30. cell = row.AddCell()
  31. cell.SetCellWidth(200, CellWidthType.Point)
  32. txtRange = cell.AddParagraph().AppendText("500")
  33. txtRange.CharacterFormat.FontName = "宋体"
  34. row = table.AddRow(True, False)
  35. cell = row.AddCell()
  36. cell.SetCellWidth(200, CellWidthType.Point)
  37. txtRange = cell.AddParagraph().AppendText("键盘")
  38. txtRange.CharacterFormat.FontName = "宋体"
  39. cell = row.AddCell()
  40. cell.SetCellWidth(200, CellWidthType.Point)
  41. txtRange = cell.AddParagraph().AppendText("80")
  42. txtRange.CharacterFormat.FontName = "宋体"
  43. row = table.AddRow(True, False)
  44. cell = row.AddCell()
  45. cell.SetCellWidth(200, CellWidthType.Point)
  46. txtRange = cell.AddParagraph().AppendText("CPU散热器")
  47. txtRange.CharacterFormat.FontName = "宋体"
  48. cell = row.AddCell()
  49. cell.SetCellWidth(200, CellWidthType.Point)
  50. txtRange = cell.AddParagraph().AppendText("20")
  51. txtRange.CharacterFormat.FontName = "宋体"
  52. row = table.AddRow(True, False)
  53. cell = row.AddCell()
  54. cell.SetCellWidth(200, CellWidthType.Point)
  55. txtRange = cell.AddParagraph().AppendText("鼠标")
  56. txtRange.CharacterFormat.FontName = "宋体"
  57. cell = row.AddCell()
  58. cell.SetCellWidth(200, CellWidthType.Point)
  59. txtRange = cell.AddParagraph().AppendText("120")
  60. txtRange.CharacterFormat.FontName = "宋体"
  61. # 应用表格样式
  62. table.ApplyStyle(DefaultTableStyle.MediumGrid1Accent5)
  63. # 自动调整表格大小以适应窗口
  64. table.AutoFit(AutoFitBehaviorType.AutoFitToWindow)
  65. # 保存文档
  66. document.SaveToFile("动态创建表格.docx", FileFormat.Docx2013)
  67. document.Close()
复制代码


使用Python在Word中提取表格数据

要提取Word文档中的表格数据,首先需要循环遍历文档中的表格,然后循环遍历表格中的单位格并获取其中的数据。核心步骤如下:


  • 创建Document类的实例。
  • 使用Document.LoadFromFile()方法加载Word文档。
  • 循环遍历文档中的全部节和每个节中的全部表格。
  • 循环遍历表格中的全部行。
  • 循环遍历每行的单位格,获取单位格数据并将其添加至列表。
  • 将列表数据保存至文本文件。
完整代码:
  1. from spire.doc import *
  2. from spire.doc.common import *
  3. # 创建 Document 实例
  4. document = Document()
  5. # 加载 Word 文档
  6. document.LoadFromFile("创建表格.docx")
  7. # 保存表格数据的文本文件
  8. output_file = "表格数据.txt"
  9. # 循环遍历文档中的所有节和每个节中的所有表格
  10. for section_idx in range(document.Sections.Count):
  11.     section = document.Sections[section_idx]
  12.     for table_idx in range(section.Tables.Count):
  13.         table = section.Tables[table_idx]
  14.         
  15.         # 创建一个列表来存储每个表格的数据
  16.         data_list = []
  17.         
  18.         # 循环遍历表格的行
  19.         for row_idx in range(table.Rows.Count):
  20.             row = table.Rows[row_idx]
  21.             row_data = []
  22.             # 循环遍历每个行的单元格
  23.             for cell_idx in range(row.Cells.Count):
  24.                 cell = row.Cells[cell_idx]
  25.                 # 循环遍历每个单元格中的段落
  26.                 for para_idx in range(cell.Paragraphs.Count):
  27.                     paragraph = cell.Paragraphs[para_idx]
  28.                     # 将每个单元格的文本添加到行数据列表中
  29.                     row_data.append(paragraph.Text.strip())
  30.             # 将行数据添加到表格数据列表中,并添加制表符分隔
  31.             data_list.append("\t".join(row_data))
  32.         
  33.         # 将当前表格的数据写入文本文件,并添加换行分隔
  34.         with open(output_file, "a", encoding="utf-8") as text_file:
  35.             text_file.write("\n".join(data_list))
  36.             text_file.write("\n")
  37. # 关闭文档
  38. document.Close()
复制代码
以上就是使用Python在Word中创建和提取表格的全部内容,盼望对你有所帮助。本文完。



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

万有斥力

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表