C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[8]: ArrayListのExcel出力について


(過去ログ 13 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■3992 / inTopicNo.1)  ArrayListのExcel出力について
  
□投稿者/ じゃかるた (1回)-(2007/05/31(Thu) 09:07:08)

分類:[C# (ASP.NET)] 

C#のWebアプリでSessionにArrayListを格納しています。
このArrayListをExcelで出力したいと思います。(DataGridは使用していません)
・列数、及び行数は格納されたArrayListに依存します。
・Excel上の罫線及び色はとりあえず不要です。
・単純に左上から一セル一データで表示できればよいです。(CSV出力は不可です)
・保存形式は「名前をつけて保存」ダイアログボックスが出てくればよいです。

上記条件を満たすことのできる方法又は参考URLがあれば教えていただけないでしょうか?
よろしくお願いします。


引用返信 編集キー/
■3993 / inTopicNo.2)  Re[1]: ArrayListのExcel出力について
□投稿者/ 魔界の仮面弁士 (288回)-(2007/05/31(Thu) 09:55:28)
2007/05/31(Thu) 10:21:48 編集(投稿者)

No3992 (じゃかるた さん) に返信
> ・保存形式は「名前をつけて保存」ダイアログボックスが出てくればよいです。
この点は、Content-Type と Content-Disposition を送出することで対応できますね。


> ・単純に左上から一セル一データで表示できればよいです。(CSV出力は不可です)
そういう時は、なぜ CSV では駄目なのかという理由も示さないと。(^^;

で…まずは「どの出力形式なら許容できるのか」という話になってくるかと思います。

ネイティブのバイナリ フォーマットだと面倒なので、テキストベースのフォーマットを
選択することになるかと思いますが、そうすると
 ・タブ区切りテキスト(全バージョン)
 ・SYLK 形式(全バージョン)
 ・DIF 形式
 ・HTML 形式(Excel 97 以上)
 ・Excel HTML 形式(Excel 2000 以上)
 ・XML スプレッドシート形式(Excel 2003 以上)
の中から選択することになるかと思います。
# XML データ(Excel 2002 以上)という手もありますが、今回の目的には適さないかも。

HTML 形式で良ければ、System.Web.UI.WebControls.DataGrid にデータバインドさせておき、
System.Web.UI.HtmlTextWriter に RenderControl させるという手があるでしょうし、
あるいは、XML スプレッドシートへ XSLT 変換するという方法もありますね。

もし、バイナリ形式である *.xls 形式が必要なら、COM 操作によるオートメーション(ASP.NET 向けではない)か、
BIFF を直接生成するか、Excel 形式を出力可能な外部コンポーネント(ExcelCreator 等)が必要でしょう。

ZIP 生成が可能なら、Excel 2007 の xlsx という選択肢もありますが…。


取り回しを考えると、XML が楽なのかな。Excel 側のバージョンがある程度限定されますけど。
http://aspalliance.com/471
http://codezine.jp/a/article.aspx?aid=194
http://support.microsoft.com/kb/307029/ja
http://www.microsoft.com/japan/msdn/office/office2003/odc_unlock.aspx
引用返信 編集キー/
■3994 / inTopicNo.3)  Re[2]: ArrayListのExcel出力について
□投稿者/ じゃかるた (2回)-(2007/05/31(Thu) 10:28:27)
ご返信ありがとうございます。

>>・保存形式は「名前をつけて保存」ダイアログボックスが出てくればよいです。
> この点は、Content-Type と Content-Disposition を送出することで対応できますね。
了解しました。

