PHP でMySQL からSharePoint Excel Services のデータにアクセス

古川えりか
古川えりか
コンテンツスペシャリスト
PHP から標準MySQL ライブラリを介してSharePoint Excel Services に接続。

CData SQL Gateway とODBC Driver for ExcelServices を使用することで、ETL を実行したりデータをキャッシュしたりすることなく、MySQL クライアントからSharePoint Excel Services にアクセスできます。以下のステップに従って、PHP の標準MySQL インターフェースであるmysqliPDO_MySQL を介してSharePoint Excel Services のデータにリアルタイムで接続します。

CData ODBC ドライバとは?

CData ODBC ドライバは、以下のような特徴を持ったリアルタイムデータ連携ソリューションです。

  1. SharePoint Excel Services をはじめとする、CRM、MA、会計ツールなど多様なカテゴリの270種類以上のSaaS / オンプレミスデータソースに対応
  2. 多様なアプリケーション、ツールにSharePoint Excel Services のデータを連携
  3. ノーコードでの手軽な接続設定
  4. 標準 SQL での柔軟なデータ読み込み・書き込み

CData ODBC ドライバでは、1.データソースとしてSharePoint Excel Services の接続を設定、2.MySQL 側でODBC Driver との接続を設定、という2つのステップだけでデータソースに接続できます。以下に具体的な設定手順を説明します。

CData ODBC ドライバのインストールとSharePoint Excel Services への接続設定

まずは、本記事右側のサイドバーからExcelServices ODBC Driver の無償トライアルをダウンロード・インストールしてください。30日間無償で、製品版の全機能が使用できます。

必要な接続プロパティの値が未入力の場合には、データソース名(DSN)で入力します。組み込みのMicrosoft ODBC Data Source Administrator を使用し、DSN を構成できます。ドライバーのインストールの最後にアドミニストレーターが開きます。Microsoft ODBC データソースアドミニストレーターを使ってDSN を作成および設定する方法は、ヘルプドキュメントの「はじめに」を参照してください。

ワークブックへの接続

どちらのSharePoint エディションをお使いでも、File を Excel ワークブックに設定してください。このパスは以下のプロパティからの相対パスになります。

  • Library:デフォルトではShared Documents ライブラリが使用されます。このプロパティを使って、組織内の別のドキュメントライブラリを指定してみてください。例えば、OneDrive for Business に接続する場合は、このプロパティを"Documents" に設定します。
  • Folder:このプロパティを使って、ライブラリ内のサブフォルダへのパスを指定できます。パスはLibrary で指定されたライブラリ名に関連します。

テーブルとしてのスプレッドシートデータへの接続

CData 製品では、基底API で利用可能なオブジェクトに基づいて、使用可能なテーブルを検出していきます。

API では異なるAPI オブジェクトを表示します。スプレッドシートの構成とSharePoint のバージョンに基づいてAPI を選択しましょう。

  • OData: OData API を使用すると、Excel で[挿入]->[テーブル]をクリックして作成されたExcel テーブルオブジェクト(範囲やスプレッドシートではありません)から定義されたテーブルにアクセスできます。OData API に接続する際、ワークブックにテーブルオブジェクトが定義されていない場合は、CData 製品がテーブルを返さないことがあります。テーブルとしてスプレッドシートまたは範囲に接続するには、UseRESTAPI をtrue に設定してください。
  • REST: REST API を使用すると、Excel テーブルオブジェクト、範囲、およびスプレッドシートから定義されたテーブルへアクセスできます。これがデフォルトの API です。範囲およびスプレッドシートから多数の行をリクエストすることは REST API によって制限されており、CData 製品では返される行数をデフォルトで 100 に制限しています。また CData 製品では、デフォルトで1行目からカラム名を検出します。これを無効にするには、Header を設定してください。

DefineTables を追加設定すると、Excel の範囲の構文を使用して、範囲に基づいてテーブルを定義できます。大きすぎる範囲は、API によって制限されます。

SharePoint オンプレミスへの接続

