- - PR -
ASP.NETでEXCELファイル出力したい
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-04-11 17:48
はじめまして!
過去ログを全部読んだ上で常連の皆様方におかれましては、うんざりするような 初歩的な質問をさせて頂きますことをお許し下さい。 社内システムを初めてASP.NETで構築しようと目論んでいるのですが、 Datagridに動的に表示した項目をExcel出力してダウンロードさせる 具体的な手法がよく解りません。 「書籍情報の検索システム」を構築しようとしているのですが、処理内容には… @ユーザがWEBフォームで検索条件、表示項目を選択 ↓ A条件にあった書籍の情報をWEB上のDatagrid(チェックボックス付き)に一覧表示 ↓ Bチェックのついた行のレコードをEXCELファイル(罫線付き)に出力する。 という、極めて単純なシステム(のハズ^^;)です。 で、よく解らない点としましては… ・複数のユーザの出力要求に対し、どのようなファイル名称でサーバに格納すればいいのか? (クライアントPCのIP情報、端末名称等は.NETアプリ側で拾えないんですよね?) ・ユーザが当該ExcelファイルをDLする時に自分が作成したファイル しか選べ(見え)ないようにするにはどのようにすればいいのか? ・罫線つきのExcelをコードで書く自信もないので、マクロを仕込んだ テンプレートをサーバに置いておいて、それをどうにかしないといけないんでしょうか? そうなるとどこまでを.NET側でやってどこからをExcel側でやれば良いのでしょう か? ・実際にファイルが生成されてから(コモンダイアログみたいな何か?で)DL選択させる までをどのようなコードで記述すれば良いのかもよく見えません。 ちなみに弊社の環境は… ・クライアントマシンのOSはWin95 ・ExcelのバージョンはExcel97 SR−2 ・サーバはWin2000(サーバ上のExcelも97) ・開発言語はVB.NET(WEBフォーム) ・DBMSはSQL−Server2000 ・WEBブラウザはIEの5.5(SP2) となっています。 ご教示のほど、宜しくお願い致します。 | ||||
|
投稿日時: 2003-04-11 18:11
@からAまではまぁ、ASP.NETのサンプルになるような内容ですが
Bをやるとなると「極めて単純」の範疇からははずれますね。 で、実現方法そのものが複数ありますが、それらは過去ログの 中にきちんと説明されているものばかりだったと思います。 やろうとしてることは複数の実現手段があり、結構 面倒なことである。ただし、その方法については それなりに説明されている、というのを頭にいれておいて もういちどログを読むと整理できるかもしれませんね。 #なにが簡単でなにがむずかしいのかわからないのが 初心者なんだろけどね。 | ||||
|
投稿日時: 2003-04-11 18:44
早速のレス、ありがとうございました。
もう一度Excel関連のログを洗い直してみます。 | ||||
|
投稿日時: 2003-05-15 19:08
こんにちは。
> Bチェックのついた行のレコードをEXCELファイル(罫線付き)に出力する。 実は私もB番のことが良くわからなくて、 ずっとログを探してみました。 (検索したり、全スレッドをなめたりしました) ヒントになるログが見つかりませんでした。 ログの検索方法でいいんです、ご教授ください。 | ||||
|
投稿日時: 2003-05-15 19:10
すみません。訂正です。
誤:ログの検索方法でいいんです、ご教授ください。 正:ログの検索方法でもいいんです、ご教授ください。 よろしくお願いします。 | ||||
|
投稿日時: 2003-05-16 08:45
こんにちは。
問題は2つあると思います。 1.「チェックのついたレコード」を特定する/出力する 2.ECXCELで、罫線を付ける 1は、DataGridを上から回しながら、チェックのついた行だけ処理対象とする、ということでいいですよね。 2は、私はEXCELで罫線を引を引く処理をマクロ記録し、それをVB.NET上に移しました。 というようなのでよろしいでしょうか。 | ||||
|
投稿日時: 2003-05-16 12:03
--------------------------------------------------------------------------------
Jittaさんの書き込み より: > 1は、DataGridを上から回しながら、チェックのついた行だけ処理対象とする、ということでいいですよね。 > 2は、私はEXCELで罫線を引を引く処理をマクロ記録し、それをVB.NET上に移しました。 -------------------------------------------------------------------------------- ご返答、ありがとうございます。 マクロ記録を参照するなんて、考えもしなかったんです。 大変参考になりました。 で、.NETからExcelに書込み処理なんですが、 [Insert]処理ができて、[Update]処理はどうしてもできなかったんです。 多分SQL文のカラムの書き方がおかしいと思いますが、 一応、ソースを載せておきます。 よろしくお願いします。 Dim xsConnectionString As String xsConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" xsConnectionString += "Data Source=" & sDirFileExcelMakingFile & ";" xsConnectionString += "Extended Properties=Excel 8.0;" Dim xobjConn As New System.Data.OleDb.OleDbConnection(xsConnectionString) Dim Sql_Str, SqlCommand Try xobjConn.Open() Catch etype As Exception '--- エラー処理 Exit Sub End Try '--- このインサート文はうまくいきますが。。。 Sql_Str = "INSERT INTO [Sheet$Print_Area] VALUES('......... SqlCommand = New System.Data.OleDb.OleDbCommand(Sql_Str, xobjConn) SqlCommand.ExecuteNonQuery() SqlCommand.Dispose() '--- 更新はできないんです。カラムの書き方がおかしい? 'Sql_Str = "update [List$Print_Area] set [COLUMN($B$4)] = 'W'" SqlCommand = New System.Data.OleDb.OleDbCommand(Sql_Str, xobjConn) SqlCommand.ExecuteNonQuery() SqlCommand.Dispose() よろしければ、更新文の正誤をお教え頂ければ幸いです。 よろしくお願いいたします。 | ||||
|
投稿日時: 2003-05-16 18:04
おお!!ExcelへSQL文でデータを送れるんですか!!そう言えば、技術情報にもそれらしき記述があったなぁ・・・。勉強になりました!! しかし、それなら逆に困りました。私がやった方法は、CreateObjectでExcelを起動させて、クリップボード経由でデータをセルに貼り付けていました。だから、エクセルのマクロ記録を利用して、罫線を引けたのです。 ところで、「Sql_Str = "update [List$Print_Area] set [COLUMN($B$4)] = 'W'"」ですが、COLUMN($B$4)だと、B4のセル固定じゃないですか? |