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関連

    PDFファイル上のフィールドの値を操作するVBAマクロ

    「PDFファイルに差し込み印刷するVBAマクロ」で、Acrobatを操…

  2. Office関連

    関数一覧(Excel 2013)

    関数の挿入ダイアログから抽出したExcel 2013の関数情報を表にし…

  3. Office関連

    指定したフォルダ内の画像ファイルを一括挿入するPowerPointマクロ

    大量の画像ファイルを1枚/1スライドで挿入する必要があり、…

  4. Office関連

    Excel 2013で駅すぱあとWebサービス APIの「経路探索」を使ってみました。

    「「駅すぱあとWebサービス API無償提供」を利用してみました。」で…

  5. Office関連

    【2018年9月版】Microsoft Office関連の公式リンクまとめ

    Ignite 2018やOffice 2019のリリースがあり、Off…

  6. Office関連

    2つの文書を比較するWordマクロ

    先日テキスト比較ソフトの「ちゃうちゃう!」がバージョンアップされたこと…

コメント

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

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

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

PAGE TOP