2017-02-01 58 views
1

大きなレポートがあり、各行にハイパーリンクが含まれています。ssrsレポートをExcelにエクスポート - 壊れたハイパーリンク

50k以上の行を含むレポートがExcelにエクスポートされます。

エクスポート後、xlsxファイルを開いて、ファイルにエラーが含まれているというメッセージが表示されます。ファイルのリカバリを提案します

リカバリメッセージにハイパーリンクが削除されたことが示された後。私はファイルを開くことができますが、リンクはもはや動作していません。

私はC#ののOpenXML SDKライブラリをエクスポートしたファイルを開こうとし、そのファイルを伝えるエラーメッセージが表示されましたが、不完全な要素が含まれていますが、私は報告書は以下の49K行、エクスポートを持っているとき、それは、しかし

ある要素見つけることができませんでしたファイルが正常に開かれ、すべてのハイパーリンクが機能しています。 レポートをpdfまたはdocにエクスポートすると、ハイパーリンクも機能します レポートサーバーvesion 12.0.2269.0を使用します

誰でもこの問題を解決する方法はありますか?

答えて

1

通常、SSRSからエクスポートされたExcelファイルの後にこのような問題が発生した場合、Excelに問題があるデータがあります。おそらく隠されたキャラクター。ファイルを開くと、問題が起きたときにエクスポートされます。

このような状況に対処するため、SQL Serverでユーザー定義関数(UDF)を作成して、Excelが危機に瀕していることが分かっている文字を削除しました。以下は私が使用している例です。

CREATE FUNCTION [dbo].[udf_CleanData] 
(
    @data text 
) 

RETURNS varchar(max) 

AS 

BEGIN 
    DECLARE @cdata varchar(max) = @data 

    SELECT @cdata = REPLACE(@cdata, char(20), '') -- double quote 
    SELECT @cdata = REPLACE(@cdata, char(21), '') -- bullet 
    SELECT @cdata = REPLACE(@cdata, char(13), '') -- carriage return 
    SELECT @cdata = REPLACE(@cdata, char(10), '') -- line feed 
    SELECT @cdata = REPLACE(@cdata, char(18), '') -- single quote right 
    SELECT @cdata = REPLACE(@cdata, char(17), '') -- single quote left 
    SELECT @cdata = REPLACE(@cdata, char(22), '') -- dash 

    RETURN @cdata 
END 

必要に応じて調整できます。これは私が必要とするところで動作します。これは、開発チームがフロントエンドアプリケーションの書式設定に使用するのに適していると考えられるテキストフィールドのすべての奇妙な文字を取り除くことです。

使用法:

SELECT dbo.udf_CleanData(Field1) AS CleanField1 FROM Table1

あなたが報告されているハイパーリンクはそれで何も異常がある場合、これはそれを削除することがあります。さまざまなデータからハイパーリンクを構築する場合は、フィールドの一部またはすべてをスクラブする必要があります。これは、あなたが少しの試行錯誤を経なければならないものです。私はこの問題を持っていた

他の回、NaNの、またはインフィニティのいずれかに計算し終わるRDLの式があります。輸出後のExcelファイルには、可能性をチェックするために、あなたの表現を調整している2003年

この状況に対処するための最良の方法のように、エクセルの古いバージョンにエクスポートする際除き、このに問題があるように見えるその最終値その値を何か他のものにデフォルト設定するか、あるいは値を何か妥当な値に丸めることができます。これは、除算を行う前に分母がゼロでないことをチェックするのと同様です。

=IIf(Fields!Total.Value > 0, Fields!Count.Value/Fields!Total.Value, 0)

はここSOには良い解決策があるもののこのタイプについての質問がたくさんありますので、私は表現の束は、ここでチェックしたデータに関連する表示されません。

これを処理するもう1つの方法は、以前のバージョンのExcelに常にエクスポートすることですが、これは簡単なオプションでもオプションでもない場合があります。通常は、レポート購読のオプションとしてのみ表示されますが、開発ツールでは表示されません。

よろしくお願いします。

0

SSRSレポートをExcelにエクスポートする際に、この問題も発生しました。 、あなたがこの問題にあなたが(理由はR・リチャーズが示唆するものかもしれない。その場合には)50K乗り越える瞬間を取得する場合は、再度

https://support.office.com/en-us/article/Excel-specifications-and-limits-1672b34d-7043-467e-8e27-269d656771c3#ID0EBABAAA=2016,_2013

確認 - 私の場合はその理由は、Excelだけで66530のハイパーリンクを扱うことができるということでしたまたはスプレッドシートが破損する66530リンクの場合

私はExcelのこの制限を回避する方法を見つけたので、これを解決するために考えられる唯一の方法は、エクスポートされたExcelファイルにハイパーリンクを全く持たないことです。

エクスポートされたファイルでハイパーリンクなしで使用できる場合は、SSRSレポートのGlobals!RenderFormatプロパティを使用してレポート内でハイパーリンクを無効にできます。要求されたフォーマットがEXCELである場合に、セル上でハイパーリンクを持たないために使用される式は、-

=IIF(Globals!RenderFormat.Name="EXCELOPENXML" ,True,False) 
関連する問題