2016-08-24 4 views
0

以下のC#コードを使用して、GridViewを使用してテーブル値をExcelファイルにエクスポートしました。ダウンロードしたExcelがMicrosoftのセキュリティアップデートの後に空白を表示

Response.ContentType = "application/vnd.xls"; 

Response.AddHeader("content-disposition","attachment;filename="+filename+".xls"); 

マイクロソフトのセキュリティアップデート(Microsoft Excelのセキュリティアップデート2010 kb3115322)が最近のセキュリティアップデートまでうまくいっていました。

更新後、Excelファイルの内容を表示できません。それは空白を表示しています。

アップデートをアンインストールした後、私はExcelを見ることができますが、私はC#コードで解決策が必要です。

ありがとうございます。

+0

はそこに何があるか確認するために、メモ帳でXLSファイルを開くように、いずれかの基本的なデバッグを行って?ファイルが空であるため、Excelに何も表示されないことがあります。 –

+0

ディスクにthingyを保存します。ファイルを開くことができるかどうかを確認します。エクスポートされたファイルを更新するにはどうすればよいですか?ファイルを返信しますか?Microsoft.Office.Interop.Excelを使用していますか? – SilentTremor

答えて

2

はいMicrosoftの新しいセキュリティ更新プログラムの問題のため、はい現在のExcelファイル形式に上昇しています。ですから、解決のためには、xlsの代わりにcsv(カンマ区切りのファイル)を作成し、アプリケーションがcsv by '、' seperatorを開くようにしてください。

注:私はこの問題に私のPHPアプリケーションで直面し、PHPExcelライブラリでxlsファイルを作成することで解決しました。PHPExcel for C#も同様に見つかるかもしれません。

ありがとうございました。お気軽にコメントしてください。

+0

はい、フォーマットを.csvファイルに変更したときに開くことができました。しかし、それは適切なフォーマットではありませんでした(位置合わせと見た目)。ファイル形式を変更せずに解決策があれば素晴らしいでしょう。 – G01

+0

ファイル拡張子のみを変更することにより、それはcsv形式のlkieで ID、名前、都市 1、Mahamadali、Palanpur 2、ABC、XYZ をファイルを作成し、それが開くように、ちょうどあなたのコードを変更動作しません。適切なフォーマットで。 – Mahamadali

1

同じ問題が発生します。私の解決策は、すべてのExcelエクスポートをExcelPackで書き直すことでした。そして私はXLSXを使用し、もはやXLSを使用しませんでした。

場合によっては、書き換えがオプションです。

https://excelpackage.codeplex.com/

ExcelPackage package = new ExcelPackage(); 
ExcelWorksheet ws = package.Workbook.Worksheets[1]; 

//header 
ws.Cells[1, 1].Value = "Column1"; 
ws.Cells[1, 2].Value = "Column2"; 
ws.Cells[1, 3].Value = "Column3"; 
ws.Cells[1, 4].Value = "Column4"; 
ws.Cells[1, 5].Value = "Column5"; 

//content 
int i = 1; 

foreach (Item item in list) 
{ 
    i++; 

    ws.Cells[i, 1].Value = item.Prop1; 
    ws.Cells[i, 2].Value = item.Prop2; 
    // format datetime 
    ws.Cells[i, 3].Value = item.Prop3.ToString("yyyy-MM-dd"); 
    ws.Cells[i, 4].Value = item.Prop4; 
    ws.Cells[i, 5].Value = item.Prop5; 
} 

using (var memoryStream = new MemoryStream()) 
{ 
    response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
    response.AddHeader("content-disposition", $"attachment; filename=Filename.xlsx"); 
    package.SaveAs(memoryStream); 
    memoryStream.WriteTo(response.OutputStream); 
    response.Flush(); 
    response.End(); 
} 
関連する問題