如何将excel中的数据写入xml文件

1.从数据集生成XML并在Excel中使用。

本节说明如何创建DataSet对象,以及如何通过WriteXML方法将对象中包含的数据导出到XML文件。数据集对象是Microsoft中数据访问的关键部分。NET框架。它是内存中的一个对象,包含表、视图和关系。

您可以打开直接在Excel中生成的XML文件。举例来说,使用Jet OLEDB提供程序基于Access Northwind示例创建一个DataSet对象。类似的代码可用于用Visual Basic .NET创建的DataSet对象。

1.

启动Microsoft Visual Studio?。净.在“文件”菜单上,单击“新建”,然后单击“项目”。从Visual Basic项目类型中选择“Windows应用程序”。默认情况下将创建Form1。

2.

在“视图”菜单上,选择“工具箱”,然后向Form1添加一个按钮。

3.

双击按钮1。将出现窗体的代码窗口。

4.

将下列特殊成员变量添加到Form1类中:

private str conn As String = " Provider = Microsoft。Jet . OLEDB.4.0数据源= " & amp_ " C:\ Program Files \ Microsoft Office \ Office 11 \ Samples \ north wind . MDB;"

注意:您可能需要修改连接字符串中Northwind.mdb的路径以匹配安装。您可以从Microsoft下载中心下载罗斯文商贸示例数据库。此外,请注意,在路径字符串中,数据和源之间有一个空格。

5.

将以下代码添加到Button1_Click处理程序中:

连接到数据源。

Dim对象作为新系统。OleDb.OleDbConnection(strConn)

尝试

objConn。打开()

用customer表中的记录填充数据集。

Dim strSQL作为字符串

Dim objDataset作为新数据集

Dim objAdapter作为新系统。OleDb.OleDbDataAdapter

OLEDbDataAdapter充当数据源之间的桥梁,

在这种情况下,它是客户表和数据集之间的桥梁。

strSQL = "Select CustomerID,CompanyName,ContactName," & amp_

“客户的国家/地区和电话号码”

objAdapter。选择命令=新系统。Data.OleDb.OleDbCommand( _

strSQL,objConn)

objAdapter。填充(对象数据集)

创建要使用的文件流。

Dim strFilename作为字符串

strFilename = "C:\Customers.xml "

Dim fs作为新系统。IO.FileStream(strFilename,_

系统。IO.FileMode.Create)

为FileStream创建XmlTextWriter。

Dim xtw作为新系统。Xml.XmlTextWriter(fs,_

系统。文本.编码. Unicode)

将处理指令添加到XML文件的开头。

指示样式表的处理指令之一。

xtw。WriteProcessingInstruction(" XML "," version='1.0 ' ")

xtw。WriteProcessingInstruction( _

" XML-样式表"," type = ' text/xsl ' href = ' customers . xsl ' ")

将数据集中的XML写入文件。

objDataset。写Xml(xtw)

xtw。关闭()

MsgBox("客户数据已导出到c: \ customers.xml . ")

将ex作为异常捕获

MsgBox(例如消息)

结束尝试

6.

按F5创建并运行该程序。

7.

单击按钮1创建一个XML文件,然后关闭Form1以结束程序。

8.

启动Excel并打开C:\Customers.xml输出文件。

9.

查看由Excel解析并映射到新工作簿中的行和列的XML后,关闭文件并退出Excel。

第二,使用样式表格式化XML。

此步骤显示如何使用可扩展样式语言(XSL)样式表来转换Excel工作簿格式化和组织XML数据的方式。

注意:在XML样式表文件中,XML标记描述文本文件中的数据,但是XML本身不能指定如何向用户显示数据。XML数据格式的设置规则往往包含在XSL样式表中。XML样式表是一个格式良好的XML文档,它可以使用XSL来转换XML数据以便显示。同一个XML数据可以有许多样式表。尽管实际的XML数据结构可能是相同的,但是XSL样式表可以灵活地以许多不同的格式显示数据。

1.

使用任何HTML编辑器或文本编辑器(如Microsoft记事本)将以下XSL保存为C:\Customers.xsl:

& ltXSL:style sheet xmlns:XSL = " http://www . w3 . org/1999/XSL/Transform " version = " 1.0 " & gt;

& ltxsl:template match = "/" & gt;

& ltHTML & gt

& ltHEAD & gt

& ltSTYLE & gt

。HDR {背景色:浓汤;font-weight:bold }

& lt/STYLE & gt;

& lt/HEAD & gt;

& ltBODY & gt

& lt表& gt

& ltCOLGROUP WIDTH = " 100 " ALIGN = " CENTER " >& lt/col group & gt;

& ltCOLGROUP WIDTH="200" ALIGN="LEFT " >& lt/col group & gt;

& ltCOLGROUP WIDTH="200" ALIGN="LEFT " >& lt/col group & gt;

& ltCOLGROUP WIDTH = " 100 " ALIGN = " LEFT " >& lt/col group & gt;

& ltCOLGROUP WIDTH = " 100 " ALIGN = " LEFT " >& lt/col group & gt;

