初めて投稿します。よろしくお願いします。
現在ASP.NET2008(C#)で開発しています。
開発環境はLocalだったのですが、最終的にお客様に納品するときには、Windows系のレンタルサーバー(ActiveWeb)に移管する予定です。
現在開発のマシンや、客先のマシンにはOfiiceがインストールされているのですが、レンタルサーバーにはOfficeがインストールされておらず、したがって、MicrosoftのObject.Libraryが入っていません。
お客様の要望でどうしてもエクセル出力等が必要なのですが、サーバーにAxtiveXが入っていない環境で、エクセルを出力することは可能なのでしょうか。
クライアントは不特定多数ではないので、クライアントマシンにOfficeがある、という前提でもかまいません。
方法があればご教授いただければと思います。
よろしくお願いいたします。
No.1
- 回答日時:
MS KB: Office のサーバーサイド オートメーションについて
http://support.microsoft.com/kb/257757/ja
Excelファイルの出力は,可能不可能の話であれば可能です。
非ISO標準ではあるものの,ECMA 376の1st editionは公開されていますし,バイナリのフォーマットも公開されています。
# ISO/IEC 29500:2008 (ECMA 376 2nd edition) 対応はOffice 2010とされていますので。
ただし,この方法はオートメーションとは完全に異なるので,一から作り直しになります。
オートメーションで,という話であれば,不可能になります。
オートメーションというのは,あくまでアプリケーションを外部から操作することだからです。
この回答への補足
ありがとうございます。バイナリ、ですか。
JAVAとかでWindowsじゃないサーバーにあげるのと同じ感じですよね。
MSのObject.Libraryは、レンタルサーバーの割り当てられたどこかにおいておいて使えるものではないですよね。
サーバー側でレジストリに登録してもらわないといけないんでしょうね。
参照設定されたDLLごと、どこかにアップロードできる方法はないでしょうか。
No.2ベストアンサー
- 回答日時:
解決策としては#1の方の回答のようにバ「イナリを作る方法で1から
やり直す。」というのもあるし、他の解決策もあるかも知れません。
Excelを作る元ネタは何なんでしょう?
仮にテキスト形式ならクライアントに情報を送り、そちらのScriptを
使って、テキスト→Excelという方法をとることもできます。
形態がWebアプリケーションなら、ブラウザのセキュリティレベルを
下げることで、ActiveXObjectを生成することが可能です。Excelへの
操作は現在、サーバ側で行っている操作と殆ど同じです。元ネタの
受け取り方が変わってきますが・・・
クライアントサイドScriptに詳しい技術者が居れば何とかなるかも
知れません。
この回答への補足
ありがとうございます。
エクセルはオブジェクトを生成するのではなく、サーバー上にあるエクセルテンプレート(*.xlt)を開いて編集する形式のものです。
クライアントでActiveXObjectを生成することができるんですね。
JavaScriptなどでおこなうことができるのでしょうか。
現在参照設定は、WebConfigに記述されていますが、同じところで、ActiveXObjectを生成できれば、サーバーサイドのコードを変えなくてもいけますよね。
ちょっと調べてみます。
ありがとうございます。
No.3
- 回答日時:
>JavaScriptなどでおこなうことができるのでしょうか。
できます。
>エクセルテンプレート(*.xlt)を開いて編集する形式のものです
クライアント個別にインストールしておく必要があると思います。
>現在参照設定は、WebConfigに記述されていますが・・・
サーバ側とクライアント側は環境が違います。クライアント側に
Excelがインストールされていれば、参照設定(JavaScriptでは?)は
どうでも良いです。
>サーバーサイドのコードを変えなくてもいけますよね
C#とJavaScriptのギャップがあるので、全く同じコードというのは
ちょっと無理でしょうが、その変更だけで大丈夫でしょう。
この回答への補足
お返事が遅くなりました。
ありがとうございます。
そうですか、やっぱりActiveXをインクルード(参照を持ったままDLLごと)サーバーにあげるのは難しいようですね。
JavaScriptのサンプルコードも見つけましたので、やってみようと思います。
C#のコードからJavaScriptのコードに直さなければいけないですね。
>>エクセルテンプレート(*.xlt)を開いて編集する形式のものです
>クライアント個別にインストールしておく必要があると思います。
これについてはLocalHost環境で、レンタルサーバーの仮想ディレクトリからダウンロードして使用することができています。
(ex: wb = app.Workbooks._Open("http://www.xxx/xlt/帳票出力.xlt",・・・;)
クライアントサイドでは、どちらにソースがあってもかわらにはずですよね?
もうちょっといろいろ試してみて、うまくいったらご報告いたします。
ありがとうございました。
ありがとうございました。Javascriptでコードを記述して、なんとか実装できました。
Ajaxをつかわないと、ページングをつけたグリッドの全値が取れないのが痛かったです。
一応、サンプルにコード、書いておきます。
var app;
var wb;
var ws;
function ExcelAppOpen (sheet){
// Excelの起動
app = new ActiveXObject("Excel.Application");
try{
var str = "http://xxxx/xlt/帳票出力.xlt";
app.DisplayAlerts = false;
app.Workbooks.Open(str, 0, true);
}catch(e){
// エラー出力
window.alert("エクセルを開くことができません。");
}
wb = app.Workbooks(1);
ws = wb.WorkSheets(sheet);
GetItems();
app.Visible = true;
app.quit();
ws = null;
wb = null;
app = null;
}
function GetItems(){
ws.Cells(2,3).Value = document.getElementById("ctl00$ContentPlaceHolder1$xxx").value;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- サーバー Laravelをレンタルサーバーにインストールするにはどうすればいいですか? 2 2022/06/29 10:17
- ソフトウェア 移行PCにDockerがインストールされていても各種開発環境のアプリはインストールが必要? 2 2023/05/21 21:53
- ドメイン・サーバー・クラウドサービス FileZillaを使用してwpXサーバーに接続できない 2 2022/03/29 21:02
- その他(Microsoft Office) 永続版Officeの引っ越し 2 2022/06/26 01:59
- その他(OS) CloudreadyでLinuxのセットアップが出来無い 1 2022/04/06 12:36
- Word(ワード) LibreOfficeで保存データをMicrosoft Office 2013に変更したい。 2 2022/06/14 23:36
- ルーター・ネットワーク機器 通信量や通信量による影響を計算し想定できますか 3 2023/01/13 09:07
- ホームページ作成・プログラミング さくらサーバーに置いているホームページを改修したいです 2 2022/11/06 17:13
- 計算機科学 これは迷路を解くというよりも、いかに速く最速で走り切れる経路を見出せるかや、マシン性能、プログラミン 3 2023/07/17 16:27
- オンラインゲーム マイクラのドラクエmodをやりたいなと思って導入方法を見ながらやっていたのですが、インストーラーのS 1 2023/08/02 12:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
[VB.net] ExcelへのQRコード出...
-
ListViewで文字化けしてしまい...
-
発行元:不明???
-
次のクラスは登録されていませ...
-
wininet.dllとwsock32.dllについて
-
DAO3.6とACCESSの関係
-
Access2000のランタイムを...
-
VB6(SP5)+OO4OでCreateObjectが...
-
ビルドした.exeファイルは.NE...
-
Microsoft Visual C++ 2008
-
VBAでArrayListを使う為の「msc...
-
Excel 12.0とExcel 10.0両方を...
-
vba 時間の引き算 例えば 15:00...
-
VBで実行中のEXEファイルの情報...
-
「読み込み違反」が起きたとき...
-
Visual Studio 「AnyCpu」について
-
VBAにて指定したセルをプルダウ...
-
VBAでOutlookを終了させたい Ex...
-
意味不明の実行時エラーで困っ...
-
アウトルックが起動しているか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB6(SP5)+OO4OでCreateObjectが...
-
VBAでArrayListを使う為の「msc...
-
VB.NETでSPREADの設定方法
-
[VB.net] ExcelへのQRコード出...
-
ビルドした.exeファイルは.NE...
-
う~ん…。
-
VB.NET で作られたソフト...
-
VB6.0で作成したexeファイルが...
-
VB6で作成したアプリを配布する...
-
VB.NET(2017)で インストーラを...
-
発行元:不明???
-
Excelがインストールされてない...
-
accessがインストールされてい...
-
Product Codeの変更法は?
-
VB6のアプリケーションの配布
-
Windows7にVC++がインストール...
-
Visual Studio 2005は64ビットO...
-
スプレッドシート(ようなもの...
-
6.0から2005へのアップグレード
-
インストール不要アプリケーシ...
おすすめ情報