Office アドイン

[Office用アプリ]ドキュメントをバイト配列として取得後Base64エンコードする

WordとPowerPointが対象になりますが、getFileAsyncメソッドのfileTypeパラメータに“compressed”を指定することで、ドキュメントをバイト配列(OOXMLフォーマット(docx,pptx))として取得することができます。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=Edge">
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
        <script src="https://appsforoffice.microsoft.com/lib/1.0/hosted/office.js"></script>
        <script>
            Office.initialize = function(reason){}
            $(function(){
                $("#btnOK").click(function(){
                    //1MB(1048576バイト)ごとにスライスして文書を取得
                    Office.context.document.getFileAsync("compressed", {sliceSize:1048576}, function(result){
                        if(result.status == "succeeded"){
                            var myFile = result.value;
                            $("#result").empty();
                            $("#size").text("Size:" + myFile.size + "byte.");
                            for (var i=0; i<myFile.sliceCount; i++){
                                myFile.getSliceAsync(i, function(result){
                                    if(result.status == "succeeded"){
                                        sendSlice(result.value);
                                    }
                                });
                            }
                            myFile.closeAsync(function(result){
                                if(result.status == "succeeded"){
                                    $("#status").text("Status:File closed.");
                                } else {
                                    $("#status").text("Status:File couldn't be closed.");
                                }
                            });
                        }
                    });
                });
            });
            
            function sendSlice(slice){
                 var data = slice.data;
                 if(data){
                     $("#result").append('<span>index of the file slice:' + slice.index + '</span><br><textarea rows="4" cols="30">' + OSF.OUtil.encodeBase64(data) + '</textarea><br>');
                 }
            }
        </script>
    </head>
    <body>
        <input id="btnOK" type="button" value="OK"><br>
        <span id="size">Size:</span><br>
        <span id="status">Status:</span><br>
        <div id="result"></div>
    </body>
</html>

上記コードではsliceSizeオプションでスライスサイズを1MBに指定していますが、指定しない場合はデフォルトのスライスサイズ4MB(4194304バイト)が適用されます。
また、上記コードでは取得したバイト配列をBase64エンコードしてtextareaの値としていますが、このエンコードされた値をバイナリ変換すると、下図のようにOOXMLフォーマットのドキュメントになります。

・Document.getFileAsync method (apps for Office)
http://msdn.microsoft.com/en-us/library/office/jj715284.aspx
・FileType enumeration (apps for Office)
http://msdn.microsoft.com/en-us/library/office/jj220084.aspx
・File.getSliceAsync method (apps for Office)
http://msdn.microsoft.com/en-us/library/office/jj715281.aspx

新しいOffice.jsでPowerPointでもOffice用アプリが使えるようになりました。前のページ

[Excel 2013]Web関数を使ってマッシュアップ次のページ

関連記事

  1. Office関連

    オデッセイ コミュニケーションズ主催のExcel VBA入門セミナーに参加しました。

    今月19日に開催されたオデッセイ コミュニケーションズさん主催の「Ex…

  2. Office関連

    Google Docs APIを使ってGoogle ドキュメントを操作するVBAマクロ

    前回の記事で新しく追加されたGoogle Docs APIを紹介しまし…

  3. Office アドイン

    [Office用アプリ]カレンダーから日付入力

    カレンダーから日付を選ぶだけで選択中のセルに日付を入力できるコンテンツ…

  4. Office関連

    PowerPointのマクロを共有化して使う方法

    記事のタイトルだけ見るとちょっと分かりづらいですが、要するにWordの…

  5. Office関連

    ソースコードを番号行付きのテーブルに変換するWordマクロ

    Word文書内のソースコードを、他の文書と区別して目立たせたいときに役…

  6. Office関連

    Office 365 unified APIをVBAから呼び出す

    前回の記事で、VBAからOffice 365 APIを呼び出す手順につ…

コメント

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP