SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

アイエニウェア・ソリューションズ ドキュメント翻訳(AD)

Office 2007からSOAPベースのWebサービスにアクセスする

原文: Accessing SOAP-based Web Services from Office 2007

  • X ポスト
  • このエントリーをはてなブックマークに追加

Word 2007でWebサービスのデータを使用する

 ここでは、上と同じデータを今度はWordドキュメントで使用することを考えます。基本的な考え方は前と同じで、'Service Reference'を作成し、その上でデータアクセス用に生成されたクラスを利用します。まず、Visual Studio 2008を起動し、新規のOffice 2007 Word Documentプロジェクトを'MyWORD'という名前で作成します。

 入力が促されたら、新規のWordドキュメントを作成することに同意し、[OK]をクリックします。なお、状況によっては、この操作を行う前に、他のすべてのMicrosoft Office 2007プログラムを閉じる必要があります。これで完全に使用可能な新規のドキュメントがVisual Studio内に表示されます。

 [Project]メニューの[Add Service Reference...]をクリックします。

 入力が促されたら、アドレスフィールドに'http://localhost:8888/MyDISH'と入力し、[Go]をクリックします。これで、先ほど作成したWebサービスが表示されます。

 以前作成した'MyData'サービスが[Operations]ボックスに表示されています。その名前空間に'MyService'という値を与え、[OK]をクリックします。これで、Webサービスを使用するためのコードが自動的に作成されます。'app.config'ファイルが自動的に更新されると共に、アプリケーションへの参照が追加されることに注意してください。

 次に、ツールボックスからドキュメントへ'Button'を追加します。

 必要に応じてボタン表面のテキストを変更してから、ボタンをダブルクリックしてコードの編集を開始します。メソッド'private void button1_Click(object sender, EventArgs e)'に対して、次のコードを入力します。

private void button1_Click(object sender, EventArgs e)
{
int sqlCode;
DataTableReader reader; //A reader is used to step through the data.
MyService.MyDISHSoapPortClient webService;
/* Initialize the webservice, the constructor was auto‐created by VS */
webService = new MyWORD.MyService.MyDISHSoapPortClient();
/* Use the MyData procedure created in SQL Anywhere to create a reader */
reader = webService.MyData(out sqlCode).CreateDataReader();
/* Read each line of the data table that is returned */
while (reader.Read())
{
/* Concatenate the names and append it to the page */
this.Paragraphs[1].Range.InsertAfter("\n" + reader.GetValue(1) + ", "
+ reader.GetValue(2));
}
}

 要するに、これはWebサービスからデータを取得して、ドキュメントに入れるコードです。これを実現するために'MyService'クラスのインスタンスが生成されます。そのコードはVisual Studioによって自動的に作成されたものです。'DataTableReader'オブジェクトを使用してデータが順に読み込まれ、ページ内に設定されます。

 'Debug'ボタンをクリックするか、F5キーを押して、このソリューションをテストします。ドキュメントがロードされたら、ボタンをクリックすると、Webサービスからデータが取得され、ページ内に自動的に設定されます。

 このデータを使用すれば、Word内からカスタムメールマージドキュメントを作成するような処理を実現できます。ここでのポイントは、汎用的なWebサービスからデータが自動的に取得され、Webサービスをおのおのの要件に応じて個別に構成しなくてもよいことです。これは簡単なデモですが、パラメータを使うような構成も可能です。つまり、Webサービスのメソッドにパラメータを与え、そのパラメータを使用して、たとえば、個々の顧客に関する特定のデータを顧客のクライアントIDに基づいて取得することができます。

結論

 SOAPのWebサービスは、あらゆる種類のユーザーがサーバー上でおのおのの要件に応じて個別的に修正を行わなくてもデータにアクセスできる点で、業務に高い柔軟性をもたらす優れた方法だと言えます。さらに、Microsoft Office 2007アプリケーション内から直接データにアクセスすることも簡単です。統一的な方法でアクセスできなければ、データの効果的な格納もままなりません。SQL Anywhere 10のSOAPサービスは容易に統合できるので、この目的にかなっています。

参考資料

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
アイエニウェア・ソリューションズ ドキュメント翻訳連載記事一覧

もっと読む

この記事の著者

Bryan Sachdeva(Bryan Sachdeva)

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5466 2010/11/08 15:45

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング