我正在使用javascript动态创建html表格。一旦创建了此表,我需要能够通过点击按钮将其导出为excel。我已经尝试了一些东西,但他们没有为我工作。从javascript导出动态创建的表格到Excel
我试图创建的Active X对象执行从JavaScript简单的出口,但在IE中该设置被锁定所以我们的浏览器不会与Active X上运行
我尝试导出到Excel从使用HttpContext类的函数后面的代码,但由于表是动态创建的,服务器不会看到它。
我最后的方法,我确信这是行得通的,是我通过pagemethod将AJAX导出到excel。我打算在javascript中创建一个表格数组并将其传递给pagemethod。但在进入这一步之前,我创建了一个页面方法,将一个simpe“Test”文件导出为excel。它的工作方式是通过点击按钮调用,所以我认为它也可以从pagemethod中获得。它没有:(它运行并完成PageMethod的,但没有打开Excel或出口任何东西没有错误并执行成功的功能
这里是代码:。
<System.Web.Service.WebMethod()>
Public Shared Function exportTable(ByVal title As String) As String
HttpContext.Current.Response.ClearContext()
HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename="TEST.xls")
HttpContext.Current.Response.ContentType = "application/vnd.ms-excel"
HttpContext.Current.Response.Write("<?xml version='1.0'?>")
HttpContext.Current.Response.Write("<ss:Workbook xmlns:ss='urn:schemas-microsoft-com:office:spreadsheet'>")
HttpContext.Current.Response.Write("<ss:Worksheet ss:Name='sheet1'>")
HttpContext.Current.Response.Write("<ss:Table>")
HttpContext.Current.Response.Write("<ss:Row>")
HttpContext.Current.Response.Write("<ss:Cell><ss:Data ss:Type='String'>TEST</ss:Data></ss:Cell>")
HttpContext.Current.Response.Write("</ss:Row>")
HttpContext.Current.Response.Write("</ss:Table>")
HttpContext.Current.Response.Write("</ss:Worksheet>")
HttpContext.Current.Response.Write("</ss:Workbook>")
HttpContext.Current.ApplicationInstance.CompleteRequest()
Return 0
End Function
我的页面方法调用:
function exportToExcel(title) {
PageMethods.exportTable(title, exportSuccess, exportFailure)
}
的exportSuccess功能是一种简单的警报,这是射击我认为这意味着该PageMethod的无错执行,但它不能打开Excel或..某事
我最终想传递一个数组并循环遍历它来添加行和数据。我用非动态表格完成了这个工作。我也将使用标题来定义文件名,但出于测试的原因,我已将其命名为TEST.xls。
我将HttpContext代码复制并粘贴到一个按钮单击事件中,并且它对静态表格工作良好,所以我不认为有任何问题。但我知道是错的。
我想我的问题是可以将PageMethod导出为excel或使用HttpContext类?有没有更好/更简单的方法来做到这一点?
请记住,我不能使用ActiveX对象,并且所有客户都需要使用IE。
感谢您的帮助,对不起,如果这已被覆盖。我搜查了但没有找到任何东西。如果有的话,可否请你指点我的帖子?