Salvataggio ed Esportazione dei Documenti
Salvataggio ed esportazione dei documenti
Document.Save scrive un documento su un file o stream in un formato di destinazione. Il formato viene inferito dall’estensione del file, specificato esplicitamente come valore SaveFormat, o determinato da una sottoclasse SaveOptions — OoxmlSaveOptions, MarkdownSaveOptions o TxtSaveOptions — per un controllo specifico del formato. Questa guida copre le sovraccarichi Save, l’enum SaveFormat, le opzioni di salvataggio OOXML, l’esportazione in Markdown e testo semplice, e il rilevamento di un formato prima della conversione.
Salvataggio con Document.Save
La chiamata più semplice, Document.Save(fileName), inferisce il formato di destinazione dall’estensione del file. Save(fileName, saveFormat) rende esplicito il formato indipendentemente dall’estensione, e Save(fileName, saveOptions) (o le sovraccarichi corrispondenti Stream) accetta una sottoclasse SaveOptions per impostazioni specifiche del formato. SaveOptions.CreateSaveOptions(saveFormat) è una factory statica che restituisce la corretta sottoclasse di opzioni per un dato SaveFormat con i suoi valori predefiniti già impostati.
Scelta di un formato con SaveFormat
L’enum SaveFormat elenca tutti gli identificatori di formato di salvataggio riconosciuti dalla libreria. Document.Save scrive completamente sia verso che da questi formati di documento principali di questa edizione — DOCX, DOCM, DOTX, DOTM e Flat OPC (oltre alle sue varianti con macro e template) — così come Markdown e testo semplice. FileFormatUtil.SaveFormatToExtension(saveFormat) e ExtensionToSaveFormat(extension) convertono tra l’enum e una stringa di estensione del file.
Alcuni valori SaveFormat esistono nell’enum per completezza API ma corrispondono a formati che questa edizione ridotta, open source, non implementa né un lettore né uno scrittore funzionante — tentare di salvare in uno di questi produce un output che non è equivalente al documento originale. Attenersi ai formati elencati sopra per un round-tripping affidabile.
Opzioni OOXML: DOCX, DOCM, DOTX, DOTM e Flat OPC
OoxmlSaveOptions configura il salvataggio in uno qualsiasi dei formati Open XML. La sua proprietà SaveFormat seleziona quale variante specifica scrivere; Password imposta una password di apertura sul file salvato (indipendente dalle restrizioni di modifica di Document.Protect); Compliance seleziona il livello di rigore OOXML; e CompressionLevel / Zip64Mode controllano il packaging ZIP sottostante. Costruiscine uno con new OoxmlSaveOptions(saveFormat) o tramite SaveOptions.CreateSaveOptions(saveFormat).
Esportazione in Markdown
MarkdownSaveOptions controlla un’esportazione Markdown: ListExportMode e LinkExportMode determinano come vengono renderizzate le liste e i collegamenti ipertestuali, ImagesFolder / ImagesFolderAlias controllano dove vengono scritte le immagini estratte e come vengono referenziate, ExportImagesAsBase64 le incorpora inline invece, e TableContentAlignment influisce sul markup delle tabelle generate. Passa un’istanza MarkdownSaveOptions a Document.Save(fileName, saveOptions) con un nome file .md, oppure imposta esplicitamente il suo SaveFormat.
Esportazione in testo semplice
TxtSaveOptions (tramite il suo TxtSaveOptionsBase di base, condiviso con MarkdownSaveOptions) controlla l’esportazione in testo semplice: Encoding imposta la codifica dei caratteri, ParagraphBreak imposta la stringa di terminazione di riga, MaxCharactersPerLine avvolge le linee lunghe, SimplifyListLabels normalizza i punti elenco/numeri delle liste in caratteri semplici, e PreserveTableLayout tenta di mantenere le colonne delle tabelle allineate usando spazi.
Rilevare un formato prima della conversione
Prima di convertire un file il cui formato non conosci, FileFormatUtil.DetectFileFormat(fileName) restituisce un FileFormatInfo con il LoadFormat rilevato. Combina questo con FileFormatUtil.LoadFormatToSaveFormat(loadFormat) per decidere se è possibile un round-trip attraverso i formati supportati da questa edizione prima di tentare Document.Save.
Suggerimenti e migliori pratiche
- Usa
Save(fileName, saveOptions)invece della sempliceSave(fileName, saveFormat)overload ogni volta che devi controllare il comportamento specifico del formato, come il rendering delle liste Markdown o la compressione OOXML. - Imposta
OoxmlSaveOptions.Passwordper un file protetto da password aperta; è diverso daDocument.Protect, che limita la modifica ma non cripta il file. - Scegli
MarkdownSaveOptions.ExportImagesAsBase64per un singolo file Markdown autonomo, oppureImagesFolderquando desideri una cartella di file immagine estratti accanto al Markdown. - Chiama
SaveOptions.CreateSaveOptions(saveFormat)invece di selezionare manualmente la classe di opzioni concreta quando il formato di destinazione è determinato a runtime. - Verifica un formato di destinazione con
FileFormatUtilprima della conversione, invece di fare affidamento solo sull’estensione del file, che può essere errata o fuorviante.
Problemi comuni
| Problema | Causa | Correzione |
|---|---|---|
Save(fileName) sceglie il formato sbagliato | L’estensione del file non corrisponde al formato previsto | Usa Save(fileName, saveFormat) o Save(fileName, saveOptions) per rendere esplicito il formato |
| Il file OOXML salvato non si apre con una password | OoxmlSaveOptions.Password non è stato impostato prima del salvataggio | Costruisci un OoxmlSaveOptions, imposta Password e passalo a Save |
| L’esportazione Markdown sparpaglia i file immagine in modo inatteso | Il comportamento predefinito di MarkdownSaveOptions estrae le immagini in file | Imposta ExportImagesAsBase64 = true per un unico file autonomo, oppure imposta ImagesFolder per controllare dove vanno le immagini |
| L’esportazione in testo semplice perde l’allineamento delle colonne della tabella | TxtSaveOptions.PreserveTableLayout è lasciato al suo valore predefinito | Imposta PreserveTableLayout = true prima di salvare |
FAQ
Come salvo un documento in un formato specifico indipendentemente dall’estensione del file?
Chiama Save(fileName, saveFormat) con un valore SaveFormat esplicito, oppure Save(fileName, saveOptions) con una sottoclasse SaveOptions corrispondente.
Quali formati legge e scrive questa edizione in entrambe le direzioni?
DOCX, DOCM, DOTX, DOTM, Flat OPC (oltre alle sue varianti con macro e template), Markdown e testo semplice.
Come proteggere con password un file salvato?
Imposta Password su un’istanza OoxmlSaveOptions e passala a Document.Save(fileName, saveOptions).
Come controllo le terminazioni di riga in un file di testo esportato?
Imposta ParagraphBreak su un’istanza TxtSaveOptions prima di salvare.
Come faccio a verificare quale formato ha un file prima di convertirlo?
Chiama FileFormatUtil.DetectFileFormat(fileName) e leggi il FileFormatInfo.LoadFormat restituito.
API Reference Riepilogo
| Classe/Metodo | Descrizione |
|---|---|
Document.Save | Scrive il documento su un file, stream o destinazione di output in un formato scelto. |
SaveFormat | Enum che identifica il formato di destinazione per un’operazione di salvataggio. |
SaveOptions | Classe base astratta per la configurazione di salvataggio specifica del formato; CreateSaveOptions(saveFormat) restituisce la sottoclasse corrispondente. |
OoxmlSaveOptions | Opzioni per DOCX, DOCM, DOTX, DOTM e Flat OPC — password, conformità, compressione. |
MarkdownSaveOptions | Opzioni per l’esportazione Markdown — rendering di elenchi/link, gestione delle immagini. |
TxtSaveOptions / TxtSaveOptionsBase | Opzioni per l’esportazione in testo semplice — codifica, interruzioni di riga, disposizione delle tabelle. |
FileFormatUtil.DetectFileFormat | Rileva il formato di un file prima di caricarlo o convertirlo. |
FileFormatUtil.SaveFormatToExtension / ExtensionToSaveFormat | Converti tra un valore SaveFormat e un’estensione di file. |