我试图将HTML表格导出为Excel,但遗憾的是,我无法继续使用。
我有一个基于前一页过滤器表单结果从数据库表中填充的表。该工作正常并过滤精细,在表格中显示输出。
现在,当我尝试通过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" alt="Edit" /></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>
答案 0 :(得分:0)
您需要精确删除Response.ContentType,以便显示表格格式。实际的html表看起来更重要,因为只有IE才能以最佳方式运行此命令。正如评论7中所述:
https://bugzilla.mozilla.org/show_bug.cgi?id=319428#c7
如果您刚刚将列设置为隐藏,则仍会显示它们。 Response.ContentType最适用于Internet Explorer。对于多个浏览器,您应该查看其他方法来生成Excel报告。如果您需要支持其他浏览器,则需要确保页面上唯一的内容是表格。什么都不应该被隐藏或以其他方式改变而不被显示。
修改强> 根据评论更新
第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" alt="Edit" /></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" alt="Edit" /></a></td>
</tr>
请注意第2页和第3页之间我要做的就是删除表单并添加response.contenttype指令。您似乎将值传递到页面的方式我想象这种格式是不可能的。