
Таблицы в Word полезны для организации данных, но они могут стать неудобными, когда вам нужно редактировать их содержимое как обычный текст. Если вам больше не нужна структура таблицы, вы можете преобразовать таблицу в текст, используя встроенный инструмент Word, или автоматизировать этот процесс с помощью Python. В этом руководстве подробно описаны оба метода, давайте рассмотрим их.
- Преобразование таблицы в текст в Word с помощью встроенного инструмента
- Преобразование таблиц Word в текст с помощью Python
- Экспорт данных таблицы в внешний TXT-файл
- Часто задаваемые вопросы
Преобразование таблицы в текст в Word с помощью встроенного инструмента
Microsoft Word предоставляет встроенный инструмент для преобразования таблиц в текст. Если вам нужно преобразовать всего одну или две таблицы, встроенный инструмент обычно является самым быстрым вариантом. Он удаляет структуру таблицы и преобразует содержимое ячеек в обычный текст.
Как преобразовать таблицу в текст в MS Word:
- Шаг 1: Щелкните в любом месте внутри таблицы, чтобы отобразить контекстную вкладку Макет таблицы (Table Layout) на верхней ленте.
- Шаг 2: Перейдите на вкладку Макет таблицы в верхнем меню и нажмите кнопку Преобразовать в текст (Convert to Text) в группе Данные (Data).

- Шаг 3: Выберите предпочтительный разделитель (знаки табуляции, запятые, знаки абзаца или пользовательский символ) для разделения значений столбцов.

- Шаг 4: Нажмите ОК, чтобы мгновенно преобразовать таблицу в обычные текстовые абзацы.
Преобразование в текст против скрытия границ
Скрытие границ таблицы меняет только внешний вид таблицы. Ячейки, столбцы и структура таблицы остаются на месте, поэтому содержимое по-прежнему ограничено макетом таблицы.
Преобразование таблицы в текст удаляет структуру таблицы и превращает содержимое ячеек в обычные абзацы. После этого вы можете редактировать и форматировать содержимое без ограничений макета таблицы.
Преобразование таблиц Word в текст с помощью Python
Встроенный инструмент Word удобен для преобразования отдельных таблиц, но он становится менее практичным, когда нужно обработать много документов или таблиц. Для разработчиков на Python библиотека Free Spire.Doc for Python предоставляет способ автоматизации преобразования таблицы в текст без необходимости установки Microsoft Word.
Преобразование таблицы в текст
Скрипт считывает текст из каждой ячейки, объединяет ячейки в одной строке с помощью символов табуляции, вставляет полученные абзацы туда, где находилась таблица, а затем удаляет исходную таблицу.
from spire.doc import *
from spire.doc.documents import *
# Инициализация экземпляра документа и загрузка целевого файла
doc = Document()
doc.LoadFromFile("input.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("1st table to text.docx", FileFormat.Docx2016)
doc.Close()

Примечание: Несколько абзацев внутри одной ячейки объединяются в одну строку, разделенную пробелами.
Пакетная обработка всех таблиц
Чтобы преобразовать все таблицы в документе в текст, используйте логику преобразования из предыдущего примера и примените ее к каждой таблице в каждом разделе. Поскольку каждая таблица удаляется после преобразования, таблицы следует обрабатывать в обратном порядке. В противном случае удаление таблицы смещает индексы оставшихся таблиц, что может привести к пропуску таблиц или ошибкам индексации.
from spire.doc import *
from spire.doc.documents import *
# Создание объекта Document и загрузка файла Word
doc = Document()
doc.LoadFromFile("input.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()

Совет: Экспорт данных таблицы в внешний TXT-файл
Во многих рабочих процессах обработки данных цель состоит в том, чтобы получить информацию, а не изменять исходные файлы макета. Если вам нужен только табличный текст для загрузки в базу данных, ведения журналов или архивирования в виде простого текста, это еще проще. Вы можете быстро извлечь необработанное содержимое ячеек и записать его прямо во внешний текстовый файл с помощью Free Spire.Doc.
Пример кода
from spire.doc import *
from spire.doc.common import *
# Создание экземпляра Document
doc = Document()
# Загрузка документа Word
doc.LoadFromFile("input.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()

Совет: Для структурированных табличных данных вы также можете преобразовать таблицы Word в CSV для использования в электронных таблицах, базах данных и других рабочих процессах обработки данных.
Часто задаваемые вопросы
В1: Что делать, если преобразованный текст выглядит неровно?
Использование табуляции (\t) лучше всего сохраняет структурные интервалы. Если выравнивание столбцов в Word все равно выглядит неровным, выделите преобразованные абзацы и настройте позиции табуляции на горизонтальной линейке.
В2: Как преобразовать текст обратно в таблицу в Word?
Чтобы обратить процесс, выделите текст, перейдите в Вставка > Таблица и нажмите Преобразовать текст в таблицу. Выберите соответствующий разделитель (например, табуляцию или запятые), чтобы восстановить таблицу.
В3: Какая клавиша быстрого доступа для преобразования таблицы в текст в Word?
Microsoft Word не предоставляет специальной клавиши быстрого доступа для команды Преобразовать в текст. Вы можете получить доступ к команде через ленту или настроить сочетание клавиш через настройки клавиатуры Word.
Резюме
В этой статье представлены два способа преобразования таблиц в документах Word в текст. Встроенный инструмент Word хорошо работает для отдельных таблиц или небольшого количества документов, в то время как Free Spire.Doc for Python лучше подходит для автоматизированной обработки нескольких таблиц. Вы также можете извлечь содержимое таблицы в TXT-файл для хранения в виде простого текста или дальнейшей обработки.