首先制作exceL模板:
1.设计EXCEL模板格式.
2 .把你想写数据的单元格命上名字,即EXCEL的命名,最好和数据库中的字段对应起来,有一定的规律性如 XML_+数据库字段名。
3.然后往里面输上数据,谁便什么都可以但是一定要符合你单元格的格式,如字符型就要输字符,数字型就输数字.
这一步骤只是为了往EXCEL中查数据,因为EXCEL生成的XML数据在Data这个节点下,你不先写数据就没有这个节点。 (因为现在还没有找到可以直接往EXCEL生成的XML文件中填写数据的方法,只能通过它的名字查找DATA节点来写入数据.)
4.用记事本打开,然后把你写的那些数据替换为空(这是为了清空数据,生成模板.)
5. 保存为XML文件,点击令存为,保存为xml文件。
1 mports System.Xml
2 Imports System.Data
3 Partial Class ScrbClass Scrb
4 Inherits System.Web.UI.Page
5
6 Protected Sub form1_Load()Sub form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles form1.Load
7 Dim dateselect As String = String.Empty
8 Dim rpttype As String = String.Empty
9 Dim filepath As String = String.Empty
10 If Request.QueryString("qdate") IsNot Nothing Then
11 dateselect = (Request.QueryString("qdate")).Trim()
12 Else
13 dateselect = System.DateTime.Today.AddDays(-1).ToString("yyyy-MM-dd")
14 End If
15
16 filepath = Server.MapPath("report报表.xml")//在这里即是前面所生成的模版的地址。
17 Dim xmldoc As XmlDocument = New XmlDocument()
18 xmldoc.Load(filepath)
19 '添加命名空间注意:必须添加命名空间否则SelectSingleNode(xmlpath, manager)函数就会出错。
20 Dim manager As XmlNamespaceManager = New XmlNamespaceManager(xmldoc.NameTable)
21 manager.AddNamespace(String.Empty, "urn:schemas-microsoft-com:office:spreadsheet")
22 manager.AddNamespace("o", "urn:schemas-microsoft-com:office:office")
23 manager.AddNamespace("x", "urn:schemas-microsoft-com:office:excel")
24 manager.AddNamespace("html", "http://www.w3.org/TR/REC-html40")
25 manager.AddNamespace("x2", "http://schemas.microsoft.com/office/excel/2003/xml")
26 manager.AddNamespace("ss", "urn:schemas-microsoft-com:office:spreadsheet")
27 Dim root As XmlNode = xmldoc.DocumentElement '定义根节点
28 Dim pointname, xmlpath, dsvalue As String
29 Dim xmlnd As XmlNode
30
31 /这里去掉了根据前面定义的excel名称查找相应节点,把相应的值付给相应的节点。/
32
33 Catch ex As Exception
34 Response.Write(ex.Message)
35 End Try
36 Response.Buffer = True
37 Response.ContentType = "application/vnd.ms-excel"//输出为excel格式
38 Dim xmltext As String = xmldoc.InnerXml
39 Response.Write(xmltext)
40 Response.End()
41
42 End Sub
43 End Class
44
2 Imports System.Data
3 Partial Class ScrbClass Scrb
4 Inherits System.Web.UI.Page
5
6 Protected Sub form1_Load()Sub form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles form1.Load
7 Dim dateselect As String = String.Empty
8 Dim rpttype As String = String.Empty
9 Dim filepath As String = String.Empty
10 If Request.QueryString("qdate") IsNot Nothing Then
11 dateselect = (Request.QueryString("qdate")).Trim()
12 Else
13 dateselect = System.DateTime.Today.AddDays(-1).ToString("yyyy-MM-dd")
14 End If
15
16 filepath = Server.MapPath("report报表.xml")//在这里即是前面所生成的模版的地址。
17 Dim xmldoc As XmlDocument = New XmlDocument()
18 xmldoc.Load(filepath)
19 '添加命名空间注意:必须添加命名空间否则SelectSingleNode(xmlpath, manager)函数就会出错。
20 Dim manager As XmlNamespaceManager = New XmlNamespaceManager(xmldoc.NameTable)
21 manager.AddNamespace(String.Empty, "urn:schemas-microsoft-com:office:spreadsheet")
22 manager.AddNamespace("o", "urn:schemas-microsoft-com:office:office")
23 manager.AddNamespace("x", "urn:schemas-microsoft-com:office:excel")
24 manager.AddNamespace("html", "http://www.w3.org/TR/REC-html40")
25 manager.AddNamespace("x2", "http://schemas.microsoft.com/office/excel/2003/xml")
26 manager.AddNamespace("ss", "urn:schemas-microsoft-com:office:spreadsheet")
27 Dim root As XmlNode = xmldoc.DocumentElement '定义根节点
28 Dim pointname, xmlpath, dsvalue As String
29 Dim xmlnd As XmlNode
30
31 /这里去掉了根据前面定义的excel名称查找相应节点,把相应的值付给相应的节点。/
32
33 Catch ex As Exception
34 Response.Write(ex.Message)
35 End Try
36 Response.Buffer = True
37 Response.ContentType = "application/vnd.ms-excel"//输出为excel格式
38 Dim xmltext As String = xmldoc.InnerXml
39 Response.Write(xmltext)
40 Response.End()
41
42 End Sub
43 End Class
44
因为现在excel另存为xml格式获取的xml文件比较复杂,现在没有找到一个比较好的方法来查找节点,因此使用了excel自身的名字,这样便于查找节点。可能还有更好的办法。
浙公网安备 33010602011771号