好好学习,天天向上

--每天都有好心情
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

利用Excel模板输出EXcel报表

Posted on 2007-05-08 19:47  凤麟  阅读(2322)  评论(0)    收藏  举报

 首先制作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 

因为现在excel另存为xml格式获取的xml文件比较复杂,现在没有找到一个比较好的方法来查找节点,因此使用了excel自身的名字,这样便于查找节点。可能还有更好的办法。