>>・単純に左上から一セル一データで表示できればよいです。(CSV出力は不可です)
> そうすると、「どの出力形式なら許容できるのか」という話になってくるかと思います。
> ネイティブのバイナリ フォーマットだと面倒なので、テキストベースのフォーマットを
> 選択することになるかと思いますが、そうすると
>  ・タブ区切りテキスト(全バージョン)
>  ・SYLK 形式(全バージョン)
>  ・DIF 形式
>  ・HTML 形式(Excel 97 以上)
>  ・Excel HTML 形式(Excel 2000 以上)
>  ・XML スプレッドシート形式(Excel 2003 以上)
> の中から選択することになるかと思います。
> # XML データ(Excel 2002 以上)という手もありますが、今回の目的には適さないかも。
>
>
> もし、バイナリ形式である *.xls 形式が必要なら、COM 操作によるオートメーション(ASP.NET 向けではない)か、
> BIFF を直接生成するか、Excel 形式を出力可能な外部コンポーネント(ExcelCreator 等)が必要でしょう。
>
> ZIP 生成が可能なら、Excel 2007 の xlsx という選択肢もありますが…。

*.xls形式が要件です。
ということはバイナリ形式を扱うことになりCOM操作が必要になるということですね・・・
ExcelのCOM操作で苦労話を聞いたことがあります。(COMの引数がExcelのバージョンに依存するとか・・・詳しいことは分かりませんが)
ちなみにExcel2007は想定していません。

DataGridに仕様変更するのが無難と判断しました。

大変分かりやすいご説明ありがとうございました。

解決済み
引用返信 編集キー/
■3995 / inTopicNo.4)  Re[3]: ArrayListのExcel出力について
□投稿者/ じゃかるた (4回)-(2007/05/31(Thu) 10:53:38)
2007/05/31(Thu) 10:54:09 編集(投稿者)

解決済みにチェックしましたが、更新されてましたので以下内容について。

>> ・単純に左上から一セル一データで表示できればよいです。(CSV出力は不可です)
>そういう時は、なぜ CSV では駄目なのかという理由も示さないと。(^^;
そうですね。理由はユーザー要件です。
(CSV出力は却下されました。それ以上は分かりません。)

>取り回しを考えると、XML が楽なのかな。Excel 側のバージョンがある程度限定されますけど。
>http://aspalliance.com/471
>http://codezine.jp/a/article.aspx?aid=194
>http://support.microsoft.com/kb/307029/ja
>http://www.microsoft.com/japan/msdn/office/office2003/odc_unlock.aspx
Excel 側のバージョン限定はマズいです。(Excel2007は知りませんが・・・)
XML出力は参考になりました。
引用返信 編集キー/
■3997 / inTopicNo.5)  Re[4]: ArrayListのExcel出力について
□投稿者/ ぼのぼの (51回)-(2007/05/31(Thu) 11:24:04)
No3994 (じゃかるた さん) に返信
>>もし、バイナリ形式である *.xls 形式が必要なら、COM 操作によるオートメーション(ASP.NET 向けではない)か、
>>BIFF を直接生成するか、Excel 形式を出力可能な外部コンポーネント(ExcelCreator 等)が必要でしょう。
>>
>>ZIP 生成が可能なら、Excel 2007 の xlsx という選択肢もありますが…。
>
> *.xls形式が要件です。
> ということはバイナリ形式を扱うことになりCOM操作が必要になるということですね・・・
> ExcelのCOM操作で苦労話を聞いたことがあります。(COMの引数がExcelのバージョンに依存するとか・・・詳しいことは分かりませんが)
> ちなみにExcel2007は想定していません。

一応こんな方法もあるみたいですよ。
http://www.google.com/search?client=opera&rls=ja&q=Excel+OleDb+ADO.NET&sourceid=opera&ie=utf-8&oe=utf-8

No3995 (じゃかるた さん) に返信
> >> ・単純に左上から一セル一データで表示できればよいです。(CSV出力は不可です)
> >そういう時は、なぜ CSV では駄目なのかという理由も示さないと。(^^;
> そうですね。理由はユーザー要件です。
> (CSV出力は却下されました。それ以上は分かりません。)
憶測ですが、CSVファイルをダブルクリックしてExcelで開くと、
001が1になっちゃったり、1-1が1月1日になっちゃったりするから?
引用返信 編集キー/
■4000 / inTopicNo.6)  Re[5]: ArrayListのExcel出力について
□投稿者/ ぽぴ王子 (210回)-(2007/05/31(Thu) 11:56:57)
ぽぴ王子 さんの Web サイト
では僕が、流れを読まずに Excel Creator という提案をしてみる。
http://www.adv.co.jp/products/product_ExcelCreator2007.htm

