2017-01-05 4 views
0

テーブルにデータを書き込むためにoffice js APIを使用しています。コードは2016年11月の終わりまでオンラインでExcelにうまくいき、それ以降は動作しなくなりました。Office JS APIがテーブルに10000未満のセル値を書き込めない

コードだけテーブルに値を設定し、それを書き込みしようとしている細胞の総数は10,000未満であり、値を設定する方法がある。

dataTable.getHeaderRowRange().values = [data.headerValues]; 
dataTable.getDataBodyRange().formulas = data.values; 
dataTable.getTotalRowRange().formulas = [data.totalRow]; 

再現する完全なコード

負荷データBをクリック
<?xml version="1.0" encoding="UTF-8"?> 
<OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="TaskPaneApp"> 
    <Id>5B1D06A5-5F14-4B8F-B07D-E698084397F6</Id> 
    <Version>1.0.0.0</Version> 
    <ProviderName>Provider</ProviderName> 
    <DefaultLocale>en-US</DefaultLocale> 
    <DisplayName DefaultValue="Testing Office API" /> 
    <Description DefaultValue="Testing Office API"/> 
    <Hosts> 
    <Host Name="Workbook" /> 
    </Hosts> 
    <DefaultSettings> 
    <SourceLocation DefaultValue="https://renil-abdulkader.github.io/office-js-api-testing/" /> 
    </DefaultSettings> 
    <Permissions>ReadWriteDocument</Permissions> 
</OfficeApp> 

を:問題はGitHub

でホストされているあなたは、以下のマニフェストを使用して、オフィスオンラインでコードを実行することができますuttonはデータの一部のみを書き出し、コンソールにエラー:{"name":"OfficeExtension.Error","code":"GeneralException","message":"There was an internal error while processing the request.","traceMessages":[],"debugInfo":{"errorLocation":"Range.formulas"}}を表示します。

これが起こったら、他の問題は、次のとおりです。

  1. はバインディングがバインディングが失敗したら
  2. を失敗し、タブを削除するExcelシート上の複数のユーザーが存在する場合
  3. を失敗を開始します追加します、ユーザーはYou are no longer connected to the serverエラーメッセージが表示されます。

更新1:私たちが書いている68行と、1行に136列あります。最初の40行と最後の30行を書き込むようにコードを更新しました。そのコードは正常に動作しますが、68行全体では動作しません。したがって、データそのものに問題はないはずです。

+0

Excel用のストレージの制限に達している可能性があります。マニフェストによって提案されたサイズのユーザーの場合は、データベースを使用してデータを格納する必要があります。 [Azure SQLデータベースへの接続/ Office 365からのSQL Server](http://stackoverflow.com/a/35387508/1115360)は、ソリューションにつながる可能性があります。 –

+0

ストレージ制限はどこで指定されていますか? – renil

+0

このデータは確かに10MBの制限に達しません。言及したように、これは以前よりうまく機能していました。 – renil

答えて

0

これは、オンラインプラットフォームでのタイムアウトエラーが原因です。緩和のステップとして、チャンクで大きな数式(または値)の更新を行うことが可能なので、タイムアウトの問題が発生するリクエストは1つもありません。チャンクサイズは、環境によって異なる場合があります。おそらく2K細胞が始まるでしょうか? 私たちが別の解決方法を提供できるのであれば、このスレッドでフォローアップします。

+0

テーブルを使用しないでください。代わりにrangeを使用して値を設定しますか?間違いなく試してみることができます。しかし、バッチ・プロミスを試してみると、うまくいかなかった。私はバッチを行うコードを更新し、私はエラーを再現できるかどうかを確認することができます。 – renil

+0

値または数式の両方が再計算をトリガーします。だから、私はそれが違いをもたらすとは思わない。数式を設定する場合は、数式プロパティを使用する必要があります。 ""チャンク "私は、(値または数式)元のグリッドを小さなグリッドに分割して更新すると言っていましたが、10kセルの更新ではなく、2k個のセルの更新を5回行っています。 オンライン(ブラウザ)クライアントに関係なく、ユーザーエクスペリエンスも考慮する必要があります。理想的には、「作業中です...」というメッセージが長すぎることを望まない場合は、キャンセルまたは閉じることができます。 。 –

+0

私はコードを更新し、あなたに知らせるでしょう。 – renil

関連する問題