ASP.NET页面内容导出为Excel

这几天给公司的客户做了一个系统的报表的导出,现在总结一下

一、需要注意的是:

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页代码

 

ContractedBlock.gif ExpandedBlockStart.gif Code
 1ExpandedBlockStart.gifContractedBlock.gifPublic 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.ContentType = "application/vnd.ms-excel"
55        Response.Charset = Nothing
56        Response.Write(strb)
57
58        Response.End()
59    End Sub

60
61ExpandedBlockStart.gifContractedBlock.gif    Protected Sub toExcel_btn_Click()Sub toExcel_btn_Click(ByVal sender As ObjectByVal e As System.EventArgs) Handles toExcel_btn.Click
62        ExportToExcel(Value_hid.Value)
63    End Sub

 

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

ContractedBlock.gif ExpandedBlockStart.gif Code
 1ExpandedBlockStart.gifContractedBlock.gif<%@ 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>
 8ExpandedBlockStart.gifContractedBlock.gif      <script type="text/javascript">
 9    
10    function getHtml()
11ExpandedSubBlockStart.gifContractedSubBlock.gif    {
12    //获取报表主体部分的HTML代码
13          document.getElementById("Value_hid").value=document.getElementById("Report_div").outerHTML;
14         
15    }

16
17
18   
</script>
19</head>
20ExpandedBlockStart.gifContractedBlock.gif<%--body中设置,页面加载完后执行getHtml()--%>
21<body onload="getHtml()">
22    <form id="form1" runat="server">
23    <div>
24    <asp:Button ID="toExcel_btn" runat="server" Text="导出为Excel" /><br />
25ExpandedBlockStart.gifContractedBlock.gif    <%--要导出到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        
57ExpandedBlockStart.gifContractedBlock.gif       <%--隐藏控件--%> 
58    <input id="Value_hid" type="hidden" runat="server"/>
59    </div>
60    </form>
61</body>
62</html>
63

四、页面

五、导出后的Excel

转载于:https://www.cnblogs.com/flamestiger/archive/2008/09/23/1296893.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值