Office関連

[Excel Services ECMAScript]ループによる入力と一括入力の処理時間について

埋め込んだExcelワークブックのセルに対して、ループで1セルずつ入力したときと特定のセル範囲にまとめて入力したときの処理の違いを実験してみました。

※ 入力するデータは「クジラ 外国 為替 確認 API」を使用してJSONP形式で取得しました。

<script type="text/javascript" src="http://r.office.microsoft.com/r/rlidExcelWLJS?v=1&kip=1"></script>
<script type="text/javascript" src="http://api.aoikujira.com/kawase/get.php?format=jsonp&code=usd&callback=cb"></script>
<script type="text/javascript">
    var fileToken = "SD92A165759188B352!269/-7880906317294423214/";
    var row = 1;

    if (window.attachEvent) {
        window.attachEvent("onload", loadEwaOnPageLoad);
    } else {
        window.addEventListener("DOMContentLoaded", loadEwaOnPageLoad, false);
    }

    function loadEwaOnPageLoad() {
        var props = {
            uiOptions: {
                showGridlines: false,
                showRowColumnHeaders: false,
                showParametersTaskPane: false
            },
            interactivityOptions: { }
        };

        Ewa.EwaControl.loadEwaAsync(fileToken, "myExcelDiv", props, onEwaLoaded);
    }

    function onEwaLoaded(result) {
        ewa = Ewa.EwaControl.getInstances().getItem(0);
    }
    
    function fnc1() {
        var data = cb();
        if (data.result == "ok") {
            var ary = new Array();
            ary[0] = new Array();
            for (key in data) {
                switch (key) {
                    case "result":
                    case "basecode":
                    case "update":
                    case "source":
                    case "API_URL":
                        break;
                    default:
                        ary[0][0] = key;
                        ary[0][1] = data[key];
                        ewa.getActiveWorkbook().getSheets().getItemByName("Sheet1").getRange(row,1,1,2).setValuesAsync(ary,setRangeValue,null);
                        row++;
                        break;
                }
            }
        }
    }
    
    function fnc2() {
        var data = cb();
        if (data.result == "ok") {
            var cnt = 0;
            var ary = new Array();
            for (key in data) {
                switch (key) {
                    case "result":
                    case "basecode":
                    case "update":
                    case "source":
                    case "API_URL":
                        break;
                    default:
                        ary[cnt] = new Array();
                        ary[cnt][0] = key;
                        ary[cnt][1] = data[key];
                        cnt++;
                        break;
                }
            }
            ewa.getActiveWorkbook().getSheets().getItemByName("Sheet1").getRange(1,1,cnt,2).setValuesAsync(ary,setRangeValue,null);
        }
    }
    
    function setRangeValue(asyncResult) {
        if (asyncResult.getCode() != 0) {
            alert("Err:" + asyncResult.getDescription());
        }
    }
</script>
<input type="button" value="ループで入力" onclick="fnc1();"></input><br>
<input type="button" value="まとめて入力" onclick="fnc2();"></input>
<div id="myExcelDiv" style="width: 350px; height: 250px"></div>





上記処理時間をそれぞれタイマーで計測したところ、ループでの処理が10秒掛かったのに対し、まとめて入力した場合は1秒掛かっていませんでした。
複数のセルにまとめてデータを入力する際は、一括して入力するのが良さそうです。

また、処理時間とは関係無い話ですが、上記のようにテーブル出力にExcel Web Appを利用すると、フィルターやソート機能が簡単に利用できるので非常に便利です。

Accessible Explorerのダウンロード先前のページ

文字コードを指定してURLエンコードを行う次のページ

関連記事

  1. Office関連

    テキストボックス等Shapeオブジェクトのテキストのみを置換するWordマクロ

    Word MVPの新田さんのブログで気になる記事がありました。…

  2. Office関連

    Excelを使わずにCSVからExcelファイルに変換するPowerShellコード

    CSVファイルからExcelファイルに変換する処理を自動化したい、Ex…

  3. Office関連

    [VBA]ユーザーフォーム上のコンボボックスでオートコンプリート機能を実装する方法

    MSDNフォーラムに「ユーザーフォーム上のコンボボックスで、任意の文字…

  4. Office関連

    「クラシックスタイルメニュー for Office 2010」のOffice 2013対応状況

    私が下記ページで公開しているフリーソフト「クラシックスタイルメニュー …

  5. Office関連

    VBAでインターネット上のファイルをダウンロードする方法をまとめてみました。

    「VBA ファイル ダウンロード」といったキーワード検索でのアクセスが…

  6. Office関連

    [Office 365 Solo]テクニカル サポートってどんなもの?

    前々回の記事に引き続いて、Office 365 Soloの疑問点第三弾…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP