ASP.NET页面内容导出为Excel
2008-09-24 15:22
561 查看
这几天给公司的客户做了一个系统的报表的导出,现在总结一下
一、需要注意的是:
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
1
Public 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
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 onload="getHtml()">
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
一、需要注意的是:
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
1
Public 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
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 onload="getHtml()">
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
相关文章推荐
- asp.net table页面内容导出到Excel
- ASP.NET页面内容导出为Excel
- 将ASP.NET页面内的数据导出到Excel 或 Word中
- Asp.net WEB页面直接导出Excel方法
- 将ASP.NET页面内的数据导出到Excel 或 Word中
- 从Asp.net导出excel时防止连页面一起导出
- asp.net中将DataGrid的内容导出为excel文件
- ASP.NET AJAX Advance Tips & Tricks (10) 解决使用AJAX Extender时的页面导出(Word/Excel)问题(Extender control 'XXX' is not a registered extender control)
- 将ASP.NET页面内地数据导出到Excel 或 Word里面
- asp.net 将GridView本页内容导出到Excel
- asp.net导出excel和打印指定内容的简单代码
- Asp.Net页面导入和导出到EXCEL
- ASP.NET AJAX Advance Tips & Tricks (10) 解决使用AJAX Extender时的页面导出(Word/Excel)问题(Extender control 'XXX'
- asp.net将控件或页面数据导出到Excel
- 将ASP.NET页面内的数据导出到Excel或Word中
- asp.net 生成 excel导出保存时, 解决迅雷下载aspx页面问题
- asp.net 将内容导出EXCEL文件(转)
- ASP.NET Export to Excel(导出数据到Excel) & C#导出Excel,某单元格内容长度超过255的处理方法
- 在ASP.NET Web Forms中使用页面导出伪xls Excel表格
- asp.net 导出excel 中的乱码问题及 到处内容丢失开头的0 的解决方法