asp导出数据到EXCEL表格
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp导出数据到EXCEL表格相关的知识,希望对你有一定的参考价值。
我这里有几万条数据我想把这些数据导出到EXCEL的两个列中(数据是从数据库提取出来的)
asp导出到excel在开头加上这一句
Response.ContentType = "application/vnd.ms-excel"
如果导出结果为空白的,那就去掉它
一下是导出Excel代码
--------------------------------------------------------------------------------
<%
set rs=server.createobject("adodb.recordset")
sql="select * from provinceinfo where 1=1"
rs.open sql,objconn,1,1
Set ExcelApp =CreateObject("Excel.Application")
ExcelApp.Application.Visible = True
Set ExcelBook = ExcelApp.Workbooks.Add
ExcelBook.WorkSheets(1).cells(1,1).value ="用户表"
ExcelBook.WorkSheets(1).cells(2,1).value = "用户编号"
ExcelBook.WorkSheets(1).cells(2,2).value = "登陆名"
ExcelBook.WorkSheets(1).cells(2,3).value = "真实姓名"
ExcelBook.WorkSheets(1).cells(2,4).value = "密码"
cnt =3
do while not rs.eof
ExcelBook.WorkSheets(1).cells(cnt,1).value = rs("provinceid")
ExcelBook.WorkSheets(1).cells(cnt,2).value = rs("province")
ExcelBook.WorkSheets(1).cells(cnt,3).value = rs("flag")
ExcelBook.WorkSheets(1).cells(cnt,4).value = rs("id")
rs.movenext
cnt = cint(cnt) + 1
loop
Excelbook.SaveAs "d:\\yourfile.xls" '这个是数据导出完毕以后在D盘存成文件
ExcelApp.Application.Quit '导出以后退出Excel
Set ExcelApp = Nothing '注销Excel对象
%>
因你数据量大 另提示EXCEL相关信息
Excel 2007及以后版本,一个工作表最多可有1048576行,16384列;
所以建议用2007以上版本的excel
这位大哥。。。你这段代码我把从数据库提取数据的步骤删除了随便给了几条数据添加不成果啊。。。提示
Microsoft VBScript 编译器错误 '800a0409'
未结束的字符串常量
\test.asp, line 17
你这个人太实在,何必把数据库提取步骤删了,你把sql加一句 top 10 * 不就可以测试了,
然后15-21行代码,就是给EXCEL列设置个字头而已,要是你测试出错就删了吧
麻烦再问个问题。。。。。。如果我写入的字符想换行该怎么办呢?
追答啥?内容取出来写入前先处理,用 &vbcrlf
excel换行设置,自行搜索百度。
打开ACCESS-文件-获取外部数据。后面的你应该会了啊。
.asp文件不可以直接用网页查看,在你自己的计算机上可以安装一个iis,具体的安装方法你可以在百度上搜索,但是必须要有windows安装盘才可以。
安装完了后,管理工具-internet信息服务-本地计算机-网站-默认网站-新建你的.asp所在目录。浏览就可以了。
打字不易,如满意,望采纳。追问
。。。。。前面如何配置asp服务器我都会,我的意思是吧ACCESS的一个表里面的数据用asp读取出来,循环成特定的格式然后再 把他放到excel表格当中,前面的asp读取我已经写完了。。。。数据已经出来了。。。就是不过会用ASP导出到excel表格当中
导出到 excel - ASP 问题
【中文标题】导出到 excel - ASP 问题【英文标题】:Export to excel - ASP problems 【发布时间】:2014-10-14 08:41:07 【问题描述】:我正在尝试将 HTML 表格导出到 Excel,但不幸的是,我无法执行。
我有一个表,它是根据前一页过滤器表单的结果从数据库表中填充的。 from 工作正常,过滤良好,在表格中显示输出。
现在,当我尝试让它通过 ASP 下载表时,它会下载整个 SQL 表。我尝试以隐藏的形式再次存储结果,并通过它下载;不起作用。当它移动到下一页时,它会丢失每个字段的数据,而是占用整个 SQL 表。
据我了解,我一直在使用 Response.ContentType 和 Response.AddHeader,这是您导出到 excel/csv 的方式。
如果有人可以帮助我,以便我可以在同一个页面中通过超链接/按钮单击开始下载,那就太好了。
编辑:
<tr>
<td name="StationReference"><a href="Inventory_details.asp?Name=<%=statRS("StationReference")%>&InventoryID=<%=statRS("InventoryID")%>"><%=statRS("StationReference")%></a></td>
<td name="RepairStatus"><%=statRS("RepairStatus")%></td>
<td name="SSD"><%=statRS("SSD")%></td>
<td name="Motherboard"><%=statRS("Motherboard")%></td>
<td name="PSU"><%=statRS("PSU")%></td>
<td name="NetworkLogin"><%=rsGlobalUsers("NetworkLogin")%></td>
<td name="RepairDate"><%=statRS("RepairDate")%></td>
<td name="Location"><%=statRS("LocationName")%></td>
<td align="center"><a href="repairsEdit.asp?InventoryID=<%=statRS("InventoryID")%>"><img src="../Images/Icon_edit.gif" align="absmiddle" /></a></td>
</tr>
以上代码显示过滤/搜索发生后的表格
以下代码为隐藏表单
<form id="hiddenDownload" name="hiddenDownload" action="downloadTable.asp" method="post">
<input type="hidden" name="TheSearch" value="<%=statRS("InventoryID")%>">
<input type="hidden" name="StationReference" value="<%=statRS("StationReference")%>">
<input type="hidden" name="RepairStatus" value="<%=statRS("RepairStatus")%>">
<input type="hidden" name="SSD"value="<%=statRS("SSD")%>">
<input type="hidden" name="Motherboard" value="<%=statRS("Motherboard")%>">
<input type="hidden" name="PSU" value="<%=statRS("PSU")%>">
<input type="hidden" name="rtRepairedBy" value="<%=rsGlobalUsers("NetworkLogin")%>">
<input type="hidden" name="rtRepairDate"value="<%=statRS("RepairDate")%>">
<input type="hidden" value="<%=statRS("LocationName")%>">
<input type="submit" value="Download">
</form>
【问题讨论】:
如果去掉页面中的 response.contenttype 指令,html 表格是什么样子的?您是在 Internet Explorer 或其他浏览器中检索文件吗?您实际上是在删除不需要的字段,还是只是将它们设置为隐藏? 删除 Response.ContentType 不会做任何事情,只是正常显示表格。我已经在 Internet Explorer、chrome 和 firefox 中尝试过。我想要的那些字段都是显示的,除了我没有放入隐藏表单的“编辑”列。谢谢 嗨,这将仅用于 IE,因为它是 Intranet 的一部分,并且许多旧的东西只与 IE 真正兼容。我希望做的类似于第一页,过滤器发生在哪里,然后它被输入到表格中处理并输出excel文件。感谢您的所有帮助,非常感谢。 好的,如果我错了,请纠正我,但这就是你在做什么。第 1 步用户为表格上的页面设置过滤器。第 2 步过滤器通过 javascript onChange 事件传递到表单中的隐藏字段。第 3 步用户点击提交按钮,将过滤器参数传递到后续页面。第 4 步 SQL 过程在接受附加过滤器参数的新页面上运行。步骤 5 使用结果在页面上构建 html 表。第 6 步 Response.ContentType 指令允许用户将 html 表格下载为 excel 文件。 有点。逻辑如下: 第 1 页 - 用户使用表单进行过滤/搜索。第 2 页 - SQL 语句等已到位并搜索数据库表,在表中显示适当的数据。此页面上需要一个按钮/超链接才能导出到 Excel。第 3 页应该是生成 excel 文件并提供打开/保存的页面。不应在页面本身上显示任何内容,如果可能,不要直接离开第 2 页。如果您需要更多信息,请告诉我。 【参考方案1】:您需要精确删除 Response.ContentType 以便显示表格格式。实际的 html 表看起来更重要,因为只有 IE 才能使用此命令以最佳方式运行。如评论 7 所述:
https://bugzilla.mozilla.org/show_bug.cgi?id=319428#c7
如果您刚刚将列设置为隐藏,它们仍会显示。 Response.ContentType 仅适用于 Internet Explorer。对于多个浏览器,您应该研究其他方法来生成 Excel 报告。如果您需要支持其他浏览器,您需要确保页面上唯一的东西是表格。不应隐藏任何内容或以其他方式更改为不显示。
编辑: 基于cmets更新
第 2 页和第 3 页应该彼此相同,而不仅仅是相似。如果您不能按原样复制页面而不进行任何更改,那么就有问题了。以下示例应说明这一点:
第 1 页:
<Form id="form1" action="page2.asp" method="post">
Sell Location: <input type="text" name="sellLocation"><br />
<input type="submit">
</form>
第 2 页:
<%
sLoc = Request("sellLocation")
Set objCmd = CreateObject("ADODB.Command")
Set objCmd.ActiveConnection = oConn
objCmd.CommandType = 4 'Stored Proc
objCmd.CommandText = "YourStoredProcedure"
objCmd.Parameters.Refresh
objCmd.Parameters("sellLocation") = sLoc
Set obj_rst = objCmd.Execute
%>
<Form id="form1" action="page3.asp" method="post">
<input type="hidden" name="sellLocation"><br />
<input type="submit" value="download">
</form>
<tr>
<td name="StationReference"><a href="Inventory_details.asp?Name=<%=statRS("StationReference")%>&InventoryID=<%=statRS("InventoryID")%>"><%=statRS("StationReference")%></a></td>
<td name="RepairStatus"><%=statRS("RepairStatus")%></td>
<td name="SSD"><%=statRS("SSD")%></td>
<td name="Motherboard"><%=statRS("Motherboard")%></td>
<td name="PSU"><%=statRS("PSU")%></td>
<td name="NetworkLogin"><%=rsGlobalUsers("NetworkLogin")%></td>
<td name="RepairDate"><%=statRS("RepairDate")%></td>
<td name="Location"><%=statRS("LocationName")%></td>
<td align="center"><a href="repairsEdit.asp?InventoryID=<%=statRS("InventoryID")%>"><img src="../Images/Icon_edit.gif" align="absmiddle" /></a></td>
</tr>
第 3 页:
<%
Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader "content-disposition", " filename=yourspreadsheetname.xls"
sLoc = Request("sellLocation")
Set objCmd = CreateObject("ADODB.Command")
Set objCmd.ActiveConnection = oConn
objCmd.CommandType = 4 'Stored Proc
objCmd.CommandText = "YourStoredProcedure"
objCmd.Parameters.Refresh
objCmd.Parameters("sellLocation") = sLoc
Set obj_rst = objCmd.Execute
%>
<tr>
<td name="StationReference"><a href="Inventory_details.asp?Name=<%=statRS("StationReference")%>&InventoryID=<%=statRS("InventoryID")%>"><%=statRS("StationReference")%></a></td>
<td name="RepairStatus"><%=statRS("RepairStatus")%></td>
<td name="SSD"><%=statRS("SSD")%></td>
<td name="Motherboard"><%=statRS("Motherboard")%></td>
<td name="PSU"><%=statRS("PSU")%></td>
<td name="NetworkLogin"><%=rsGlobalUsers("NetworkLogin")%></td>
<td name="RepairDate"><%=statRS("RepairDate")%></td>
<td name="Location"><%=statRS("LocationName")%></td>
<td align="center"><a href="repairsEdit.asp?InventoryID=<%=statRS("InventoryID")%>"><img src="../Images/Icon_edit.gif" align="absmiddle" /></a></td>
</tr>
请注意,在第 2 页和第 3 页之间,我所要做的就是删除表单并添加 response.contenttype 指令。您现在似乎将值传递到页面的方式我想这种格式是不可能的。
【讨论】:
以上是关于asp导出数据到EXCEL表格的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET 导出EXCEL时如何不把一些不是EXCEL的符号一起导出到EXCEL?