Как экспортировать и сохранять документы Word в .NET
Это руководство показывает, как экспортировать и сохранять документ Word с помощью Aspose.Words FOSS для .NET: сохранение с выводом формата или с явным указанием формата, настройка параметров сохранения OOXML, экспорт в Markdown, экспорт в обычный текст и определение формата файла перед его конвертацией. Aspose.Words FOSS для .NET доступен через NuGet или сборкой из исходного кода.
Пошаговое руководство
Шаг 1: Получить библиотеку
Клонируйте репозиторий и выполните сборку Aspose.Words.sln в конфигурации Release, затем добавьте ссылку на проект в Aspose.Words.csproj из вашего собственного проекта .NET, как описано в Руководстве по установке. Добавьте using Aspose.Words; в начале любого файла, который сохраняет документы.
Шаг 2: Сохранить с выводимым или явным форматом
Document.Save(fileName) определяет целевой формат по расширению файла. Save(fileName, saveFormat) делает формат явным независимо от расширения, принимая значение перечисления SaveFormat, а Save(fileName, saveOptions) (или соответствующие перегрузки Stream) принимает подкласс SaveOptions для управления конкретным форматом. SaveOptions.CreateSaveOptions(saveFormat) — это статическая фабрика, возвращающая подходящий подкласс опций с уже установленными значениями по умолчанию для данного SaveFormat. Эта версия полностью сохраняет как в DOCX, DOCM, DOTX, DOTM и Flat OPC (включая их макросодержащие и шаблонные варианты), так и из них, а также в Markdown и обычный текст.
Шаг 3: Настройка параметров экспорта OOXML
OoxmlSaveOptions настраивает сохранение в любой из вариантов Open XML. Его свойство SaveFormat выбирает конкретно DOCX, DOCM, DOTX, DOTM или Flat OPC; Password задает открытый пароль для сохраняемого файла, независимо от ограничения редактирования Document.Protect; Compliance выбирает уровень строгого соответствия OOXML; а CompressionLevel / Zip64Mode управляют базовой упаковкой ZIP. Создайте его с помощью new OoxmlSaveOptions(saveFormat) или через SaveOptions.CreateSaveOptions(saveFormat).
Шаг 4: Экспорт в Markdown
MarkdownSaveOptions управляет экспортом в Markdown: ListExportMode и LinkExportMode определяют, как отображаются списки и гиперссылки, ImagesFolder / ImagesFolderAlias контролируют, куда помещаются извлечённые изображения и как они ссылаются, ExportImagesAsBase64 внедряет их встроенно вместо записи в отдельные файлы, а TableContentAlignment влияет на разметку генерируемых таблиц. Передайте экземпляр MarkdownSaveOptions в Document.Save(fileName, saveOptions) с именем файла .md, или задайте его SaveFormat явно.
Шаг 5: Экспорт в обычный текст
TxtSaveOptions (через его общий базовый TxtSaveOptionsBase, также используемый MarkdownSaveOptions) управляет экспортом в обычный текст: Encoding задаёт кодировку символов, ParagraphBreak задаёт строку окончания строки, MaxCharactersPerLine переносит длинные строки, SimplifyListLabels нормализует маркеры и номера списков до простых символов, а PreserveTableLayout выравнивает столбцы таблицы с помощью пробелов.
Шаг 6: Определить формат перед конвертацией
Перед конвертацией файла неизвестного формата FileFormatUtil.DetectFileFormat(fileName) возвращает FileFormatInfo с обнаруженным LoadFormat. Сочетайте его с FileFormatUtil.LoadFormatToSaveFormat(loadFormat), чтобы проверить, может ли этот формат пройти круговой процесс через поддерживаемые этой версией форматы, прежде чем вызывать Document.Save. Некоторые члены перечисления SaveFormat существуют для полноты API, но названные форматы в этой упрощённой открытой версии не имеют реализованных читающих или записывающих модулей; придерживайтесь семейства DOCX/DOCM/DOTX/DOTM/Flat OPC плюс Markdown и обычного текста для надёжного вывода.
Распространённые проблемы и решения
Save(fileName) записывает неправильный формат. Расширение файла не соответствует предполагаемому формату. Используйте Save(fileName, saveFormat) or Save(fileName, saveOptions) чтобы явно указать формат вместо того, чтобы полагаться на расширение.
Сохранённый файл OOXML не откроется с паролем. OoxmlSaveOptions.Password не был установлен перед сохранением. Создайте OoxmlSaveOptions, установите Password, и передайте его в Save.
Экспорт в Markdown неожиданно разбросывает файлы изображений. Default MarkdownSaveOptions поведение извлекает изображения в отдельные файлы. Установите ExportImagesAsBase64 = true для одного самодостаточного файла Markdown, либо установите ImagesFolder чтобы контролировать, куда помещаются изображения.
Экспорт в простой текст теряет выравнивание столбцов таблицы. TxtSaveOptions.PreserveTableLayout оставлен по умолчанию. Установите PreserveTableLayout = true перед сохранением.
Часто задаваемые вопросы
Как сохранить в определённый формат независимо от расширения файла?
Вызовите Save(fileName, saveFormat) с явным значением SaveFormat, или Save(fileName, saveOptions) с соответствующим подклассом SaveOptions.
Какие форматы поддерживают round-trip в обоих направлениях в этом издании?
DOCX, DOCM, DOTX, DOTM, Flat OPC (плюс их варианты с поддержкой макросов и шаблоны), Markdown и обычный текст.
Как установить пароль на сохранённый файл, чтобы его нельзя было даже открыть?
Установите Password у экземпляра OoxmlSaveOptions и передайте его в Document.Save(fileName, saveOptions).
Как управлять символами окончания строк в экспортированном текстовом файле?
Установите ParagraphBreak у экземпляра TxtSaveOptions перед сохранением.
Как проверить формат файла перед его конвертацией?
Вызовите FileFormatUtil.DetectFileFormat(fileName) и прочитайте возвращённый FileFormatInfo.LoadFormat.