2009-04-07 6 views
11

クライアントは、スプレッドシートの計算を「Web対応にする」ことを望んでいます。ユーザーは特定のセルの値を指定し、結果の値を他のセルに表示します。どのようにExcelサーバー側を使用していますか?

は、(彼らは「スプレッドシートのような」インタフェースをユーザに表示したくない。これは、UIの問題ではありません。)

彼らは多くの、多くのシートの上に、計算のたくさんの巨大なスプレッドシートを持っています。しかし、最終的には、2つのことだけが重要です。(1)数字を2つのセルに1つのシートに入れます。(2)別のシートのカップルのセルから数字を取得します。残りの部分はブラックボックスです。

ユーザーが希望する数字を入力するためのUIを提示したい場合、Excelファイルをプログラムで開き、数値を設定して、再計算して結果を読みたいと思います。

これは可能ですか?これをより簡単にする商用コンポーネントはありますか?彼らの落とし穴は私が検討していないのですか?

は(私はこれを行うためにオフィスオートメーションを使用することができます知っているが、それはユーザーのコンテキストで実行しようとするので、私は、サーバー側を行うことをお勧めしていないなどを知っている)

編集:多くの人々がコード内の数式を再作成する必要があると言っています。しかし、これはとてつもなく複雑なものになるでしょう。これは解決された問題になるかもしれないようです - 誰かが私のためにやるタイプのコンポーネントを知っていますか?誰かが "Excel式からコードへ"生成システムを作成しなければなりません。私は喜んでそれに支払うだろう。

編集/解決:SpreadsheetGearは私が探していたものです。とりわけ、XLSを電卓として使用することができます。選択したセルの生の値を設定し、計算されたセルの値を読み取ることができます。まさに私が探していたもの。

答えて

5

あなたは間違いなくサーバー側でinteropを使用したくない場合は、クライアント側のkludgeとして十分に使用できません。スプレッドシートのロジックアウト

図:

私は2つのオプションを見ることができます。これは長期的にはビジネスロジックを既知の数量にすることで利益を得るかもしれませんが、短期間にスプレッドシートに実際にバグがあることがわかります(私は何年も使用された数多くの怪物スプレッドシートに遭遇しました

SpreadSheetGear.NETを評価してください。これは基本的にExcelなしですべてのことを行うinteropの代替品です(Excelの非ビジュアルロジックとIOの大部分を.NETで複製します)。 )

+0

SpreadsheetGearからのコンポーネントは、完璧に、ありがとう。 – Deane

+0

聞いてよかったですが、私は実際にExcelの計算にそれほど多く使っていません。私たちは主にイントラネットアプリケーション用のExcelファイルのインポートとエクスポートにこれを使用しています。インテルアプリケーションでは、 – David

0

ユーザーがローカルシステムでスプレッドシートを開いていて、ウェブサイトでそのローカルスプレッドシートを操作したいと思っているようですね。

このような場合は、実際にはできません。 Officeオートメーションでさえ、シートをサーバーにアップロードして新しい変更されたバージョンをダウンロードする必要がある場合を除き、役立たないでしょう。

あなたができることは、Webサービスを作成して計算を行い、vbaまたはvstoコードをExcelシートに追加してそのサービスと通信することです。

+0

いいえ、クライアント側とは関係ありません。私は本質的に、スプレッドシートをサーバー上のトランザクション計算機として使用したいと思っています。 – Deane

+0

さて、私は今あなたを得る。その場合、Randolphoはそれをかなりうまくカバーします。 –

4

これは確かにASP.NETを使用して可能ですが、非常にお勧めできません。スケーラビリティがなく、同時実行エラーが発生しやすくなります。

スプレッドシートの計算を分析して複製することをお勧めします。さて、あなたのビジネスはこれを行うのにかかる時間が気に入らないだろうが、(おそらく)彼らにもっと使いやすいシステムを与えるだろう。

また、ウェブサイトのユーザーにスプレッドシートを提供するだけで、ほとんど何もできなくなります。

