Guardar y Exportar Documentos

Guardar y Exportar Documentos

Guardar y Exportar Documentos

Document.Save escribe un documento a un archivo o flujo en un formato objetivo. El formato se infiere a partir de la extensión del archivo, se proporciona explícitamente como un valor SaveFormat, o se controla mediante una subclase SaveOptions — OoxmlSaveOptions, MarkdownSaveOptions o TxtSaveOptions — para control específico del formato. Esta guía cubre las sobrecargas Save, el enum SaveFormat, opciones de guardado OOXML, exportación a Markdown y texto plano, y la detección de un formato antes de convertir.


Guardar con Document.Save

La llamada más simple, Document.Save(fileName), infiere el formato objetivo a partir de la extensión del archivo. Save(fileName, saveFormat) hace el formato explícito sin importar la extensión, y Save(fileName, saveOptions) (o las sobrecargas Stream correspondientes) acepta una subclase SaveOptions para configuraciones específicas del formato. SaveOptions.CreateSaveOptions(saveFormat) es una fábrica estática que devuelve la subclase de opciones correcta para un SaveFormat dado, con sus valores predeterminados ya establecidos.


Elegir un Formato con SaveFormat

El enum SaveFormat enumera todos los identificadores de formatos de guardado que la biblioteca reconoce. Document.Save escribe completamente tanto hacia como desde los formatos de documento principales de esta edición — DOCX, DOCM, DOTX, DOTM y Flat OPC (más sus variantes con macros y de plantilla) — así como Markdown y texto plano. FileFormatUtil.SaveFormatToExtension(saveFormat) y ExtensionToSaveFormat(extension) convierten entre el enum y una cadena de extensión de archivo.

Algunos valores de SaveFormat existen en el enum para la completitud de API, pero corresponden a formatos que esta edición reducida y de código abierto no implementa con un lector o escritor funcional — intentar guardar en uno de esos produce una salida que no es equivalente al documento original. Mantente en los formatos nombrados arriba para una ida y vuelta confiable.


Opciones OOXML: DOCX, DOCM, DOTX, DOTM y Flat OPC

OoxmlSaveOptions configura el guardado a cualquiera de los formatos Open XML. Su propiedad SaveFormat selecciona qué variante específica escribir; Password establece una contraseña de apertura en el archivo guardado (independiente de las restricciones de edición de Document.Protect); Compliance selecciona el nivel de rigor de OOXML; y CompressionLevel / Zip64Mode controlan el empaquetado subyacente de ZIP. Construya uno con new OoxmlSaveOptions(saveFormat) o a través de SaveOptions.CreateSaveOptions(saveFormat).


Exportando a Markdown

MarkdownSaveOptions controla una exportación a Markdown: ListExportMode y LinkExportMode determinan cómo se renderizan listas e hipervínculos, ImagesFolder / ImagesFolderAlias controlan dónde se escriben las imágenes extraídas y cómo se referencian, ExportImagesAsBase64 las incrusta en línea en su lugar, y TableContentAlignment afecta el marcado de tablas generado. Pase una instancia de MarkdownSaveOptions a Document.Save(fileName, saveOptions) con un nombre de archivo .md, o establezca su SaveFormat explícitamente.


Exportando a Texto sin formato

TxtSaveOptions (a través de su base TxtSaveOptionsBase, compartida con MarkdownSaveOptions) controla la exportación a texto sin formato: Encoding establece la codificación de caracteres, ParagraphBreak establece la cadena de fin de línea, MaxCharactersPerLine envuelve líneas largas, SimplifyListLabels normaliza viñetas/números de listas a caracteres simples, y PreserveTableLayout intenta mantener las columnas de tabla alineadas usando espacios.


Detectando un formato antes de convertir

Antes de convertir un archivo cuyo formato no conozca, FileFormatUtil.DetectFileFormat(fileName) devuelve un FileFormatInfo con el LoadFormat detectado. Combine esto con FileFormatUtil.LoadFormatToSaveFormat(loadFormat) para decidir si es posible un recorrido completo a través de los formatos compatibles con esta edición antes de intentar Document.Save.


