Enregistrement et exportation de documents
Enregistrement et exportation de documents
Document.Save écrit un document dans un fichier ou un flux dans un format cible. Le format est soit déduit d’une extension de fichier, fourni explicitement comme valeur SaveFormat, ou déterminé par une sous-classe SaveOptions — OoxmlSaveOptions, MarkdownSaveOptions ou TxtSaveOptions — pour un contrôle spécifique au format. Ce guide couvre les surcharges Save, l’enum SaveFormat, les options d’enregistrement OOXML, l’exportation Markdown et texte brut, ainsi que la détection d’un format avant la conversion.
Enregistrement avec Document.Save
L’appel le plus simple, Document.Save(fileName), déduit le format cible à partir de l’extension du fichier. Save(fileName, saveFormat) rend le format explicite quel que soit l’extension, et Save(fileName, saveOptions) (ou les surcharges correspondantes Stream) accepte une sous-classe SaveOptions pour des paramètres spécifiques au format. SaveOptions.CreateSaveOptions(saveFormat) est une fabrique statique qui renvoie la bonne sous-classe d’options pour un SaveFormat donné, avec ses valeurs par défaut déjà définies.
Choisir un format avec SaveFormat
L’enum SaveFormat répertorie chaque identifiant de format d’enregistrement reconnu par la bibliothèque. Document.Save écrit complètement vers et depuis les formats de documents principaux de cette édition — DOCX, DOCM, DOTX, DOTM et Flat OPC (ainsi que ses variantes avec macros et modèles) — ainsi que le Markdown et le texte brut. FileFormatUtil.SaveFormatToExtension(saveFormat) et ExtensionToSaveFormat(extension) convertissent entre l’enum et une chaîne d’extension de fichier.
Certaines valeurs SaveFormat existent dans l’enum pour assurer la complétude de API, mais correspondent à des formats que cette édition réduite et open-source n’implémente pas avec un lecteur ou un écrivain fonctionnel — tenter d’enregistrer dans l’un d’eux produit une sortie qui n’est pas équivalente au document source. Restez-vous aux formats cités ci-dessus pour un aller-retour fiable.
Options OOXML : DOCX, DOCM, DOTX, DOTM et Flat OPC
OoxmlSaveOptions configure la sauvegarde vers l’un des formats Open XML. Sa propriété SaveFormat sélectionne la variante spécifique à écrire; Password définit un mot de passe d’ouverture sur le fichier enregistré (indépendant des restrictions d’édition de Document.Protect); Compliance choisit le niveau de stricte OOXML; et CompressionLevel / Zip64Mode contrôlent l’emballage ZIP sous-jacent. Construisez-en un avec new OoxmlSaveOptions(saveFormat) ou via SaveOptions.CreateSaveOptions(saveFormat).
Exportation vers Markdown
MarkdownSaveOptions contrôle une exportation Markdown: ListExportMode et LinkExportMode régissent la façon dont les listes et les hyperliens sont rendus, ImagesFolder / ImagesFolderAlias contrôlent l’endroit où les images extraites sont écrites et la façon dont elles sont référencées, ExportImagesAsBase64 les intègre directement à la place, et TableContentAlignment influence le balisage des tableaux générés. Transmettez une instance MarkdownSaveOptions à Document.Save(fileName, saveOptions) avec un nom de fichier .md, ou définissez son SaveFormat explicitement.
Exportation vers le texte brut
TxtSaveOptions (via son TxtSaveOptionsBase de base, partagé avec MarkdownSaveOptions) contrôle l’exportation en texte brut: Encoding définit le codage des caractères, ParagraphBreak définit la chaîne de fin de ligne, MaxCharactersPerLine enveloppe les lignes longues, SimplifyListLabels normalise les puces/nombres de listes en caractères simples, et PreserveTableLayout tente de garder les colonnes de tableau alignées en utilisant des espaces.
Détection d’un format avant la conversion
Avant de convertir un fichier dont le format n’est pas encore connu, FileFormatUtil.DetectFileFormat(fileName) renvoie un FileFormatInfo contenant le LoadFormat détecté. Combinez cela avec FileFormatUtil.LoadFormatToSaveFormat(loadFormat) pour décider si un aller-retour via les formats pris en charge par cette édition est possible avant d’essayer Document.Save.
Conseils et meilleures pratiques
- Utilisez
Save(fileName, saveOptions)au lieu de la surcharge simpleSave(fileName, saveFormat)chaque fois que vous devez contrôler le comportement propre à un format, comme le rendu des listes Markdown ou la compression OOXML. - Définissez
OoxmlSaveOptions.Passwordpour un fichier protégé par un mot-de-passe ouvert; c’est différent deDocument.Protect, qui restreint la modification mais n’encrypte pas le fichier. - Choisissez
MarkdownSaveOptions.ExportImagesAsBase64pour un seul fichier Markdown autonome, ouImagesFolderlorsque vous souhaitez un dossier contenant les fichiers image extraits à côté du Markdown. - Appelez
SaveOptions.CreateSaveOptions(saveFormat)au lieu de sélectionner manuellement la classe d’options concrète lorsque le format cible est déterminé à l’exécution. - Vérifiez un format cible avec
FileFormatUtilavant la conversion plutôt que de vous fier à une simple extension de fichier, qui peut être incorrecte ou trompeuse.
Problèmes courants
| Problème | Cause | Correction |
|---|---|---|
Save(fileName) choisit le mauvais format | L’extension du fichier ne correspond pas au format prévu | Utilisez Save(fileName, saveFormat) ou Save(fileName, saveOptions) pour rendre le format explicite |
| Le fichier OOXML enregistré ne s’ouvrira pas avec un mot de passe | OoxmlSaveOptions.Password n’a pas été défini avant l’enregistrement | Construisez un OoxmlSaveOptions, définissez Password et transmettez-le à Save |
| L’exportation Markdown disperse les fichiers image de manière inattendue | Le comportement par défaut de MarkdownSaveOptions extrait les images vers des fichiers | Définissez ExportImagesAsBase64 = true pour un seul fichier autonome, ou définissez ImagesFolder pour contrôler l’emplacement des images |
| L’exportation en texte brut perd l’alignement des colonnes du tableau | TxtSaveOptions.PreserveTableLayout est laissé à sa valeur par défaut | Définissez PreserveTableLayout = true avant d’enregistrer |
FAQ
Comment enregistrer un document dans un format spécifique quel que soit son extension de fichier ?
Appelez Save(fileName, saveFormat) avec une valeur SaveFormat explicite, ou Save(fileName, saveOptions) avec une sous-classe SaveOptions correspondante.
Quels formats cette édition lit-elle et écrit-elle dans les deux sens ?
DOCX, DOCM, DOTX, DOTM, Flat OPC (plus ses variantes avec macros et modèles), Markdown et texte brut.
Comment protéger par mot de passe un fichier enregistré ?
Définissez Password sur une instance OoxmlSaveOptions et transmettez-la à Document.Save(fileName, saveOptions).
Comment contrôler les fins de ligne dans un fichier texte exporté ?
Définissez ParagraphBreak sur une instance TxtSaveOptions avant d’enregistrer.
Comment vérifier quel est le format d’un fichier avant de le convertir ?
Appelez FileFormatUtil.DetectFileFormat(fileName) et lisez le FileFormatInfo.LoadFormat retourné.
Résumé API Reference
| Classe/Méthode | Description |
|---|---|
Document.Save | Écrit le document dans un fichier, un flux ou une cible de sortie dans un format choisi. |
SaveFormat | Énumération identifiant le format cible pour une opération d’enregistrement. |
SaveOptions | Classe de base abstraite pour la configuration d’enregistrement spécifique à un format ; CreateSaveOptions(saveFormat) renvoie la sous-classe correspondante. |
OoxmlSaveOptions | Options pour DOCX, DOCM, DOTX, DOTM et Flat OPC — mot de passe, conformité, compression. |
MarkdownSaveOptions | Options d’exportation Markdown — rendu des listes/liens, gestion des images. |
TxtSaveOptions / TxtSaveOptionsBase | Options d’exportation texte brut — encodage, sauts de ligne, mise en page des tableaux. |
FileFormatUtil.DetectFileFormat | Détecte le format d’un fichier avant de le charger ou de le convertir. |
FileFormatUtil.SaveFormatToExtension / ExtensionToSaveFormat | Convertit entre une valeur SaveFormat et une extension de fichier. |