TL; DR:
Как я могу зафиксировать нумерацию абзаца как часть текста и экспортировать его в DOCX?
Задача
У меня есть документ, который разбит на разделы и подразделы, который читается аналогично набору государственных законов (Statute 208
, с подразделами Statute 208.1
, Statute 208.2
и т. Д.). Мы создали это, изменив файл numbering.xml
в ZIP-архиве .docx.
Я хочу экспортировать «подраздел» (208.5
) и его текст в отдельный файл .docx. Моя надстройка VSTO экспортирует текст достаточно хорошо, но нумерация сбрасывает в 208.1
. Это действительно имеет некоторый смысл, поскольку теперь это первый абзац с этим <ilvl>
в документе.
PDF работает нормально
Как ни странно, я могу вызвать функцию Word.Range
*1023* и просто экспортировать этот выбор в PDF - даже сохранив нумерацию. Это привело меня к попытке «визуализировать» выделение, возможно, так, как оно будет напечатано, чтобы выбросить его в новый файл .docx, но я также не понял этого.
Что я пробовал:
Range.ExportFragment()
с использованием wdFormatStrictOpenXMLDocument
и wdFormatDocumentDefault
в качестве значений wdSaveType
.
- Они экспортируют, но также сбрасывают нумерацию.
Document.PrintOut()
с использованием PrintToFile = true
и допустимым именем файла. Теперь я понимаю, что это, буквально, генерирует «инструкции по распечатке» и не вводит новый файл по пути filename
с какой-либо допустимой файловой структурой.
Application.Selection.XML
для переменной content
и вызов Document.Content.InsertXML(content)
для вновь добавленного объекта Document.
- По-прежнему сбрасывает нумерацию.
Раздел кода для контекста
using Word = Microsoft.Office.Interop.Word;
Word.Range range = Application.ActiveDocument.Range(startPosition, endPosition);
range.Select();
//export to DOCX?
Application.Selection.Range.ExportFragment(
filename, Word.WdSaveFormat.wdFormatDocumentDefault);