如何在ASP.NET中生成并发送到客户端Excel报表

时间:2013-02-13 18:18:14

标签: asp.net excel

我对ASP.net中生成/发送Excel报告的整个问题不熟悉。

下面的代码有时不适用于大量数据(大型Excel报告),但仅限于不在我们公司的用户从其浏览器请求它。它总是有效,如果我运行它,我位于服务器所在的同一建筑物。

客户端拥有IE9和MS Office 2010.客户端不会出现任何错误。经过漫长的等待时间后,客户根本无法获得报告。似乎超时没有错误。

为客户提供大型Excel报告,是否有以下方法的替代方案?

以下代码中出现的任何错误都可能导致问题?

为客户端生成可以在Excel中打开的客户端报告的最佳=健壮方法是什么?

Response.ContentType = "application/ms-excel" 
Response.AddHeader("Content-Disposition", "attachment; filename=" + ReportName + ".xls") 

Response.Write("<table border =1>") 
For Each ch As ColumnHeaders In arrCh 
    If ch.ColumnName <> "" Then 
            pCh = pCh & "<td><b>" & ch.ColumnName & "</b></td>" 
                    pColCount = pColCount + 1 
                End If 
Next 

If pExtraHeader <> "" Then 
    Response.Write(pExtraHeader) 
End If 
Response.Write("<tr>" & pCh & "</tr>") 
If oSQLDataReader.HasRows Then 
    Do While oSQLDataReader.Read() 
            Response.Write("<tr>") 
                For I = 0 To arrCh.Count - 1 
                    If arrCh(I + 1).columnname <> "" Then 
                        Response.Write("<td>" & strColumnValue & "</td>") 
                        If arrCh.Item(I + 1).isTotal = True Then 
                            arrCh.Item(I + 1).placeholder = CDbl(arrCh.Item(I + 1).placeholder) + CDbl(oSQLDataReader.GetValue(I)) 
                        End If 
                     End If 
                Next 
                Response.Write("</tr>") 
        Loop 

        Dim pTotal As String = "" 
        For Each ch As ColumnHeaders In arrCh 
            If ch.ColumnName <> "" Then 
              pTotal = pTotal & "<td><b>" & strColumnValue & "</b></td>" 
          End If 
        Next 
    Response.Write("<tr>" & pTotal & "</tr>" 

End If 
Response.Write("</table>") 

1 个答案:

答案 0 :(得分:0)

这就是所有的代码吗?你是否正在回应并最终确定它?

除此之外,在excel的情况下,有许多服务器组件可以自动生成excel工作簿并将文件作为附件返回给客户端(所有处理都在服务器上完成)。

最后(并且这始终是最后的手段)您在服务器上安装了Excel Automation。

检查this answer,此处列出了您可用的不同替代方案。