如何使用VB.NET中的openxml方法从现有XML文件数据创建word文件,并使用所有设置(格式和对齐方式)?

如何使用VB.NET中的openxml方法从现有XML文件数据创建word文件,并使用所有设置(格式和对齐方式)?,xml,vb.net,ms-word,openxml,openxml-sdk,Xml,Vb.net,Ms Word,Openxml,Openxml Sdk,我的程序在运行时生成了一个XML文件。这个XMLfile.InnerText()有一些格式(如-enter、空格、制表符、对齐),如下所示 这是对windows驱动程序的测试 2115-XXXXXXXXX分行XXXXX XXXXXXXXXXXXXXXXXX XXXXXXXXXX XX XXXXXXXXX:08/23/16 XXX XXX: 19年8月23日 XXXXXXXXXXXXXX:9 XXXXXX XXX X XXXX:XXX 0,01 XXXXXX XXX XXXXX:1 XXXXXX

我的程序在运行时生成了一个XML文件。这个XMLfile.InnerText()有一些格式(如-enter、空格、制表符、对齐),如下所示

这是对windows驱动程序的测试

2115-XXXXXXXXX分行XXXXX

XXXXXXXXXXXXXXXXXX

XXXXXXXXXX XX

XXXXXXXXX:08/23/16 XXX XXX:

19年8月23日 XXXXXXXXXXXXXX:9


XXXXXX XXX X

XXXX:XXX 0,01

XXXXXX XXX

XXXXX:1

XXXXXXXXX 我正在尝试使用VB.net(提供所用代码作为示例)使用XMLfile.InnerText(使用上述格式和对齐方式)创建word文档

通过使用
Microsoft.Office.Interop.Word.Application->Range.InsertXML()
方法,我可以在Word文件中使用相同的格式


但是我想通过使用OpenXML方法在新创建的word文件中捕获相同的XML格式?

word UI/classic对象模型可以自动处理许多在word应用程序中未打开的文件内容时无法直接使用的内容
InsertXML
本质上执行XML到Word内容的转换。开放式XML SDK中没有直接的等价物

OpenXMLSDK所拥有的是,和

根据Enum文档,XML是这种方法的有效文件格式。结果是否与您必须测试的
InsertXML
相同。altChunk链接包含可以用作起点的示例代码,我将其复制到这里以便于参考

using System.Linq;  
using System.IO;  
using DocumentFormat.OpenXml.Packaging;  
using DocumentFormat.OpenXml.Wordprocessing;  
namespace altChunk  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {            
            string fileName1 = @"c:\Users\Public\Documents\Destination.docx";  
            string fileName2 = @"c:\Users\Public\Documents\Source.docx";  
            string testFile = @"c:\Users\Public\Documents\Test.docx";  
            File.Delete(fileName1);  
            File.Copy(testFile, fileName1);  
            using (WordprocessingDocument myDoc =  
                WordprocessingDocument.Open(fileName1, true))  
            {  
                string altChunkId = "AltChunkId1";  
                MainDocumentPart mainPart = myDoc.MainDocumentPart;  
                AlternativeFormatImportPart chunk =   
                    mainPart.AddAlternativeFormatImportPart(  
                    AlternativeFormatImportPartType.WordprocessingML, altChunkId);  
                using (FileStream fileStream = File.Open(fileName2, FileMode.Open))  
                    chunk.FeedData(fileStream);  
                AltChunk altChunk = new AltChunk();  
                altChunk.Id = altChunkId;  
                mainPart.Document  
                    .Body  
                    .InsertAfter(altChunk, mainPart.Document.Body  
                    .Elements<Paragraph>().Last());  
                mainPart.Document.Save();  
            }             
        }  
    }  
}  
使用System.Linq;
使用System.IO;
使用DocumentFormat.OpenXml.Packaging;
使用DocumentFormat.OpenXml.Wordprocessing;
命名空间altChunk
{  
班级计划
{  
静态void Main(字符串[]参数)
{            
字符串fileName1=@“c:\Users\Public\Documents\Destination.docx”;
字符串fileName2=@“c:\Users\Public\Documents\Source.docx”;
字符串testFile=@“c:\Users\Public\Documents\Test.docx”;
File.Delete(fileName1);
复制(testFile,fileName1);
使用(WordprocessingDocument myDoc=
WordprocessingDocument.Open(fileName1,true))
{  
字符串altChunkId=“AltChunkId1”;
MainDocumentPart mainPart=myDoc.MainDocumentPart;
AlternativeFormatImportPart块=
mainPart.AddAlternativeFormatImportPart(
AlternativeFormatImportPartType.WordprocessingML,altChunkId);
使用(FileStream FileStream=File.Open(fileName2,FileMode.Open))
FeedData(fileStream);
AltChunk AltChunk=新的AltChunk();
altChunk.Id=altChunkId;
主要部分.文件
.身体
.InsertAfter(altChunk,mainPart.Document.Body
.Elements().Last());
mainPart.Document.Save();
}             
}  
}  
}  

