- PR -

[ASP.NET]複数シートのExcelを作成

投稿者投稿内容
ttcoupe
大ベテラン
会議室デビュー日: 2003/01/17
投稿数: 116
お住まい・勤務地: 大阪市
投稿日時: 2003-05-07 18:23
いつも拝見しています。

ASP.NETで単一のシートはここの掲示板を参考にしてできたのですが、
複数シートのやり方がわかりません。複数シートのExcelを作成し、
Web形式で保存を試みたのですがシート分のファイルを別途作り、それ
をインポートする形になっていました。
この場合はどうすればいいのでしょうか?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-05-08 08:47
こんにちは。
引用:

ttcoupeさんの書き込み (2003-05-07 18:23) より:
いつも拝見しています。

ASP.NETで単一のシートはここの掲示板を参考にしてできたのですが、
複数シートのやり方がわかりません。複数シートのExcelを作成し、
Web形式で保存を試みたのですがシート分のファイルを別途作り、それ
をインポートする形になっていました。
この場合はどうすればいいのでしょうか?


 『ここの掲示板を参照して』ということは、ExcelApplicationオブジェクトを作成してということだと思いますが、WorkBookオブジェクトのWorkSheetsプロパティにWorkSheetオブジェクトを追加してもダメですか?

 それとも、作成はできて、保存したいのでしょうか。それとも表示?『それをインポートする形になって』いたのはどこかのサンプルでしょうか?
ttcoupe
大ベテラン
会議室デビュー日: 2003/01/17
投稿数: 116
お住まい・勤務地: 大阪市
投稿日時: 2003-05-08 15:28
Jittaさんありがとうございます。

ここの掲示板でみたというのはExcelApplicationオブジェクトではなく

---
    Response.Clear()

Dim fname As String
Response.ContentEncoding = System.Text.Encoding.GetEncoding("shift-jis")
Response.ContentType = "application/vnd.ms-excel"
fname = System.Web.HttpUtility.UrlEncode("AAAAA.xls")
Response.AppendHeader("content-disposition", "attachment; filename=" + fname)
Response.Charset = ""
Me.EnableViewState = False

Dim strExcel As String

strExcel = ""
strExcel = strExcel & " <html xmlns:v=""urn:schemas-microsoft-com:vml"""
strExcel = strExcel & " xmlns:o=""urn:schemas-microsoft-com:office:office"""
strExcel = strExcel & " xmlns:x=""urn:schemas-microsoft-com:office:excel"""
strExcel = strExcel & " xmlns=""http://www.w3.org/TR/REC-html40"">"
strExcel = strExcel & " "
strExcel = strExcel & " <head>"
strExcel = strExcel & " <meta http-equiv=Content-Type content=""text/html; charset=shift_jis"">"
strExcel = strExcel & " <meta name=ProgId content=Excel.Sheet>"
strExcel = strExcel & " <meta name=Generator content=""Microsoft Excel 9"">"

(中略)

strExcel = strExcel & " </table>"
strExcel = strExcel & " "
strExcel = strExcel & " </body>"
strExcel = strExcel & " "
strExcel = strExcel & " </html>"

Response.Write(strExcel)
Response.End()
---

 といった感じのExcelで作成したファイルをHTML形式で保存し、
 それをResponse.Writeしているだけのものです。

 定型帳票を作りたかったのでこれでいいのかなと思ったのですが、
 複数シートをする場合にExcelをHTML形式で保存したらたくさんの
 ファイルができてそれをインポートしてるみたいで。

 罫線なども多用しているのでこのままで行きたいのですが、
 みなさんはどのようにしているのでしょうか。
未記入
ベテラン
会議室デビュー日: 2002/09/10
投稿数: 68
投稿日時: 2003-05-09 09:38

1.元となるエクセルファイルを用意する。
2.そのファイルをコピー
3.コピーしたファイルにADOでアクセスしてデータを流し込む

というやり方でうまくいったと思います。
ソースが手元にないので、話が抽象的ですいません。
しかもExcel2000以上限定だったと思います。
ttcoupe
大ベテラン
会議室デビュー日: 2003/01/17
投稿数: 116
お住まい・勤務地: 大阪市
投稿日時: 2003-05-12 21:42
Jittaさん、通常の名無しさんの3倍さんありがとうです。

なんとしてでも動的に複数のシートを作成したいんです。

> 『ここの掲示板を参照して』ということは、ExcelApplicationオブジェクトを作成し> てということだと思いますが、WorkBookオブジェクトのWorkSheetsプロパティに> WorkSheetオブジェクトを追加してもダメですか?

これはもしかしてActiveXなのでしょうか?
あと、どこのHP探してもASP.NETでのサンプルがないです。
どこかいいサイトご存知でしょうか。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-05-13 10:07
引用:

ttcoupeさんの書き込み (2003-05-12 21:42) より:

あと、どこのHP探してもASP.NETでのサンプルがないです。
どこかいいサイトご存知でしょうか。



 英語ですが、GotDotNetと、この中からリンクされているところとか。たいていのパターンはそろっています。このページ、一応日本語もありますが、あまり充実していません。
 それから、VS.NET付属のヘルプ(MSDNライブラリ)を、「サンプル」または「チュートリアル」で検索してみましょう。結構出てきますよ。これらからも、GotDotNetやASP.NETにリンクされています。


>これはもしかしてActiveXなのでしょうか?

 そう、なのかな?私の方はブラウザーでWindowsアプリケーションを表示させる、という手法なので使えているのかもしれません。
 参照の追加で、COMタブページにある「Microsoft Excel 10.0 Object Liblary」(10.0はバージョンによる)を追加し、Imports(using)します。Excel.Application型のオブジェクトを宣言し、CreateObjectでExcelを起動させれば、エクセルマクロでできることはほぼ全てできます。ただし、ASP.NETのワーカープロセスにこれをやらせることをMSは推奨していません。
ttcoupe
大ベテラン
会議室デビュー日: 2003/01/17
投稿数: 116
お住まい・勤務地: 大阪市
投稿日時: 2003-05-13 15:49
Jittaさん、ありがとうです。

かなり基本的な質問なのですが、サーバにOfficeが入っているのが
大前提なのでしょうか?

Microsoft Office 10.0 Object Library

をインポートしたらエラーが出てしまって。
もしかして、Microsoft Excel 10.0 Object Libraryなのかなと。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-05-14 08:37
引用:

ttcoupeさんの書き込み (2003-05-13 15:49) より:

Microsoft Office 10.0 Object Library

をインポートしたらエラーが出てしまって。
もしかして、Microsoft Excel 10.0 Object Libraryなのかなと。


 おそらく、Office Object Libraryは、ツールバーとかのオブジェクトかと・・・
 ワードはWORD、エクセルはEXCELのライブラリです。もちろん、使いたいものが使う場所に入っていることが大前提です。

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