我有一个基本的 XML 文件,我需要将其作为 XML 映射添加到 Excel 2010 工作表中。
如何以编程方式执行此操作?我更喜欢使用 Microsoft OpenXML SDK 的解决方案。
我有一个基本的 XML 文件,我需要将其作为 XML 映射添加到 Excel 2010 工作表中。
如何以编程方式执行此操作?我更喜欢使用 Microsoft OpenXML SDK 的解决方案。
您将需要添加一个并使用CustomXmlMappingsPart您WorkbookPart的 XML 架构填充它。然后您需要添加一个ConnectionsPart链接到您的 xml 文件的文件。
以下 xml 位于我的桌面上的 note.xml 文件中:
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
这是生成 xmlmappings 的代码
CustomXmlMappingsPart part = workbookPart.AddNewPart<CustomXmlMappingsPart>("rId8");
CustomXmlMappingsPart part = new
MapInfo mapInfo1 = new MapInfo(){ SelectionNamespaces = "" };
Schema schema1 = new Schema(){ Id = "Schema1" };
OpenXmlUnknownElement openXmlUnknownElement1 = OpenXmlUnknownElement.CreateOpenXmlUnknownElement("<xsd:schema xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><xsd:element nillable=\"true\" name=\"note\"><xsd:complexType><xsd:sequence minOccurs=\"0\"><xsd:element minOccurs=\"0\" nillable=\"true\" type=\"xsd:string\" name=\"to\" form=\"unqualified\" /><xsd:element minOccurs=\"0\" nillable=\"true\" type=\"xsd:string\" name=\"from\" form=\"unqualified\" /><xsd:element minOccurs=\"0\" nillable=\"true\" type=\"xsd:string\" name=\"heading\" form=\"unqualified\" /><xsd:element minOccurs=\"0\" nillable=\"true\" type=\"xsd:string\" name=\"body\" form=\"unqualified\" /></xsd:sequence></xsd:complexType></xsd:element></xsd:schema>");
schema1.Append(openXmlUnknownElement1);
Map map1 = new Map(){ ID = (UInt32Value)1U, Name = "note_Map", RootElement = "note", SchemaId = "Schema1", ShowImportExportErrors = false, AutoFit = true, AppendData = false, PreserveAutoFilterState = true, PreserveFormat = true };
DataBinding dataBinding1 = new DataBinding(){ FileBinding = true, ConnectionId = (UInt32Value)1U, DataBindingLoadMode = (UInt32Value)1U };
map1.Append(dataBinding1);
mapInfo1.Append(schema1);
mapInfo1.Append(map1);
part.MapInfo = mapInfo1;
此代码生成连接并将其添加到WorkbookPart:
ConnectionsPart part = wookbookPart.AddNewPart<ConnectionsPart>("rId5");
Connections connections1 = new Connections();
Connection connection1 = new Connection(){ Id = (UInt32Value)1U, Name = "note", Type = (UInt32Value)4U, RefreshedVersion = 0, Background = true };
WebQueryProperties webQueryProperties1 = new WebQueryProperties(){ XmlSource = true, SourceData = true, Url = "C:\\Users\\Thomas\\Desktop\\note.xml", HtmlTables = true, HtmlFormat = HtmlFormattingValues.All };
connection1.Append(webQueryProperties1);
connections1.Append(connection1);
part.Connections = connections1;
我使用 Open XML SDK 2.0 Productivity Tool 生成了此代码。我将一个普通的 xlsx 文件与一个添加了简单 XML 映射的文件进行了比较。希望这可以帮助。