Consejos y Mejores Prácticas

  • Utiliza Save(fileName, saveOptions) en lugar de la sobrecarga simple de Save(fileName, saveFormat) siempre que necesites controlar el comportamiento específico del formato, como la renderización de listas en Markdown o la compresión OOXML.
  • Establece OoxmlSaveOptions.Password para un archivo protegido con una contraseña abierta; eso es independiente de Document.Protect, que restringe la edición pero no cifra el archivo.
  • Elige MarkdownSaveOptions.ExportImagesAsBase64 para un único archivo Markdown autocontenido, o ImagesFolder cuando quieras una carpeta con los archivos de imagen extraídos junto al Markdown.
  • Llama a SaveOptions.CreateSaveOptions(saveFormat) en lugar de seleccionar manualmente la clase de opciones concreta cuando el formato de destino se determina en tiempo de ejecución.
  • Verifica un formato de destino con FileFormatUtil antes de la conversión en lugar de confiar en una simple extensión de archivo, que puede ser incorrecta o engañosa.

Problemas comunes

ProblemaCausaSolución
Save(fileName) selecciona el formato incorrectoLa extensión del archivo no coincide con el formato previstoUtilice Save(fileName, saveFormat) o Save(fileName, saveOptions) para hacer explícito el formato
El archivo OOXML guardado no se abre con una contraseñaOoxmlSaveOptions.Password no se estableció antes de guardarConstruye un OoxmlSaveOptions, establece Password y pásalo a Save
La exportación a Markdown dispersa archivos de imagen inesperadamenteEl comportamiento predeterminado de MarkdownSaveOptions extrae imágenes a archivosConfigura ExportImagesAsBase64 = true para un único archivo autónomo, o configura ImagesFolder para controlar dónde van las imágenes
La exportación a texto plano pierde la alineación de columnas de la tablaTxtSaveOptions.PreserveTableLayout se deja en su valor predeterminadoEstablezca PreserveTableLayout = true antes de guardar

FAQ

¿Cómo guardo un documento en un formato específico sin importar su extensión de archivo?

Llame a Save(fileName, saveFormat) con un valor SaveFormat explícito, o Save(fileName, saveOptions) con una subclase SaveOptions coincidente.

¿Qué formatos lee y escribe esta edición en ambas direcciones?

DOCX, DOCM, DOTX, DOTM, Flat OPC (más sus variantes con macros y de plantilla), Markdown y texto plano.

¿Cómo protejo con contraseña un archivo guardado?

Establezca Password en una instancia de OoxmlSaveOptions y pásela a Document.Save(fileName, saveOptions).

¿Cómo controlo los finales de línea en un archivo de texto exportado?

Establezca ParagraphBreak en una instancia de TxtSaveOptions antes de guardar.

¿Cómo verifico qué formato tiene un archivo antes de convertirlo?

Llame a FileFormatUtil.DetectFileFormat(fileName) y lea el FileFormatInfo.LoadFormat devuelto.


API Reference Resumen

Clase/MétodoDescripción
Document.SaveEscribe el documento en un archivo, flujo o destino de salida en un formato elegido.
SaveFormatEnum que identifica el formato de destino para una operación de guardado.
SaveOptionsClase base abstracta para la configuración de guardado específica de formato; CreateSaveOptions(saveFormat) devuelve la subclase correspondiente.
OoxmlSaveOptionsOpciones para DOCX, DOCM, DOTX, DOTM y Flat OPC — contraseña, cumplimiento, compresión.
MarkdownSaveOptionsOpciones para la exportación de Markdown — renderizado de listas/enlaces, manejo de imágenes.
TxtSaveOptions / TxtSaveOptionsBaseOpciones para la exportación de texto sin formato — codificación, saltos de línea, diseño de tablas.
FileFormatUtil.DetectFileFormatDetecta el formato de un archivo antes de cargarlo o convertirlo.
FileFormatUtil.SaveFormatToExtension / ExtensionToSaveFormatConvierte entre un valor SaveFormat y una extensión de archivo.

Ver también

 Español