2013-02-13 22 views
0

我是在ASP.net中生成/發送Excel報告的整個問題的新手。如何生成併發送到客戶端Excel中的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>") 

回答

0

是所有的代碼?你是否反應並最終確定了它?

除此之外,在excel的情況下,有很多服務器組件可以自動生成excel工作簿並將該文件作爲附件返回給客戶端(所有處理均在服務器上完成)。

最後(並且這通常是最後的措施措施),您在服務器上安裝了Excel自動化。

檢查this answer,這裏有你可用的不同選擇的細分。

+0

Response.End()在Response.Write()之後使用。 – 2013-02-13 20:45:41

+0

我沒有寫這段代碼,它看起來像Response.End()畢竟不應該使用。它看起來像context.Response.Flush(); context.ApplicationInstance.CompleteRequest();應該在Response.Write()在非錯誤情況下使用。你同意嗎 ? – 2013-02-13 20:56:49

+0

是的,response.end是要避免的 – 2013-02-13 21:06:09

相關問題