如何使用VB.NET中的openxml方法从现有XML文件数据创建word文件,并使用所有设置(格式和对齐方式)?
我的程序在运行时生成了一个XML文件。这个XMLfile.InnerText()有一些格式(如-enter、空格、制表符、对齐),如下所示 这是对windows驱动程序的测试 2115-XXXXXXXXX分行XXXXX XXXXXXXXXXXXXXXXXX XXXXXXXXXX XX XXXXXXXXX:08/23/16 XXX XXX: 19年8月23日 XXXXXXXXXXXXXX:9如何使用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
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