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

    Chromeアプリ版Office Onlineを使ってみました。

    「Microsoft、GoogleのChromeアプリ版Office …

  2. Office関連

    PowerPoint 2013ではプレゼンテーションをmp4形式で保存できるようになりました。

    ※ この情報はOffice 2013 カスタマー プレビュー版を元にし…

  3. Office関連

    Office XP Developer Toolsでリボン対応のCOMアドインを作成する。

    「Visual Basic 6でリボン対応のアドインを作成する」ではV…

  4. Excel

    「Excel VBAでIEを思いのままに操作できるプログラミング術」の見本誌をいただきました。

    「VBAアクションゲーム?Excel(エクセル)で動かそう!」で有名な…

  5. アイコン一覧

    Office 2013 アイコン一覧(K,L)

    ・Office 2013 アイコン一覧 NUM…

コメント

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP