1

私はこれに対する解決策をオンラインで検索してきましたが、今のところ運がありません。

私が開発している現在のアプリケーションでは、潜在的に大きなrdlcレポートをExcelファイルにエクスポートする必要があります(他の形式の中でも)

これは私がこれを達成するために使用しているコードであり、通常のサイズのレポートで非常にうまく機能します:

private static void ExportToExcel(LocalReport localReport, string filename)
{
  if (File.Exists(filename))
  { 
    File.Delete(filename);
  }

  var bytes = localReport.Render("Excel", string.Empty);
  using (var stream = File.Create(filename))
  {
    stream.Write(bytes, 0, bytes.Length);
  }
}

非常に簡単ですが、大きなレポートをエクスポートしようとすると、次のような例外が発生します。

そこで私の質問です。最大行数に達したときに新しいワークシートを作成するようエクスポーターに指示する方法はありますか? もしそうなら、その方法は何ですか?

4

3 に答える 3

2

これは古い質問ですが、改ページを .rdl ファイルに追加できます。これらにより、エクスポートにより Excel で新しいシートが開始されます。.rdl 内の式を使用して、別の改ページが必要になるタイミングを動的に決定できます。

于 2014-06-19T20:49:42.160 に答える
2

私は同様の問題に遭遇し、ここに私の経験を追加すると思いました. SSRS のバージョンが言及されておらず、質問が未回答のままだったので、これは最高の場所だと思いました。SSRS 2012 rdl レポートをさまざまな形式 (Excel など) にエクスポートするための PowerShell スクリプトを作成しました。次のエラーも発生していました。

"7" 個の引数を指定して "Render" を呼び出し中に例外が発生しました: "Excel レンダリング拡張機能: 行数が、このバージョンのワークシートで可能な最大値を超えています。要求された行数: 65587. 最大行数: 65536. (rrRenderingError)"

SSRS 2012 では、Excel エクスポートから 65536 行の制限が削除されますが、プログラムでこの行制限を超える方法を見つけるのに苦労しました。少し検索した後、解決に役立つMicrosoft サポート記事を見つけました。パラメータ値「Excel」を「EXCELOPENXML」に変更する必要があります

var bytes = localReport.Render("EXCELOPENXML", string.Empty);

繰り返しますが、これは SSRS の以前のバージョンでは役に立ちませんが、SSRS 2012 ではこれをもっと可視化したかったのです。

于 2015-06-01T14:27:13.080 に答える