トップ回答者
ASP.NETを使用してのExcelファイルダウンロードのやり方について

質問
-
はじめまして、宜しくお願いいたします。
ASP.NETで、SQL Serverからデータ取得した結果をExcelファイル形式で作成してダウンロードを行えるようにしようとしているのですが。
StringBulder型の変数にどんどんSQL取得データを追加していくようにしているのですが、ダウンロードしたファイルは「Exce」ファイル形式でダウンロードされていますが、テキストで開いても文字化けすることなく正常に表示されています。
Dim test As new StringBuilder
datacmd.commandtext = "SELET * FROM TEST"
RS = datacmd.excequtereader
While test
When rs.read
.append(RS("name"))
.append(RS("age")).tab
End When
End whill
これ以降の処理は割るれてしましましたが、実行結果を Response.Write(test)に貼り付けて出力しています。
サンプルExcelを使用せず、サーバーにファイルを格納せずに直接出力する方法はあるのでしょうか?ご教授のほど宜しくお願いいたします。
回答
-
> 実行結果を Response.Write(test)に貼り付けて出力しています。
> サンプルExcelを使用せず、サーバーにファイルを格納せずに直接出力する方法はあるのでしょうか?「サンプルExcel」の意味が分かりませんが・・・
今は CSV 形式のテキストファイルとしてダウンロードしているが、それを Excel 形式(.xls または .xlsx)にしたい。その際、サーバー側でファイルを作るのではなく全てメモリ上で処理したいということと理解してレスします。
書式設定のないプレーンな Excel ファイルで良ければ ACE OleDb プロバイダ(Excel 2003 以前の .xls 形式なら OS 付属の JET も使えます)と ADO.NET を使って Excel ファイルを作成することができます。ただし、全てメモリ上で処理するということは無理っぽいですが。
ACE については以下のページを見てください。(以下には Access 2007 と書いてありますが ACE は Excel にも使えます)
Access 2007 の DB を利用するアプリ開発
http://surferonwww.info/BlogEngine/post/2011/11/08/Development-of-application-which-uses-accdb-file-of-Access-2007.aspxDB からデータを取得して Excel ファイルを作る方法は以下のページを見てください。
ACE OleDb で Excel のブック作成
http://surferonwww.info/BlogEngine/post/2012/01/26/Creating-Excel-workbook-by-using-ACE-OleDb-provider.aspxなお、ACE は以下のページの「概要」のセクションの注によると "Microsoft Office コンポーネントと見なされます" とのことです。ライセンス上の問題なのか技術上の問題なのか分かりませんが、十分な検証が必要と思いますのでご注意ください。
Office のサーバーサイド オートメーションについて
http://support.microsoft.com/en-us/kb/257757/jaACE は使いたくないもしくは書式設定もしたいということであれば、Open XML を使用するか、サーバーで使えるように開発されたサードパーティ製の製品を使うほかなさそうです。
Open XML SDK 2.0 を使用して Excel 2010 ブックを生成する
https://msdn.microsoft.com/ja-jp/library/office/hh180830(v=office.14).aspxExcel 2007 以降でよければ ClosedXML というものもあります。
ClosedXML - The easy way to OpenXML
http://closedxml.codeplex.com/
#適切なフォーラムを選んで投稿するようお願いします。ASP.NET 関係であれば Visual Basic のフォーラムより ASP.NET のフォーラムの方が適切です。(フォーラムの移動は、必要があれば管理者の方がやってくれますので、質問者さんはここで質問を続けてください)
#また、質問する際は、一番最初に、何を作っているのか(ASP.NET Web Forms? MVC? その他?)、ご自分の環境(OS, .NET, IIS, Visual Studio のバージョン、DB サーバーとそのバージョン、ブラウザは何か、Excel のバージョンなど)に関する情報を最低書いていただけませんか?
#ガイドラインも出ていますので目を通していただければと思います。
フォーラムのご利用方法(質問の投稿)について
https://social.technet.microsoft.com/Forums/ja-JP/home?forum=announceja&announcementId=587d27f8-adc8-432a-905c-81375f8a05ec
すべての返信
-
> 実行結果を Response.Write(test)に貼り付けて出力しています。
> サンプルExcelを使用せず、サーバーにファイルを格納せずに直接出力する方法はあるのでしょうか?「サンプルExcel」の意味が分かりませんが・・・
今は CSV 形式のテキストファイルとしてダウンロードしているが、それを Excel 形式(.xls または .xlsx)にしたい。その際、サーバー側でファイルを作るのではなく全てメモリ上で処理したいということと理解してレスします。
書式設定のないプレーンな Excel ファイルで良ければ ACE OleDb プロバイダ(Excel 2003 以前の .xls 形式なら OS 付属の JET も使えます)と ADO.NET を使って Excel ファイルを作成することができます。ただし、全てメモリ上で処理するということは無理っぽいですが。
ACE については以下のページを見てください。(以下には Access 2007 と書いてありますが ACE は Excel にも使えます)
Access 2007 の DB を利用するアプリ開発
http://surferonwww.info/BlogEngine/post/2011/11/08/Development-of-application-which-uses-accdb-file-of-Access-2007.aspxDB からデータを取得して Excel ファイルを作る方法は以下のページを見てください。
ACE OleDb で Excel のブック作成
http://surferonwww.info/BlogEngine/post/2012/01/26/Creating-Excel-workbook-by-using-ACE-OleDb-provider.aspxなお、ACE は以下のページの「概要」のセクションの注によると "Microsoft Office コンポーネントと見なされます" とのことです。ライセンス上の問題なのか技術上の問題なのか分かりませんが、十分な検証が必要と思いますのでご注意ください。
Office のサーバーサイド オートメーションについて
http://support.microsoft.com/en-us/kb/257757/jaACE は使いたくないもしくは書式設定もしたいということであれば、Open XML を使用するか、サーバーで使えるように開発されたサードパーティ製の製品を使うほかなさそうです。
Open XML SDK 2.0 を使用して Excel 2010 ブックを生成する
https://msdn.microsoft.com/ja-jp/library/office/hh180830(v=office.14).aspxExcel 2007 以降でよければ ClosedXML というものもあります。
ClosedXML - The easy way to OpenXML
http://closedxml.codeplex.com/
#適切なフォーラムを選んで投稿するようお願いします。ASP.NET 関係であれば Visual Basic のフォーラムより ASP.NET のフォーラムの方が適切です。(フォーラムの移動は、必要があれば管理者の方がやってくれますので、質問者さんはここで質問を続けてください)
#また、質問する際は、一番最初に、何を作っているのか(ASP.NET Web Forms? MVC? その他?)、ご自分の環境(OS, .NET, IIS, Visual Studio のバージョン、DB サーバーとそのバージョン、ブラウザは何か、Excel のバージョンなど)に関する情報を最低書いていただけませんか?
#ガイドラインも出ていますので目を通していただければと思います。
フォーラムのご利用方法(質問の投稿)について
https://social.technet.microsoft.com/Forums/ja-JP/home?forum=announceja&announcementId=587d27f8-adc8-432a-905c-81375f8a05ec -
【追伸】
ダウンロードするには HTTP ハンドラを使うことをお勧めします。理由その他の詳細は以下のページを見てください。
ダウンロードは HTTP ハンドラで
http://surferonwww.info/BlogEngine/post/2013/02/16/use-http-handler-for-downloading-files.aspxまた、日本語のファイル名はブラウザに IE を使うと文字化けするので注意してください。対策は上のページにも書いてありますが、それだけではファイル名に半角空白が混ざっていると対応できません。
以下のページのような小細工をする方法もありますが、それよりファイル名に日本語は使わないことがお勧めですが。
ダウンロードファイル名の文字化け
http://surferonwww.info/BlogEngine/post/2011/03/20/Downloading-file-with-Japanese-file-name.aspx