SHOEISHA iD

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

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

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

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

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

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

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

 ここでは、既存のWebサービスのデータを使用することを考えます。クライアントがMicrosoft Officeを使用しているものと仮定します。現在、Microsoft Officeプログラムのオートメーションやプログラミングは、以前のようにVBA用のスクリプト環境を使う方法ではなく、Visual Studio 2008で直接行うようになっています。Visual Studio 2008の起動後、新規のOffice 2007 Excel Workbookプロジェクトを作成し、それに名前'MyEXCEL'を付け、[OK]をクリックします。

 入力が促されたら、新規のExcelワークブックを作成することに同意し、[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 row = 3; //Start inserting values as of row 4 (Row 3 in zero‐base)
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 MyEXCEL.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())
{
/* Iterate through each column/field of the current row */
for (int i = 0; i < reader.FieldCount; i++)
{
/* Write the data value onto the spreadsheet */
this.Cells[row, i + 1] = reader.GetValue(i);
}
row++;
}
}

 要するに、これはWebサービスからデータを取得して、ワークシートに入れるコードです。これを実現するために'MyService'クラスのインスタンスが生成されます。そのコードはVisual Studioによって自動的に作成されたものです。'DataTableReader'オブジェクトを使用してデータが順に読み込まれ、ワークシートの各セルに値が設定されます。'Debug'ボタンをクリックするか、F5キーを押して、このソリューションをテストします。ワークブックがロードされたら、ボタンをクリックすると、Webサービスからデータが取得され、ワークシート内に自動的に設定されます。

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

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

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

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

もっと読む

この記事の著者

Bryan Sachdeva(Bryan Sachdeva)

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

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング