- PR -

ASP.NETでEXCELファイル出力したい

投稿者投稿内容
moondog
大ベテラン
会議室デビュー日: 2003/04/11
投稿数: 165
投稿日時: 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)
となっています。

ご教示のほど、宜しくお願い致します。
小野@どっとねっとふぁん
ぬし
会議室デビュー日: 2001/10/30
投稿数: 402
投稿日時: 2003-04-11 18:11
@からAまではまぁ、ASP.NETのサンプルになるような内容ですが
Bをやるとなると「極めて単純」の範疇からははずれますね。

で、実現方法そのものが複数ありますが、それらは過去ログの
中にきちんと説明されているものばかりだったと思います。

やろうとしてることは複数の実現手段があり、結構
面倒なことである。ただし、その方法については
それなりに説明されている、というのを頭にいれておいて
もういちどログを読むと整理できるかもしれませんね。

#なにが簡単でなにがむずかしいのかわからないのが
 初心者なんだろけどね。
moondog
大ベテラン
会議室デビュー日: 2003/04/11
投稿数: 165
投稿日時: 2003-04-11 18:44
早速のレス、ありがとうございました。

もう一度Excel関連のログを洗い直してみます。
KAN
常連さん
会議室デビュー日: 2003/05/09
投稿数: 27
投稿日時: 2003-05-15 19:08
こんにちは。

> Bチェックのついた行のレコードをEXCELファイル(罫線付き)に出力する。

実は私もB番のことが良くわからなくて、
ずっとログを探してみました。
(検索したり、全スレッドをなめたりしました)
ヒントになるログが見つかりませんでした。

ログの検索方法でいいんです、ご教授ください。
KAN
常連さん
会議室デビュー日: 2003/05/09
投稿数: 27
投稿日時: 2003-05-15 19:10
すみません。訂正です。

誤:ログの検索方法でいいんです、ご教授ください。

正:ログの検索方法でもいいんです、ご教授ください。

よろしくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-05-16 08:45
こんにちは。
引用:

KANさんの書き込み (2003-05-15 19:08) より:

> Bチェックのついた行のレコードをEXCELファイル(罫線付き)に出力する。

実は私もB番のことが良くわからなくて、
ずっとログを探してみました。


 問題は2つあると思います。

 1.「チェックのついたレコード」を特定する/出力する
 2.ECXCELで、罫線を付ける


 1は、DataGridを上から回しながら、チェックのついた行だけ処理対象とする、ということでいいですよね。

 2は、私はEXCELで罫線を引を引く処理をマクロ記録し、それをVB.NET上に移しました。



というようなのでよろしいでしょうか。
KAN
常連さん
会議室デビュー日: 2003/05/09
投稿数: 27
投稿日時: 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()

よろしければ、更新文の正誤をお教え頂ければ幸いです。
よろしくお願いいたします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-05-16 18:04
引用:

KANさんの書き込み (2003-05-16 12:03) より:

で、.NETからExcelに書込み処理なんですが、
[Insert]処理ができて、[Update]処理はどうしてもできなかったんです。
多分SQL文のカラムの書き方がおかしいと思いますが、
一応、ソースを載せておきます。


 おお!!ExcelへSQL文でデータを送れるんですか!!そう言えば、技術情報にもそれらしき記述があったなぁ・・・。勉強になりました!!
 しかし、それなら逆に困りました。私がやった方法は、CreateObjectでExcelを起動させて、クリップボード経由でデータをセルに貼り付けていました。だから、エクセルのマクロ記録を利用して、罫線を引けたのです。


 ところで、「Sql_Str = "update [List$Print_Area] set [COLUMN($B$4)] = 'W'"」ですが、COLUMN($B$4)だと、B4のセル固定じゃないですか?

スキルアップ/キャリアアップ(JOB@IT)