編集:あなたのステークホルダーが実際にExcelサーバー側を主張している場合は、Excel Servicesをよく見てみることをお勧めします。@John Saundersが示唆しているとおりです。それはすべてを取得することはできませんあなたが欲しいですが、それはかなりあなたを得るだろう、あなたがASP.NETでそれをサーバー側でしようとすると終わるいくつかの問題を解決する必要があります。

それは万能薬だと言っているわけではありません。あなたの走行距離は確かに変わります。そして、Sharepointは買うか維持するのがちょっと安いわけではない。実際には、短期間のコストは、Sharepointルートに行くと長期的なコストで簡単に小さくなりすぎることがありますが、要件に合わせるのが最善の選択肢かもしれません。

私はあなたが別の.NETモジュールですべてのロジックをコーディングすることを推奨します。そうすれば、サーバー側のサーバー側であるの両方をクライアント側で使用できます。 Excelは簡単に計算をCOMオブジェクトに渡すことができ、.NETライブラリをCOMオブジェクトとして簡単に公開することができます。結局、あなたはもっとメンテナンス可能で使いやすいアーキテクチャを持っています。

+0

+1また、あなたの計算をユニットテストすることもできます。 –

+0

絶対に。 1人または2人以上のユーザーがいれば、簡単に問題に向かうことができます。 (少なくとも、それは遅くなるだろう)。並行Webアクセスを目的としたテクノロジを使用する方が効果的です。 – andypaxo

+0

Excelファイルに何かを永続化していなくても並行性の問題を起こす危険がありますか?私は戻って何かを保存したくありません - 私はちょうどいくつかのデータを入力しrecalc、いくつかのデータを読んで、放棄したいです。 – Deane

7

可能ですが、お勧めできません(正式にはサポートされていません)。

COMまたは.NET Primary Interopアセンブリを通じてExcelと対話することができますが、これはクライアント側のプロセスを意味します。

サーバー側では、ディスプレイやデスクトップが利用できず、予期しないダイアログボックス(たとえば)が表示されるとウェブアプリケーションがハングします–あなたのアプリは不安定になります。

また、各要求にExcelプロセスを適用することは、正確には低リソースのアプローチではありません。

ブラックボックスを作成し、適切なプログラミング言語で再実装する方が明らかに優れています(「より信頼性と高速」など)。

関連読書:それは、サーバー側でのExcelシートを操作することは理にかなっているかどうかの議論を無視KB257757: Considerations for server-side Automation of Office

+0

問題の優れた議論。 +1 – Randolpho

1

、これを実行するための1つの方法は、おそらく

Microsoft.Office.Interopを採用するようになります。 .Excel.dll

このライブラリを使用すると、Excelにスプレッドシートを開き、内容を変更し、.NETから読み取るように指示できます。 WinFormアプリケーションでライブラリを使用しましたが、ASP.NETからも使用できると思います。それでも

、シートがunfrequentlyアクセスされた場合、既に述べた並行性の問題を考える...しかし、なぜ...これを行うには

1

最も簡単な方法は、にかもしれない:

ExcelをアップロードGoogle Docsへのワークブック - これは私の経験ではとてもきれいです

Google Spreadsheets Data APIを使ってデータを更新し、数値を返します。あなたがその方向に行きたい場合はここで

は、あなたがこれを始めるためのリンクです:

http://code.google.com/apis/spreadsheets/overview.html

1

は私が他のものより断固としますされています:ない使用Excelのサーバー側のん。デスクトップアプリケーションとして使用することを意図しています。つまり、ランダムに異なるスレッドから、一度に複数のスレッドから使​​用することを意図していません。 Excel(または他のOfficeデスクトップ製品)をサーバーとして使用しようとするよりも、自分のスプレッドシートを作成する方がよいでしょう。

これは、Excelサービスが存在する理由の1つです。MSDNのクイック検索では、このリンクが表示されました:http://blogs.msdn.com/excel/archive/category/11361.aspxこれはカテゴリリストなので、件名に関するブログ投稿のリストが含まれています。 Microsoft.Office.Excel.Server.WebServices Namespaceも参照してください。

+1

Excelサービスに関する優れた点。あまりにもあなたがSharepointを必要とする悪い... – Randolpho

関連する問題