documentformat c# ms-word openxml-sdk openxml

documentformat - openxml c# word



openxml-sdk-Creando archivos word 2007 con settings.xml (1)

Necesita crear su propio DocumentSettingsPart y luego insertarlo en MainDocumentPart . Entonces, la parte de configuraciones puede verse así:

<w:settings xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vm" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:sl="http://schemas.openxmlformats.org/schemaLibrary/2006/main"> <w:defaultTabStop w:val="475"/> <w:compat> <w:compatSetting w:name="compatibilityMode" w:uri="http://schemas.microsoft.com/office/word" w:val="14"/> </w:compat> </w:settings>

Y luego tener eso guardado en algún lugar como "settings.xml", podrías usar un código como este:

private static void AddSettingsToMainDocumentPart(MainDocumentPart part) { DocumentSettingsPart settingsPart = part.AddNewPart<DocumentSettingsPart>(); FileStream settingsTemplate = new FileStream("settings.xml", FileMode.Open, FileAccess.Read); settingsPart.FeedData(settingsTemplate); settingsPart.Settings.Save(); }

Intento generar un nuevo documento de Word usando el siguiente código. El documento de Word se genera sin settings.xml. Necesito tener settings.xml en el archivo de palabras. Cualquier ayuda sería apreciada.

public static byte[] GenerateNewDocument() { byte[] returnValue = null; MemoryStream stream = null; WordprocessingDocument wordDoc = null; try { stream = new System.IO.MemoryStream(); wordDoc = WordprocessingDocument.Create(stream, WordprocessingDocumentType.Document); } catch { if (stream != null) { stream.Close(); } throw; } using (wordDoc) { wordDoc.AddMainDocumentPart(); MainDocumentPart mainPart = wordDoc.MainDocumentPart; mainPart.Document = new Document(new Body()); mainPart.Document.Save(); } returnValue = stream.ToArray(); return returnValue; }