& ltTD CLASS = " HDR " & gt;客户id

& ltTD CLASS = " HDR " & gt;公司

& ltTD CLASS = " HDR " & gt;接触

& ltTD CLASS = " HDR " & gt;国家/地区

& ltTD CLASS = " HDR " & gt;电话

& ltxsl:for-each select = " new dataset/Table " & gt;

& ltTR & gt

& ltTD & gt& ltxsl:value-of select = " CustomerID "/& gt;& lt/TD & gt;

& ltTD & gt& ltxsl:value-of select = " company name "/& gt;& lt/TD & gt;

& ltTD & gt& ltxsl:value-of select = " contact name "/& gt;& lt/TD & gt;

& ltTD & gt& ltxsl:value-of select = " Country "/& gt;& lt/TD & gt;

& ltTD & gt& ltxsl:value-of select = " Phone "/& gt;& lt/TD & gt;

& lt/TR & gt;

& lt/xsl:for-each & gt;

& lt/TABLE & gt;

& lt/BODY & gt;

& lt/HTML & gt;

& lt/xsl:template & gt;

& lt/xsl:style sheet & gt;

2.

删除Button1_Click处理程序中以下行的注释标记:

xtw。WriteProcessingInstruction(_ " XML-style sheet "," type = ' text/xsl ' href = ' customers . xsl ' ")

这行代码将处理指令写入一个XML文件,Excel用它来定位XSL样式表(Customers.xsl)。

3.

按F5创建并运行该程序。

4.

单击按钮1创建一个XML文件,然后关闭Form1以结束程序。

5.

启动Excel并打开C:\Customers.xml输出文件。

6.

因为Excel可以通过XML文件指定XSL样式表的处理指令,所以打开文件时会收到对话框提醒。在“导入XML”对话框中,选择“打开此文件并应用以下样式表”。在列表中,选择Customers.xsl并单击确定。请注意,Excel根据XSL样式表格式化XML数据和组织列。

7.

关闭文件并退出Excel。

第三,使用代码打开转换后的XML。

此时,您已经使用Excel的用户界面打开了XML文件。本节说明如何让Excel以编程方式自动打开工作簿。以下示例显示如何在打开转换后的XML之前将DataSet对象中的XML转换为超文本标记语言(HTML )(无需用户干预)。

1.

在Visual Basic中。NET项目,再添加一个按钮到Form1。

2.

双击按钮2。显示窗体的代码窗口后,将以下代码添加到Button2_Click处理程序中:

连接到数据源。

Dim对象作为新系统。OleDb.OleDbConnection(strConn)

尝试

objConn。打开()

用customer表中的记录填充数据集。

Dim strSQL作为字符串

Dim objDataset作为新数据集

Dim objAdapter作为新系统。OleDb.OleDbDataAdapter

strSQL = "Select CustomerID,CompanyName,ContactName," & amp_

“客户的国家/地区和电话号码”

objAdapter。选择命令=新系统。Data.OleDb.OleDbCommand( _

strSQL,objConn)

objAdapter。填充(对象数据集)

创建要使用的文件流。

Dim strFilename作为字符串

strFilename = "C:\Customers.htm "

Dim fs作为新系统。IO.FileStream(strFilename,_

系统。IO.FileMode.Create)

为FileStream创建XmlTextWriter。

Dim xtw作为新系统。Xml.XmlTextWriter(fs,_

系统。文本.编码. Unicode)

使用样式表转换XML。

Dim xmlDoc作为系统。Xml.XmlDataDocument = _

新系统。Xml.XmlDataDocument(objDataset)

Dim xslTran作为系统。Xml.xsl.XslTransform = _

新系统。Xml转换

xslTran。Load("c:\customers.xsl ")

xslTran。Transform(xmlDoc,Nothing,xtw,Nothing)

将转换后的XML写入文件。

objDataset。写Xml(xtw)

xtw。关闭()

启动Excel并打开获得的文件。

Dim oExcel作为对象

oExcel = CreateObject("Excel。应用”)

oExcel。workbooks . Open(" C:\ customers . htm ")

使Excel可见并提供给用户。

控制应用程序的权限。

oExcel。可见=真

oExcel。UserControl = True

将ex作为异常捕获

MsgBox(例如消息)

结束尝试

3.

按F5创建并运行该程序。

4.

单击按钮2在Microsoft Excel中打开转换后的XML。

注意:虽然Excel对象模型的OpenXML方法允许您以编程方式打开XML文件并应用样式表,但前面的示例没有调用此方法。因为在自动化客户端使用该方法存在一个已知的问题。通过Excel宏调用OpenXML方法可以如期完成。但是,如果从自动化客户端调用此方法,系统将忽略

四。结论

本文介绍了如何根据XML生成数据集,如何使用schema格式化XML数据,如何自动化Excel和显示XML。您可以使用这些操作向您的应用程序添加重要的功能。尝试本文中提供的代码示例,您可以组合不同的操作并增强您的应用程序的有效性。