这种方法的作用是将外部内容存储为ZIP包的一部分。Word打开文件时,将执行转换,将内容集成到Word文档中。存储的内容在此过程中被删除。

Word UI/classic对象模型自动处理许多在Word应用程序中未打开的文件内容时无法直接使用的内容
InsertXML
本质上执行XML到Word内容的转换。开放式XML SDK中没有直接的等价物

OpenXMLSDK所拥有的是,和

根据Enum文档,XML是这种方法的有效文件格式。结果是否与您必须测试的
InsertXML
相同。altChunk链接包含可以用作起点的示例代码,我将其复制到这里以便于参考

using System.Linq;  
using System.IO;  
using DocumentFormat.OpenXml.Packaging;  
using DocumentFormat.OpenXml.Wordprocessing;  
namespace altChunk  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {            
            string fileName1 = @"c:\Users\Public\Documents\Destination.docx";  
            string fileName2 = @"c:\Users\Public\Documents\Source.docx";  
            string testFile = @"c:\Users\Public\Documents\Test.docx";  
            File.Delete(fileName1);  
            File.Copy(testFile, fileName1);  
            using (WordprocessingDocument myDoc =  
                WordprocessingDocument.Open(fileName1, true))  
            {  
                string altChunkId = "AltChunkId1";  
                MainDocumentPart mainPart = myDoc.MainDocumentPart;  
                AlternativeFormatImportPart chunk =   
                    mainPart.AddAlternativeFormatImportPart(  
                    AlternativeFormatImportPartType.WordprocessingML, altChunkId);  
                using (FileStream fileStream = File.Open(fileName2, FileMode.Open))  
                    chunk.FeedData(fileStream);  
                AltChunk altChunk = new AltChunk();  
                altChunk.Id = altChunkId;  
                mainPart.Document  
                    .Body  
                    .InsertAfter(altChunk, mainPart.Document.Body  
                    .Elements<Paragraph>().Last());  
                mainPart.Document.Save();  
            }             
        }  
    }  
}  
使用System.Linq;
使用System.IO;
使用DocumentFormat.OpenXml.Packaging;
使用DocumentFormat.OpenXml.Wordprocessing;
命名空间altChunk
{  
班级计划
{  
静态void Main(字符串[]参数)
{            
字符串fileName1=@“c:\Users\Public\Documents\Destination.docx”;
字符串fileName2=@“c:\Users\Public\Documents\Source.docx”;
字符串testFile=@“c:\Users\Public\Documents\Test.docx”;
File.Delete(fileName1);
复制(testFile,fileName1);
使用(WordprocessingDocument myDoc=
WordprocessingDocument.Open(fileName1,true))
{  
字符串altChunkId=“AltChunkId1”;
MainDocumentPart mainPart=myDoc.MainDocumentPart;
AlternativeFormatImportPart块=
mainPart.AddAlternativeFormatImportPart(
AlternativeFormatImportPartType.WordprocessingML,altChunkId);
使用(FileStream FileStream=File.Open(fileName2,FileMode.Open))
FeedData(fileStream);
AltChunk AltChunk=新的AltChunk();
altChunk.Id=altChunkId;
主要部分.文件
.身体
.InsertAfter(altChunk,mainPart.Document.Body
.Elements().Last());
mainPart.Document.Save();
}             
}  
}  
}  

这种方法的作用是将外部内容存储为ZIP包的一部分。Word打开文件时,将执行转换,将内容集成到Word文档中。存储的内容将在此过程中删除。

非常感谢您提供的信息。我试过这个密码。。但我在这一行中遇到了一个错误:“对象引用未设置为实例”——ma