GrapeCity.devlog

グレープシティ株式会社のDeveloper Tools〈開発支援ツール〉の最新情報をお届けします。製品のTIPSや発売情報、イベントのお知らせなどをいち早く発信中です。

Web APIの実行も?468種類のExcel互換関数から業務システム開発で使えるやつを探してみる

表計算・グリッドコンポーネント「SPREAD for Windows Forms」の最新バージョン「11.0J」では、130種類以上のExcel互換関数が新たに追加され、合計数は各プラットフォーム対応バージョンのSPREADシリーズでも最大級の468になりました。

SPREAD for Windows Forms 11.0J 製品ヘルプ - 各バージョンで追加された関数

追加された関数は、業務システム開発で使えそうなものから、三角関数のような数学系の関数など普段なかなか使わないようなものまで様々です。今回は新しく追加されたExcel互換関数の中から、業務システム開発で使えそうなものをいくつかピックアップしてご紹介したいと思います。

CONCAT関数

CANCAT関数は引数に指定した文字列を連結します。例えば住所データなど、都道府県名、市町村名、それ以降で項目が分かれている場合に連結して表示できます。

C#

fpSpread1.Sheets[0].Columns[3].Formula = "CONCAT(A1,B1,C1)";

実行結果

f:id:GrapeCity_dev:20180326101103p:plain

文字列の連結は、これまでも同様の関数としてCONCATENATE関数がありましたが、この関数は本家Excelでも現在は廃止扱い(下位互換性のため残っている)となっております。

CANCAT関数がCONCATENATE関数と比較して優れている点は、結合する文字列を範囲指定できる点です。先ほどのサンプルコードは以下のように置き換えることができます。

C#

fpSpread1.Sheets[0].Columns[3].Formula = "CONCAT(A1:C1)";

DAYS関数

DAYS関数は2つの日付間の日数を求める関数です。開始日から経過した日数を計算するので、"数え"(開始日を1日目とする)で計算したい場合は単純にプラス1します。

C#

fpSpread1.Sheets[0].Columns[3].Formula = "DAYS(C1,B1) + 1";

実行結果

f:id:GrapeCity_dev:20180326101436p:plain

MAXIFS関数とMINIFS関数

MAXIFS関数MINIFS関数は、指定した範囲の中で条件に合致するデータの最大値、または最小値を取得することができます。条件は複数設定することができます。以下の例では、試験のスコアのリストから、1組の生徒の最高得点と最低得点を求めています。

C#

// 1組の生徒の最高得点
fpSpread1.Sheets[0].Cells[2,5].Formula = "MAXIFS(C:C, A:A, \"1\")";
// 1組の生徒の最低得点
fpSpread1.Sheets[0].Cells[3,5].Formula = "MINIFS(C:C, A:A, \"1\")";

実行結果 f:id:GrapeCity_dev:20180326102129p:plain

WEBSERVICE関数とFILTERXML関数

WEBSERVICE関数はWebサービスのURLを指定して実行することができます。また同じく新しく追加されたFILTERXML関数では、指定されたXPathに基づいて、XMLコンテンツの特定のデータを返します。

この2つを組み合わせることで、XMLを返すWeb APIからのデータを取得して表示することができるようになります。

関数でやることではない、というツッコミは置いておいて、おもしろそうな関数なので試してみます。以下の例では、OpenWeatherMapのAPIを実行し、宮城県仙台市の天気を取得して表示させています。「appid」にはOpenWeatherMapにサインイン(無料)すると取得できるAPI Keyを設定してください。

C#

// Web APIの実行
fpSpread1.Sheets[0].Cells[3, 5].Formula = "WEBSERVICE(\"https://api.openweathermap.org/data/2.5/weatherq=Sendai&mode=xml&units=metric&appid=your_key\")";
// 取得したXMLを解析
fpSpread1.Sheets[0].Cells[3, 2].Formula = "FILTERXML(F4, \"//current/weather/@value\")";
fpSpread1.Sheets[0].Cells[4, 2].Formula = "FILTERXML(F4, \"//current/temperature/@value\")";
fpSpread1.Sheets[0].Cells[5, 2].Formula = "FILTERXML(F4, \"//current/humidity/@value\")";

実行結果 f:id:GrapeCity_dev:20180326131605p:plain

但し、Web APIといえばJSON形式でデータが返されることを思い浮かべる方が多いかと思いますが、現状ではJSONを簡単に解析できる関数はありません。これは本家Excelでも同様です。

SWITCH関数

先ほどWeb APIから天気情報を取得する例をご紹介しましたが、天気名が英語表記でした。これを対応する日本語表記に変換するのは独自でやらないといけないですが、そんなとき便利なのがSWITCH関数です。入力された評価値に応じて、出力結果を分岐して出力することができます。プログラマーの方にはおなじみですね。

以下のように、天気名を出力するセルに設定していた関数を、SWITCH関数を使って英語の天気名を日本語の天気名に置き換えるように書き換えました。

C#

fpSpread1.Sheets[0].Cells[3, 2].Formula = "SWITCH(FILTERXML(F4, \"//current/weather/@value\"), \"clear sky\", \"快晴\"," +
                               "\"few clouds\", \"晴れ\", \"scattered clouds\", \"くもり\"," +
                               "\"broken clouds\", \"くもり\", \"shower rain\", \"小雨\", \"rain\", \"\"," +
                               "\"thunderstorm\", \"雷雨\", \"snow\", \"\", \"mist\", \"\", \"その他\")";

実行結果 f:id:GrapeCity_dev:20180326131545p:plain

いかがでしたでしょうか。普段からExcelをお使いの方にとっては、同等の機能がそのままのイメージで使えるというのはうれしいですね。

SPREAD for Windows Formsには他にもExcelライクなアプリケーションの開発を実現するための機能が多数収録されております。 製品Webサイトではブラウザから数クリックするだけで手軽にインストールして製品の動作を試せるClickOnce形式のデモアプリケーションも用意しておりますので、ぜひ一度ご覧いただければと思います。

SPREAD for Windows Forms 11.0J 製品情報
トライアル版
Windowsアプリケーションデモ

Copyright © GrapeCity, Inc. All Rights Reserved.