共享社区

首页 » 编程技巧共享 » .NET编程技巧共享 » ASP.NET页面内容导出为Excel
mikecat - 2008-9-27 16:27:00
这几天给公司的客户做了一个系统的报表的导出,现在总结一下

一、需要注意的是:

1.页面内容中如果有多张Table,导出到Excel是表格列宽会失效。

2.设置表格的属性为字符串加上x:str="",如<table x:str=""></table>,不加默认是数值,0005导出后会转换为数字5(x:str=""在单元格中指定无效)

3.如果导出的内容为数据要在表格属性上加上x:num="",如<td  style="  width: 54pt;" x:num="" align="center">

4.设置ASPX页面属性ValidateRequest="false"

二、下面是代码,CS页代码



Code
1Public Sub ExportToExcel()Sub ExportToExcel(ByVal htmlString As Object)
2        Response.Clear()
3        Response.Buffer = True
4        Dim fileName As String = "化学月报"
5        Dim strb As New StringBuilder()
6        '显示Excel中的网格线
7        strb.Append("<html xmlns='http://www.w3.org/1999/xhtml' xmlns:x='urn:schemas-microsoft-com:office:excel'>")
8
9
10        strb.Append("<head>")
11
12        strb.Append("<!--[if gte mso 9]><xml>")
13
14        strb.Append("<x:ExcelWorkbook>")
15
16        strb.Append("<x:ExcelWorksheets>")
17
18        strb.Append("<x:ExcelWorksheet>")
19
20        strb.Append("<x:Name>化学月报</x:Name>")
21
22        strb.Append("<x:WorksheetOptions>")
23
24        strb.Append("<x:Print>")
25        strb.Append("<x:ValidPrinterInfo/>")
26
27        strb.Append("</x:Print>")
28
29        strb.Append("</x:WorksheetOptions>")
30
31        strb.Append("</x:ExcelWorksheet>")
32
33        strb.Append("</x:ExcelWorksheets>")
34
35        strb.Append("</x:ExcelWorkbook>")
36
37        strb.Append("</xml>")
38
39        strb.Append("<![endif]--> ")
40
41        strb.Append("</head>")
42
43        strb.Append("<body>")
44        '添加页面内容
45        strb.Append(CStr(htmlString))
46
47        strb.Append("</body></html>")
48
49        Response.AppendHeader("content-disposition", "attachment;filename=" & System.Web.HttpUtility.UrlEncode(fileName & "", System.Text.Encoding.UTF8) + ".xls")
50        '设置编码
51        Response.Charset = "GB2312"
52        Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312")
53
54        Response.C
55        Response.Charset = Nothing
56        Response.Write(strb)
57
58        Response.End()
59    End Sub
60
61    Protected Sub toExcel_btn_Click()Sub toExcel_btn_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles toExcel_btn.Click
62        ExportToExcel(Value_hid.Value)
63    End Sub


三、ASPX页面内容(通过脚本获取HTML代码)

Code
1<%@ Page Language="VB" AutoEventWireup="false" CodeFile="ToExcel.aspx.vb" Inherits="ToExcel" ValidateRequest="false" %>
2
3<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5<html xmlns="http://www.w3.org/1999/xhtml" >
6<head runat="server">
7    <title>无标题页</title>
8      <script type="text/javascript">
9   
10    function getHtml()
11    {
12    //获取报表主体部分的HTML代码
13          document.getElementById("Value_hid").value=document.getElementById("Report_div").outerHTML;
14       
15    }
16
17
18  </script>
19</head>
20<%--body中设置,页面加载完后执行getHtml()--%>
21<body >
22    <form id="form1" runat="server">
23    <div>
24    <asp:Button ID="toExcel_btn" runat="server" Text="导出为Excel" /><br />
25    <%--要导出到Excel中的内容--%>
26    <div id="Report_div" >
27    <table x:str="">
28            <tr>
29                <td style="width: 200px">
30                    宽度200px</td>
31                <td style="width: 100px">
32                    数字</td>
33                <td style="width: 100px">
34                    字符串格式的数字</td>
35            </tr>
36            <tr>
37                <td style="width: 200px; height: 21px;">
38                </td>
39                <td style="width: 100px; height: 21px;" x:num="">
40                    0005</td>
41                <td style="width: 100px; height: 21px;">
42                    0005</td>
43                   
44            </tr>
45            <tr>
46                <td style="width: 200px">
47                </td>
48                <td style="width: 100px">
49                    导出后为5</td>
50                <td style="width: 100px" >
51                    导出后还是为0005</td>
52                   
53            </tr>
54        </table>
55    </div>
56       
57      <%--隐藏控件--%>
58    <input id="Value_hid" type="hidden" runat="server"/>
59    </div>
60    </form>
61</body>
62</html>
63
四、页面


五、导出后的Excel
zhw511006 - 2008-9-29 15:57:00
谢谢分享:D
lvdong5830 - 2008-10-30 8:17:00
超好的东西呀,现在正需要这些东西呀!
1
查看完整版本: ASP.NET页面内容导出为Excel