使用 Visual C# .NET 向 Microsoft Excel 2002 传输 XML 数据

从数据集生成在 Excel 2002 或 Excel 2003 中使用的 XML

本节说明如何创建 DataSet 对象,以及如何使用 WriteXML 方法将该对象包含的数据导出到 XML 文件中。生成的 XML 文件可以直接在 Excel 中打开。为便于说明,使用 Jet OLEDB 提供程序从 Microsoft Access Northwind 示例数据库创建了 DataSet 对象。但是,类似的代码可与您使用 Visual C# .NET 创建的任何 DataSet 对象一起使用。 1.启动 Microsoft Visual Studio .NET。在 文件 菜单上,单击 新建 ,然后单击 项目 。从 Visual C# 项目类型中选择 Windows 应用程序 。默认情况下创建 Form1。
2.视图 菜单上,选择 工具箱 以显示“工具箱”,然后向 Form1 中添加一个按钮。
3.双击 Button1 。将出现该窗体的代码窗口。
4.将下面的 using 指令添加到 Form1.cs 顶部: `
using System.Data.OleDb;
using System.Xml;

5\. | 将下面的私有成员变量添加到 Form1 类中:

private string strConn ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
	+ " C:\\Program Files\\Microsoft Office\\Office10\\Samples\\"
	+ "Northwind.mdb;";

` 注意 :您可能需要修改连接字符串中 Northwind.mdb 的路径,以便与您安装的位置相匹配。

6. | 在 button1_Click 处理程序中添加以下代码: `

//Connect to the data source.
         OleDbConnection objConn = new OleDbConnection (strConn);
         try
         {
            objConn.Open();

            //Fill a dataset with records from the Customers table.
            OleDbCommand objCmd = new OleDbCommand(
               "Select CustomerID, CompanyName, ContactName, "
               + "Country, Phone from Customers", objConn);
            OleDbDataAdapter objAdapter = new OleDbDataAdapter();
            objAdapter.SelectCommand = objCmd;
            DataSet objDataset = new DataSet();
            objAdapter.Fill(objDataset);


            //Create the FileStream to write with.
            System.IO.FileStream fs = new System.IO.FileStream(
               "C:\\Customers.xml", System.IO.FileMode.Create);

            //Create an XmlTextWriter for the FileStream.
            System.Xml.XmlTextWriter xtw = new System.Xml.XmlTextWriter(
               fs, System.Text.Encoding.Unicode);

            //Add processing instructions to the beginning of the XML file, one
            //of which indicates a style sheet.
            xtw.WriteProcessingInstruction("xml", "version='1.0'");
            //xtw.WriteProcessingInstruction("xml-stylesheet",
              // "type='text/xsl' href='customers.xsl'");

            //Write the XML from the dataset to the file.
            objDataset.WriteXml(xtw);
            xtw.Close();

            //Close the database connection.
            objConn.Close();
         }
         catch (System.Exception ex)
         {
            MessageBox.Show(ex.Message);
         }

`
7. | 按 F5 键生成并运行程序。
8. | 单击 Button1 以创建 XML 文件,然后关闭 Form1 以结束该程序。
9. | 启动 Excel 2002 或 Excel 2003 并打开 C:\Customers.xml 输出文件。
10. | 在您看到已将 XML 分析成新工作簿中的行和列后,请关闭文件并退出 Excel。
返回页首

使用样式表格式化 XML

该步骤介绍如何使用样式表 (XSL) 来转换 XML 数据在 Excel 工作簿中的格式和排列方式。 1. | 使用任何 HTML 编辑器或文本编辑器(例如 Notepad.exe),将下面的 XSL 另存为 C:\Customers.xsl: `

 1<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 2<xsl:template match="/">
 3<html>
 4<head>
 5<style>
 6              .HDR { background-color:bisque;font-weight:bold }
 7            </style>
 8</head>
 9<body>
10<table>
11<colgroup align="CENTER" width="100"></colgroup>
12<colgroup align="LEFT" width="200"></colgroup>
13<colgroup align="LEFT" width="200"></colgroup>
14<colgroup align="LEFT" width="100"></colgroup>
15<colgroup align="LEFT" width="100"></colgroup>
16<td class="HDR">Customer ID</td>
17<td class="HDR">Company</td>
18<td class="HDR">Contact</td>
19<td class="HDR">Country</td>
20<td class="HDR">Phone</td>
21<xsl:for-each select="NewDataSet/Table">
22<tr>
23<td><xsl:value-of select="CustomerID"></xsl:value-of></td>
24<td><xsl:value-of select="CompanyName"></xsl:value-of></td>
25<td><xsl:value-of select="ContactName"></xsl:value-of></td>
26<td><xsl:value-of select="Country"></xsl:value-of></td>
27<td><xsl:value-of select="Phone"></xsl:value-of></td>
28</tr>
29</xsl:for-each>
30</table>
31</body>
32</html>
33</xsl:template>
34</xsl:stylesheet>
`
2.button1_Click 处理程序中取消对以下代码行的注释: `
xtw.WriteProcessingInstruction("xml-stylesheet",
	"type='text/xsl' href='customers.xsl'");

` 此行代码向 XML 文件写入了一个处理指令,Excel 使用该指令来查找样式表 (Customers.xsl)。

3. | 按 F5 键生成并运行程序。
4. | 单击 Button1 以创建 XML 文件,然后关闭 Form1 以结束该程序。
5. | 启动 Excel 2002 或 Excel 2003 并打开 C:\Customers.xml 输出文件。
6. | 因为从 Excel 可以看到 XML 中样式表的处理指令,所以您在打开文件时会收到一个对话框提示。在 导入 XML 对话框中,选择 打开该文件,应用以下样式表 。在列表中,选择 Customers.xsl 并单击 确定 。注意,XML 数据已格式化,并已经根据样式表排列各个列。
7. | 关闭该文件并退出 Excel。
返回页首

使用代码打开转换的 XML

此时,您已经使用 Excel 中的用户界面打开了 XML 文件。本节介绍如何以编程方式使 Excel 自动打开工作簿。下面的示例说明如何通过首先将 DataSet 对象中的 XML 转换成 HTML 来打开转换的 XML,而不需要用户干预。

Published At
Categories with Web编程
Tagged with
comments powered by Disqus