2016-07-18 16 views
1

私は、ローカルサーバーでは動作しますが、運用サーバーでは動作しないGridViewからExcelにエクスポートしています。私はいくつかのExcelコンポーネントがサーバーにインストールされる必要があると推測しています。誰かが私がこの作業をするためにインストールする必要があることを知っていますか?ExcelにエクスポートGridView asp.net C# - サーバーコンポーネント

GridViewAllApps.DataBind(); 

Response.Clear(); 
Response.Buffer = true; 
Response.AddHeader("Content-Disposition", "attachment;filename=Applications.xls"); 
Response.Charset = ""; 
Response.ContentType = "application/vnd.ms-excel"; 
System.IO.StringWriter sw = new System.IO.StringWriter(); 
HtmlTextWriter hw = new HtmlTextWriter(sw); 
GridViewAllApps.RenderControl(hw); 
string style = @"<style> .textmode {mso-number-format:\@; } </style>"; 
Response.Write(style); 
Response.Output.Write(sw.ToString()); 
Response.Flush(); 
Response.End(); 
+0

GridViewAllAppsクラスが何であるかわかりません。 –

+0

http://stackoverflow.com/questions/37112957/export-only-gridview-data-to-excel-format-in-asp-net-c-sharp?rq=1 – Kami

+0

GridViewAllAppsは私のDataGridの名前です – IainB

答えて

0

LainB、

本番サーバー上でどのようなエラーが発生していますか? あなたのグリッドサブクラスは、RenderControl()という名前で作成したメソッドを使ってファイルに書き込むhtmlライターを介して、グリッドをExcelファイルにレンダリングします。そのメソッドコードはおそらくあなたのマシン上のOffice Interop dllを使用しています(おそらく、使用するステートメントやプロジェクト参照でそれらを参照するでしょう)。

ウェブサーバー上で実行している場合、コードはIISが許可するものによって制約されます。 Officeコンポーネントをサーバーにインストールしても、Webサイトはファイルにアクセスできません。 また、法的な制約のため、interopファイルをディストリビューションにベーキングすることは禁止されている可能性があります。

はここ Create Excel (.XLS and .XLSX) file from C#

+0

私は何の誤りもありません。何が起こるかは、Excelのコンテキストが開くかどうかを尋ねるポップアップです。あなたが開くように選択した場合、Excelは開きますが、ワークシートは生成されません。保存することを選択すると、有効なファイルサイズを示すファイルが保存されますが、ファイルを開くとファイルは空になります。それはローカルでうまく動作するので、ライブサーバー上のOfficeコンポーネントが不足していると私は信じています。 – IainB

0

ソリューションを参照してください:それは、サーバーにインストールされているExcelのコンポーネントを必要とするため、私はExcelにデータグリッドを書い放棄しました。 Marcのリンクは私がインストールしたEPPlus(dll)につながり、夢のように動作します。

関連する問題