- PR -

ASP.NET WebアプリケーションでExcelワークシートに保護をかけたい

投稿者投稿内容
アルエ
会議室デビュー日: 2005/12/02
投稿数: 14
投稿日時: 2006-02-27 13:07
お世話になります。

現在、アドバンスソフトウェアのExcelCreatorを使用して、
動的にExcelファイルを生成してクライアントにダウンロードする
Webアプリケーションを作成しているのですが、
シートに保護をかけたいという要望が出てきました。

しかし、ExcelCreatorはシートの保護には対応していません。
そこで、Officeオートメーションを使用して生成後のブックに
保護をかける処理を考えたのですが、下記の記事を読む限り、
あまり推奨されていない方法のようです。

http://support.microsoft.com/default.aspx?scid=kb;ja;257757

そこで質問なのですが、Officeオートメーションを使用せずに、
Excelのシートに保護をかける方法って、あるのでしょうか?

ご存知でしたらご教授ください。よろしくお願い致します。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-27 13:19
引用:

アルエさんの書き込み (2006-02-27 13:07) より:

そこで質問なのですが、Officeオートメーションを使用せずに、
Excelのシートに保護をかける方法って、あるのでしょうか?


VSTO とか。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
アルエ
会議室デビュー日: 2005/12/02
投稿数: 14
投稿日時: 2006-02-27 13:34
じゃんぬねっとさん、早速のご回答ありがとうございます。

ご教授頂きましたVSTOについて、早速調べてみました。
Visual Studio Tools For Officeという製品ですね。
Microsoftの製品ページをじっくり読んでみます。

このツールはWebサーバにOfficeを直接インストールすることなく、
マネージコードでExcelファイルが操作できるものなのでしょうか?
だとしたらすばらしいですね!

製品ページを読んでもどうしてもわからないことがあったら、
また質問させて頂くかもしれませんが、
とりあえず自分でわかるところまで調べてみます。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-27 13:44
引用:

アルエさんの書き込み (2006-02-27 13:34) より:

このツールはWebサーバにOfficeを直接インストールすることなく、
マネージコードでExcelファイルが操作できるものなのでしょうか?
だとしたらすばらしいですね!


はい、オートメーションはアンマネージですが、VSTO はマネージらしいですね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2006-02-27 13:49
シートが保護されたxlsファイルを用意しておいて、オーバーレイオープンするとか。
アルエ
会議室デビュー日: 2005/12/02
投稿数: 14
投稿日時: 2006-02-27 14:03
todoさん、ご回答ありがとうございます。
しかし、その方法は既に試したのですが、シートにあらかじめ保護をかけておくと、
ExcelCreatorがうまく読み書きできないのです。
アルエ
会議室デビュー日: 2005/12/02
投稿数: 14
投稿日時: 2006-02-28 14:56
アルエです。

VSTOについて、現在調査中です。

とりあえず評価版みたいなものが無いかMicrosoftに直接電話で問い合わせたところ、
評価版は無いという回答でした。

しかし、具体的にやりたいことが実現できるかの確証がとれないと
購入できないということになり、困っています。
一応、Microsoftの電話サポートにやりたいことを具体的に説明し、
実現の可否の回答待ち状態ではあります。

しかし、「販売元」ではなく「ユーザ」からの情報が欲しいという思いがあり、
厚かましいのは重々承知の上でお願いなのですが、
もし下記のようなことがVSTOで実現可能かどうかをご存知の方がいらっしゃいましたら、
ご回答いただけないでしょうか。

<処理>
(1) Webサーバ上に書式と数式を埋め込んだExcelのテンプレートを用意しておく
  (このテンプレートには、シート保護はかかっていない)
(2) ExcelCreatorのオーバレイ機能を使用して(1)のxlsファイルにデータを埋め込み、
  一時ファイルとして保存
(3) (2)のxlsファイルをVSTOで開き、全てのシートにシート保護をかけて上書き保存
(4) (3)のxlsファイルをResponse.WriteFile()を使用してクライアントにダウンロードする

<条件>
(4)でダウンロードしたxlsファイルはクライアントのExcelのバージョンがExcel97でも開けなければならない

もちろん、本来Microsoftのサポートに問い合わせるべき内容なのは
わかった上でのお願いですので、無理にとは言いません。
ただ、需要がありそうな内容ですので、もし既に似たようなことを
実装した経験のある方がいらっしゃいましたら、情報を頂けませんでしょうか。
よろしくお願い致します。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-02-28 21:31
 なぜオートメーションが推奨されないか、というところは、理解していますか?

 サーバ環境では、画面がない、ユーザが操作できない、というところが、Office 製品の目的と反しています。VSTO であれ、同じではないでしょうか。

 出来る/出来ないの問題だけで考えれば、マクロで実行可能なことはほぼすべて出来ると考えて支障はないと思います。しかし、何かあったときに、Office 製品はダイアログを表示し、ユーザに選択を求めてきます。これが機能しなくなります。これを回避するために、厳重にテストを行うようにと、書いてあったと思います。
引用:

これらの製品は、対話型デスクトップおよびユーザー プロファイルを想定しており、無人実行されるように設計されたサーバーサイド コンポーネントの必要性を満たすための再入可能性やセキュリティのレベルは提供されません。

適切な設計を行った後は、エラー発生時のエラー処理を行うコードを慎重に記述して、問題を解決および問題発生を防止する必要があります。

ここで説明した内容によって、すべてのクライアントのあらゆる問題が解決されるかどうかは保証されません。十分にテストしてから展開してください。

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