URL をサーバー名もしくはIP アドレスに設定しましょう。さらに、SharePointVersion と認証値を設定します。

SharePoint OnPremises を認証するには、AuthScheme を認証タイプに設定し、必要に応じてUserPassword を設定してください。

Note:SharePoint On-Premises 2010 に接続する場合は、 UseRESTAPI をtrue に設定する必要があります。

    Windows(NTLM)

    最も一般的な認証タイプです。CData 製品では NTLM をデフォルトとして使用するよう事前設定されています。Windows のUserPassword を設定して接続してください。

    その他の認証方法については、ヘルプドキュメントの「はじめに」をご覧ください。

    SQL Gateway を構成する

    SharePoint Excel Services のデータへの接続を、仮想MySQL データベースとして設定する方法については、「SQL Gateway Overview」を参照してください。クライアントからのMySQL リクエストをリッスンするMySQL リモートサービスを構成します。このサービスはSQL Gateway UI で設定できます。

    Creating a MySQL Remoting Service in SQL Gateway (Salesforce is shown)

    PHP から接続する

    以下の例は、オブジェクト指向インターフェースを使用してクエリを接続および実行する方法を示します。 以下のパラメータを使用して接続オブジェクトを初期化し、仮想MySQL データベースに接続します。

    • Host:サービスが実行されているリモートホストの場所を指定します。この例では、サービスがローカルマシンで実行されているため、"localhost" をリモートホスト設定に使用します。
    • Username:SQL Gateway の「ユーザー」タブで認証したユーザーのユーザー名を指定します。
    • Password:認証されたユーザーアカウントのパスワードを指定します。
    • Database Name:データベース名としてシステムDSN を指定します。
    • Port:サービスが実行されているポートを指定します。この例では3306 を指定します。

    mysqli

    <?php
    $mysqli = new mysqli("localhost", "user", "password", "CData ExcelServices Sys","3306");
    ?>
    
    

    PDO

    <?php
    $pdo = new PDO('mysql:host=localhost;dbname=CData ExcelServices Sys;port=3306', 'user', 'password');
    ?>
    
    

    PHP からクエリする

    接続が確立されると、テーブルにアクセスできます。以下のステップでは、例を説明します。

    1. テーブル(Account)をクエリします。結果は、連想配列として$result オブジェクトに保存されます。
    2. 各行とカラムを順番に処理して、値を出力してPHP ページに表示することができます。
    3. 接続を閉じます。

    mysqli

    $result = $mysqli->query("SELECT Name, AnnualRevenue FROM Account");
    while($row = $result->fetch_assoc()) {
      foreach ($row as $k=>$v) {
        echo "$k : $v";
        echo "<br />";
      }
    }
    $mysqli->close();

    PDO

    $result = $pdo->query("SELECT Name, AnnualRevenue FROM Account");
    while($row = $result->fetch(PDO::FETCH_ASSOC)) {
      foreach ($row as $k=>$v) {
        echo "$k : $v";
        echo "<br />";
      }
    }
    $result = null;
    $pdo = null;

    おわりに

    このようにCData ODBC ドライバと併用することで、270を超えるSaaS、NoSQL データをコーディングなしで扱うことができます。30日の無償評価版が利用できますので、ぜひ自社で使っているクラウドサービスやNoSQL と合わせて活用してみてください。

    CData ODBC ドライバは日本のユーザー向けに、UI の日本語化、ドキュメントの日本語化、日本語でのテクニカルサポートを提供しています。

はじめる準備はできましたか?

SharePoint Excel Services ODBC Driver の無料トライアルをダウンロードしてお試しください:

 ダウンロード

詳細:

SharePoint Excel Services Icon SharePoint Excel Services ODBC Driver お問い合わせ

Excel Services ODBC ドライバーは、ODBC 接続をサポートする任意のアプリケーションからリアルタイムなExcel Services データに接続できるパワフルなツールです。標準のODBC ドライバーインターフェースを使用して、データベースのようにSharePoint サーバーでホストされているExcel スプレッドシートデータにアクセスし、データ連携を実行できます。