C# 使用OpenXML SDK AddAlternativeFormatImportPart后Word文档方向丢失
我正在尝试将多个Word文档合并到一个Word文档中。我使用的是微软OpenXMLSDK2.5的AltChunk功能。最终报告需要横向,因此我们将每个组件文档置于横向模式。我正在使用以下代码合并文档C# 使用OpenXML SDK AddAlternativeFormatImportPart后Word文档方向丢失,c#,ms-word,orientation,openxml,C#,Ms Word,Orientation,Openxml,我正在尝试将多个Word文档合并到一个Word文档中。我使用的是微软OpenXMLSDK2.5的AltChunk功能。最终报告需要横向,因此我们将每个组件文档置于横向模式。我正在使用以下代码合并文档 for (int i = 0; i < otherDocs.Length; i++) { using (var headerDoc = WordprocessingDocument.Open(headerPath, true)) { var mainPart =
for (int i = 0; i < otherDocs.Length; i++)
{
using (var headerDoc = WordprocessingDocument.Open(headerPath, true))
{
var mainPart = headerDoc.MainDocumentPart;
string altChunkId = "AltChunkId" + i;
var chunk = mainPart.AddAlternativeFormatImportPart(AlternativeFormatImportPartType.WordprocessingML, altChunkId);
using (var fileStream = File.Open(otherDocs[i], FileMode.Open))
{
chunk.FeedData(fileStream);
}
var altChunk = new AltChunk();
altChunk.Id = altChunkId;
mainPart.Document.Body.InsertAfter(altChunk, mainPart.Document.Body.Elements<Paragraph>().Last());
mainPart.Document.Save();
DocumentWriter.SetPrintOrientation(headerDoc, PageOrientationValues.Landscape);
headerDoc.Close();
}
}
for(int i=0;i
当我运行这段代码时,如果每个组件文档至少有一个分节符,那么最终的输出文档将混合横向和纵向
DocumentWriter.SetPrintOrientation()方法是根据中的说明实现的。这似乎对文档的实际方向没有影响。我还检查了底层XML文件,所有“orient”属性都设置为横向
是否有一些配置选项或API调用可用于确保最终文档在所有部分都具有横向方向?OpenXML Word文档是定义其内容、格式和元数据的XML文档压缩集合。使用AddAlternativeFormatImportPart将Word文档合并在一起时,将合并到原始文档(AltChunks)中的Word文档复制到zip存档中,并将引用文档的XML元素添加到XML文档定义中。然后,下次有人在MicrosoftWord(或任何其他与OpenXML兼容的文档编辑器)中打开生成的文档时,应用程序将处理AltChunk中的合并。在本例中,Microsoft Word 2010(我们正在使用的版本)有一个。其中一个信息是方向,这使得AltChunk方法在保存方向信息方面无效 相反,我们使用了来自的DocumentBuilder。这导致了更简单的代码,用两行代码解决了我们的问题:
var sourceList = documentPaths.Select(doc => new Source(new WmlDocument(doc), true)).ToList();
DocumentBuilder.BuildDocument(sourceList, outputPath);
该死,我面临着完全相同的问题,但我的应用程序是.net 4,电动工具需要4.5:/