ActiveReport でも一応 xls 形式を出力することはできます。
…できます……できます……が、あまり期待しない方がよかったり。
というか Excel 出力のために ActiveReport を買うのはもったいない
ので以下略。
帳票出力がメインで、ついでに Excel も欲しいわ〜ん!というので
あればかなり有効ですけれども。
引用返信 編集キー/
■4001 / inTopicNo.7)  Re[6]: ArrayListのExcel出力について
□投稿者/ ぼのぼの (52回)-(2007/05/31(Thu) 13:00:28)
No4000 (ぽぴ王子 さん) に返信
> では僕が、流れを読まずに Excel Creator という提案をしてみる。
いえいえ、流れには逆らってないですよw
#このスレをExcelCreatorで検索してみてください。

> http://www.adv.co.jp/products/product_ExcelCreator2007.htm

要件次第ではこっちで十分かも。
http://www.adv.co.jp/products/product_ExcelCreator5.htm
機能と価格とのトレードオフです。
引用返信 編集キー/
■4002 / inTopicNo.8)  Re[7]: ArrayListのExcel出力について
□投稿者/ ぽぴ王子 (211回)-(2007/05/31(Thu) 13:23:00)
ぽぴ王子 さんの Web サイト
No4001 (ぼのぼの さん) に返信

> いえいえ、流れには逆らってないですよw
> #このスレをExcelCreatorで検索してみてください。

あら、本当ですね。
魔界の仮面弁士さんがちゃんと書いてくださってました。
流れを読まずに書いちゃダメってことですね。

魔界の仮面弁士さんの「どの出力形式なら許容できるのか」までを読んで「その考
えはなかったわwww」と思い、確かにそうだよなーでも SYLK 形式って今じゃ知って
る人の方が少ないのではとかむにゃむにゃ考えつつ、COM 操作というところで「そっ
か、無意識のうちに対象から除外してたけどそういうのもありか」と、そこで仕事が入っ
たので中断していて。
(そこであと1行読んでいれば……と今さら言っても遅いですが)

じゃかるたさんの「*.xls形式が要件です」というところで「そりゃそうだろうなあ」と思
いつつ、流れがCOM操作に傾いていたので、むー、作るだけなら Excel Creator で
十分かもしれないねえ…むにゃむにゃ…と。

なので、COM 操作はいろいろ面倒だし、作るだけなら Excel Creator とか、お勧め
はしないけど ActiveReports とか(ちょうど ActiveReports で Excel 出力という仕事
をしていたところだったので)流れを読まずに提案してみました。

が、やっぱりちゃんと読めと。申し訳ない。

> 要件次第ではこっちで十分かも。
> http://www.adv.co.jp/products/product_ExcelCreator5.htm
> 機能と価格とのトレードオフです。

そうですねー
新しい方がいいかな?とポンと貼り付けてしまいましたが、価格も違うし
Excel2007 のファイルが必要じゃなければ古いバージョンで良かったですね。
重ね重ねもうしわけないです (^^; >ぼのぼのさん
引用返信 編集キー/
■4029 / inTopicNo.9)  Re[8]: ArrayListのExcel出力について
□投稿者/ じゃかるた (5回)-(2007/06/01(Fri) 15:52:18)
今回、せっかくですが有償ソフトも体験版も使用できないので、Excel Creator はダメです。
DataGridに仕様変更で対応しました。

みなさん、いろいろ案を出していただきありがとうございます。
感謝します。

解決済みにしたあとにスレすると解決済みが表示されなくなるのでしょうか?
再度解決済みにします。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -