- PR -

VSTO - Excelファイルを開いて閉じたい

投稿者投稿内容
あすか
ぬし
会議室デビュー日: 2006/07/12
投稿数: 309
投稿日時: 2006-07-12 13:53
お世話になっております。

VisualStadio2005,C#,VSTOともに1週間の経験しかありません。
上手く表現できていない点があるかもしれませんがご容赦ください。

今、VisualStadio2005を使ってVSTOに挑んでいます。
言語はC#です。
Webサーバ上でExcelファイルを作成します。
検索条件よりデータベースからデータを取得し
集計結果のみをExcelに出力します。
ここまでは無事に出来ました。

しかし、このブックを別のマシン(.Net Frameworkの設定をしていない)に持ち込むと
正しく表示できません。
これはアセンブリがないので当たり前なのですが、
この集計結果をアセンブリを参照できない別のマシンでも閲覧したいのです。
(ロジックは不要、結果だけを参照したいため)

ここで次の作業をしてみました。
 ・作成したブックを開く。
 ・プロパティから_AssemblyName、_AssemblyLocationを削除
 ・作成したブックを上書き保存する。

これをすると、無事別のマシンからでも閲覧できることが分りました。


そこで思いついたことが
 ・作成したブックを開く。
 ・プロパティから_AssemblyName、_AssemblyLocationを削除
 ・作成したブックを上書き保存する。
をWebサーバ上で行うことが出来れば
アセンブリの必要のないブックが出来上がるのではないかということです。

このようなことが可能であるか、
可能ならばその方法に導いていただければと
思っております。

お知恵のほど、どうかよろしくお願いいたします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-07-12 14:09
引用:

あすかさんの書き込み (2006-07-12 13:53) より:

しかし、このブックを別のマシン(.Net Frameworkの設定をしていない)に持ち込むと正しく表示できません。
これはアセンブリがないので当たり前なのですが、この集計結果をアセンブリを参照できない別のマシンでも閲覧したいのです。
(ロジックは不要、結果だけを参照したいため)


その別のマシンは閲覧さえできれば良いのであれば、
System.Diagnostics.Process クラスの Start メソッドで Workbook を指定して起動する。
という方法ではダメでしょうか?

引用:

集計結果のみをExcelに出力します。


データだけでレイアウト問わずであれば、CSV などに出力された方が良いかもしれません。
(これならば、Excel アプリケーションを使用せず、独自のアプリケーションで表示することが容易い)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2006-07-12 14:31
こんにちは。

MSDN ライブラリの Worksheet.Copy メソッド を読むと、このメソッドを使用して作成されるシートは Microsoft.Office.Interop.Excel.Worksheet なネイティブオブジェクトだと書いてあります。
また、「Before または After のいずれかを指定しなかった場合、Microsoft Office Excel はコピーされたシートを含む新しいブックを作成します。」という記述があります。

これらの仕組みを利用すれば VSTO を使ってプレーンなブックを作ることができるのではないでしょうか。

#自信がないです。仕組みを間違って覚えているかも。
_________________
上本亮介 (ue) @ わんくま同盟
Microsoft MVP for VSTO (Jul 2008 - Jun 2009)
Hello Another World!
.NET 勉強会 / ヒーロー島
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-07-12 14:34
引用:

ueさんの書き込み (2006-07-12 14:31) より:

これらの仕組みを利用すれば VSTO を使ってプレーンなブックを作ることができるのではないでしょうか。


う... そういう意味のようですね... > アセンブリ云々
思いっきり読み違えておりました。(;_ _)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2006-07-12 14:42
ueです。

引用:

じゃんぬねっとさんの書き込み (2006-07-12 14:34) より:
思いっきり読み違えておりました。(;_ _)


いや、私が書いたことも本当に正しいかどうか(^^;
今検証できる環境が無いもので。

あすかさんのご要望にこたえられていると良いのですが。
_________________
上本亮介 (ue) @ わんくま同盟
Microsoft MVP for VSTO (Jul 2008 - Jun 2009)
Hello Another World!
.NET 勉強会 / ヒーロー島
あすか
ぬし
会議室デビュー日: 2006/07/12
投稿数: 309
投稿日時: 2006-07-12 15:48
お返事ありがとございます。

早速試してみようと思い、いろいろ試みているのですが上手くいかない点がございます。

恥ずかしながら
Microsoft.Office.Interop.Excelアセンブリの入手方法を見つけられないのであります。
このアセンブリ、どこにあるのかご存知ありませんでしょうか。

追記:15:51
Microsoft Office 2003 ProfessionalはCドライブにフルインストールされています。

[ メッセージ編集済み 編集者: あすか 編集日時 2006-07-12 15:53 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-07-12 16:38
PIA 関係のことでしたら、こちらをご覧になられてはいかがでしょうか?

  Office 2003 プライマリ相互運用機能アセンブリをインストールして使用する

おそらく、ここの記事が 1 番わかりやすいと思います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
あすか
ぬし
会議室デビュー日: 2006/07/12
投稿数: 309
投稿日時: 2006-07-12 17:47
上記のURLを参考に

参照の追加にて
 Microsoft Excel 11.0 Object Library
を登録しましたが
using Microsoft.Office.Interop.Excel;
を行うと

エラー 1 型または名前空間名 'Interop' は名前空間 'Microsoft.Office' に存在しません。アセンブリ参照が不足しています。

が出てしまいます。
何か過去に似たような事例を体験された方はいませんでしょうか。

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