如何将 Word 表格转换为文本:附详细操作步骤

Microsoft Word 中的表格适合用来整理和排版数据,但当你需要像编辑普通文本一样修改内容时,表格结构可能会带来一些不便。这时,我们可以将表格转换为纯文本。你可以选择使用 Word 自带的功能快速处理,也可以通过 Python 实现自动化批量转换。本文将详细介绍这两种方法的具体操作步骤。

使用 Word 自带工具将表格转换为文本

如果只需要处理一两个表格,使用 Microsoft Word 自带的转换工具会更加方便。它可以快速将单元格中的内容转换为普通文本段落,并且还支持多种分隔符。

在 Word 中将表格转为文本的详细步骤:

  • 第一步:点击表格内的任意位置,此时顶部菜单栏会自动显示表布局选项卡。
  • 第二步:在右侧数据功能组中点击转换为文本按钮。

使用 Word 自带的工具将表格转换为文本

  • 第三步:在弹出的对话框中选择用于分隔内容的分隔符,例如制表符、逗号、段落标记或自定义字符。

选择分隔符

  • 第四步:点击确定,表格中的内容就会转换为普通文本段落。

辨析隐藏表格边框与转换表格为文本

虽然隐藏表格边框和将 Word 表格转换为文本在视觉效果上比较相似,但两者的处理方式完全不同。隐藏边框只是将网格线隐藏起来,单元格、列以及表格结构仍然保留,内容也仍会受到表格布局的影响。

而将表格转换为文本后,原有的表格结构会被移除,内容则转换为普通段落。这样一来,文本内容不再受单元格和列宽的限制,后续的排版与修改会更加灵活。

使用 Python 自动化转换 Word 表格为文本

如果需要处理多个文档或多张表格,手动操作会比较繁琐。借助 Free Spire.Doc for Python,可以通过代码自动完成 Word 表格到文本的转换。Free Spire.Doc 是一个用于处理 Word 文档的 Python 库,无需安装 Microsoft Word 即可在文档中创建或编辑表格。

转换指定的单个 Word 表格

使用 Free Spire.Doc 将单个表格转换为文本时,基本流程是:依次读取每个单元格的内容,将同一行的单元格用分隔符连接,并将其作为新的文本段落插入到原表格所在位置,最后删除原表格。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
from spire.doc import *
from spire.doc.documents import *

# 创建 Document 实例并加载目标 Word 文档
doc = Document()
doc.LoadFromFile("项目进度.docx")

# 获取文档的第一个节及目标表格
section = doc.Sections[0]
if section.Tables.Count > 0:
table = section.Tables[0]

# 逐行提取单元格文本
text_lines = []
for j in range(table.Rows.Count):
row = table.Rows.get_Item(j)
row_cells_text = []
for k in range(row.Cells.Count):
cell = row.Cells.get_Item(k)

# 提取单元格内部各段落的文本
cell_text_pieces = []
for p in range(cell.Paragraphs.Count):
para_obj = cell.Paragraphs.get_Item(p)
if para_obj.Text:
cell_text_pieces.append(para_obj.Text.strip())

row_cells_text.append(" ".join(cell_text_pieces))

# 使用制表符拼接同行单元格文本
text_lines.append("\t".join(row_cells_text))

# 获取表格在容器中的位置索引
owner_block = table.OwnerTextBody
table_index = owner_block.ChildObjects.IndexOf(table)

# 在原表格位置原地插入转换后的文本段落
for line in reversed(text_lines):
temp_para = section.AddParagraph()
temp_para.Text = line
section.Paragraphs.Remove(temp_para)
owner_block.ChildObjects.Insert(table_index, temp_para)

# 从文档结构中移除原表格节点
owner_block.ChildObjects.Remove(table)

# 保存修改后的文档
doc.SaveToFile("表格1转文本.docx", FileFormat.Docx2016)
doc.Close()

通过 Free Spire.Doc for Python 将指定表格转换为文本

**提示:**如果单个单元格中包含多个段落,代码会将这些段落中的文字用空格连接成一行。

批量处理文档中的所有表格

除了处理单个表格外,你还可以通过添加循环将 Word 文档内的所有表格转换为文本。代码采用倒序遍历range(table_count - 1, -1, -1)),这样可以避免正向删除表格时因索引变化而跳过部分表格或访问错误的索引。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
from spire.doc import *
from spire.doc.documents import *

