2016-05-18 6 views
0

TableBinding.addRowsAsync関数を使用して20列のテーブルに行を追加するJavaScriptインポートアドインがあります。デスクトップクライアントでは、多数の行を追加すると非常にうまく動作しますが、Excelのオンラインではひどいパフォーマンスが発生します。 100行の場合、平均加算時間は1500msです。 300の場合、約2100msになります。ここで、性能テストから実際のコードは次のとおりExcelへのテーブルへの行の追加が遅い

//vm.binding is a tableBinding 
//vm.testData is an array of twenty string values 
vm.binding.addRowsAsync(vm.testData, function (result) { 
    //... 
    }); 

I行(平均20000)の多数のインポートをサポートするための要件を持っています。現時点では、アドインが5秒後に応答しなくなるのを防ぐために、このインポートが100ページに追加されていますが、これは完了に時間がかかります。

ブラウザのパフォーマンスを向上させるために使用できないものはありますか?

+1

使用している実際のコードを表示してください。 –

答えて

2

私は、そのAPIを使用しているテーブルバインディングに行を追加するのが遅いのはなぜですか?あなたは試してみることができます - 私はそれが速くなるかどうかはわかりません - 私たちのホストベースのアプリケーションを使用することですか?特定のExcelのAPIは、ここで概説:

Excel.run(function (ctx) { 
     var expenseTable = ctx.workbook.tables.getItem("ExpenseTable"); 
     expenseTable.rows.add(null,[['Rent','$600','Housing']]); 
     expenseTable.rows.add(null, [["Movie Club", "$75", "Entertainment"]]); 
     expenseTable.rows.add(null, [["Food", "$450", "Food"]]); 
     expenseTable.rows.add(null, [["Car", "$150", "Transportation"]]); 
     expenseTable.rows.add(null, [["Tuition", "$800", "School costs"]]); 
     expenseTable.rows.add(null, [["Books", "$150", "School costs"]]); 
     expenseTable.rows.add(null, [["Gift", "$100", "Other"]]); 
     expenseTable.rows.add(null, [["Loan", "$250", "Loans/Payments"]]); 

    return ctx.sync(); 
}) 
.catch(function (error) { 
     console.log(JSON.stringify(error)); 
}); 

APIはExcelのみオンラインまたはExcel 2016(ない2013年)で働く:あなたのケースではhttps://github.com/OfficeDev/office-js-docs/tree/master/excel

は、コードは次のようになります。それが問題だとしても、デスクトップ上で現在の方法を引き続き使用し、新しいものをオンラインで使用することができます。ちょうだい

if (Office.context.requirements.isSetSupported("ExcelApi")) { 
    Excel.run(...) 
} else { 
    bindings.addRowsAsync(...) 
} 

希望します。

〜Office拡張性チームの開発者Michael Zlatkovsky、MSFT

+0

私は新しいAPIを試してもパフォーマンスの向上は見られませんでしたが、2つの間でかなり同等です。 – JayChase

関連する問題