In der Regel, wenn ich diese Art von Problem nach einer Excel-Datei von SSRS exportiert habe, finde ich, dass etwas in den Daten, mit denen Excel ist aufgetreten ist. Ein versteckter Charakter vielleicht. Der Export funktioniert, die Datei wird geöffnet, wenn das Problem auftritt.
Um mit dieser Situation umzugehen, habe ich eine benutzerdefinierte Funktion (UDF) in SQL Server erstellt, um alle Zeichen zu entfernen, von denen ich weiß, dass Excel sich ersticken wird. Unten ist ein Beispiel für eines, das ich benutze.
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
Sie können dies beliebig anpassen, um Ihre Anforderungen zu erfüllen. Dies funktioniert genau so, wie ich es brauche, und das bedeutet, dass alle merkwürdigen Zeichen in einem Textfeld entfernt werden, die das Entwicklerteam für die Formatierung in der Frontend-Anwendung verwenden würde.
Verbrauch:
SELECT dbo.udf_CleanData(Field1) AS CleanField1 FROM Table1
Wenn der Hyperlink Sie berichten, etwas Ungewöhnliches in sich hat, könnte dies, dass entfernen. Wenn Sie den Hyperlink aus verschiedenen Datenbereichen erstellen, müssen möglicherweise einige oder alle Felder bereinigt werden. Dies ist etwas, wo Sie ein bisschen Versuch und Irrtum durchlaufen müssen.
Andere Zeiten, in denen ich dieses Problem gehabt haben, gibt es einen Ausdruck in der RDL, die entweder die Berechnung endet NaN oder Unendlichkeit. Die Excel-Datei nach dem Export scheint mit diesem außer Problem zu haben, wenn eine ältere Version von Excel, wie 2003
Der beste Weg, den Export dieser Situation umgehen wird Ihre Ausdrücke anpassen, um die Möglichkeit zu prüfen, ob der Endwert könnte aus dem Gleichgewicht geraten und den Wert auf etwas anderes setzen, oder den Wert auf etwas Vernünftiges runden. Dies ist vergleichbar mit der Überprüfung, dass ein Nenner vor der Division nicht null ist.
=IIf(Fields!Total.Value > 0, Fields!Count.Value/Fields!Total.Value, 0)
Es gibt viele Fragen über diese Art der Sache mit guten Lösungen hier auf SO, also werde ich eine Reihe von Ausdrücken hier im Zusammenhang mit Datenprüfung nicht auflisten.
Der andere Weg, dies zu handhaben ist, immer in eine frühere Version von Excel zu exportieren, aber das ist möglicherweise keine einfache Option oder eine Option überhaupt. Normalerweise sehe ich das nur als Option für ein Berichtsabonnement, aber nicht für die Entwicklungstools.
Viel Glück für Sie!