# 初始化 Document 对象并加载 Word 文件
doc = Document()
doc.LoadFromFile("项目进度.docx")

# 遍历文档中的每一个节
for s_idx in range(doc.Sections.Count):
section = doc.Sections[s_idx]

# 倒序遍历所有的表格
table_count = section.Tables.Count
for t_idx in range(table_count - 1, -1, -1):
table = section.Tables.get_Item(t_idx)

# 收集每行每列的数据
text_lines = []
for j in range(table.Rows.Count):
row = table.Rows.get_Item(j)
row_cells_text = []
for k in range(row.Cells.Count):
cell = row.Cells.get_Item(k)
cell_text_pieces = []
for p in range(cell.Paragraphs.Count):
para_obj = cell.Paragraphs.get_Item(p)
if para_obj.Text:
cell_text_pieces.append(para_obj.Text.strip())
row_cells_text.append(" ".join(cell_text_pieces))
text_lines.append("\t".join(row_cells_text))

# 在原位置插入纯文本段落
owner_block = table.OwnerTextBody
table_index = owner_block.ChildObjects.IndexOf(table)

for line in reversed(text_lines):
temp_para = section.AddParagraph()
temp_para.Text = line
section.Paragraphs.Remove(temp_para)
owner_block.ChildObjects.Insert(table_index, temp_para)

# 移除当前表格
owner_block.ChildObjects.Remove(table)

# 保存最终文档
doc.SaveToFile("all tables to text.docx", FileFormat.Docx2016)
doc.Close()

批量转换所有的 Word 表格为文本

将表格数据提取并导出为 TXT 文件

在许多数据整理或自动化处理流程中,我们往往只需要获取表格中的原始数据,而无需修改 Word 文档本身的格式。此时,可以直接提取表格中的文本内容并导出为 TXT 文件,操作更加简单,也便于后续处理。

提取 Word 表格内容的代码示例

下面的示例提取文档第一个节中第一个表格的内容,并将其保存为 TXT 文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from spire.doc import *
from spire.doc.common import *

# 创建 Document 实例
doc = Document()

# 加载 Word 文档
doc.LoadFromFile("项目进度.docx")

# 获取文档中的第一个表格
table = doc.Sections[0].Tables[0]

# 拼接提取表格中的文本
tableData = ''
for j in range(table.Rows.Count):
row = table.Rows.get_Item(j)

for k in range(row.Cells.Count):
cell = row.Cells.get_Item(k)

for p in range(cell.Paragraphs.Count):
tableData += cell.Paragraphs.get_Item(p).Text + ' '

if k < row.Cells.Count - 1:
tableData += '\t'

tableData += '\n'

# 将提取到的文字写入外部 TXT 文本文件中
with open("table_text.txt", "w", encoding="utf-8") as f:
f.write(tableData)

doc.Close()

获取表格中的文本内容

进阶提示: Free Spire.Doc 还可以快速删除指定或所有表格,如果不再需要表格及其中的内容,可以使用这一功能进一步清理 Word 文档。

常见问题解答

1:为什么转换后的文本看起来参差不齐、没有对齐?

使用制表符(\t)通常可以较好地保持各列之间的间距。如果转换后的内容在 Word 中仍然没有对齐,可以全选转换后的段落,然后在 Word 顶部水平标尺上调整制表位的间距即可。

2:如何将转换后的纯文本重新还原为表格?

只需选中这部分文本,选中需要转换的文本,点击 插入 > 表格 > 文本转换成表格。在弹出的设置框中,勾选你此前使用的分隔符,如制表符或逗号,就能重新一键生成表格。

3:Word 中将表格转换为文本的快捷键是什么?

Microsoft Word 并没有为其提供单独的预设快捷键。不过,你可以通过 Alt 组合键调出对应窗口。依次按下 Alt > JL > V 键,即可打开表格转换成文本对话框。需要注意的是,部分 Word 版本的组合键为 Alt > J > V

总结

本文介绍了两种将 Word 中的表格转换为纯文本的方法。Word 自带的功能操作简单,适合处理少量表格或日常排版需求;如果需要处理多个表格或文档,则可以借助 Free Spire.Doc for Python 实现自动化批量处理。此外,你还可以根据实际需求将表格内容提取并保存为 TXT 文件。根据具体使用场景选择合适的方法即可。