2014-09-12 11 views
8

Tôi có báo cáo SSRS trong SQL Server 2012 xuất ra Word và PDF mở trong trình đọc tương ứng. Tuy nhiên khi tôi mở tập tin XLS trong MS-Excel tôi nhận được thông báo yêu cầu nếu nó nên sửa chữa các tập tin bị hỏng. Nếu tôi nhấp vào có, nó sẽ hiển thị một tệp trống với thông báo như dưới đây. Tôi đang sử dụng SQL Server 2012. Điều này xảy ra cho dữ liệu của một ngày cụ thể mà thôi.Tại sao SSRS xuất tệp XLS bị hỏng?

Replaced Part: /xl/worksheets/sheet1.xml part with XML error. Illegal xml character. Line 14, column 6935. 

Tôi đoán tôi phải học bài này http://christianspecht.de/2014/01/14/excel-found-unreadable-content-when-exporting-a-reporting-services-report/

+0

Bạn có thể xem báo cáo cho ngày cụ thể này trong SSRS hoặc trong tệp PDF đã xuất không? – Dbloch

+0

Đúng, bạn có các ký tự ngoài phạm vi dự kiến ​​và các tùy chọn của bạn là để chà các giá trị đó hoặc xem xét vá các máy chủ của bạn. Quá lười để kiểm tra, nhưng một trong các Cập nhật Cummulative (CU) hoặc Gói Dịch vụ (SP) đã giải quyết vấn đề này. – billinkc

+0

@Dbloch Có thể xem bằng PDF, WOrd, SSRS. Tôi chạy mã như trong URL ở trên và nó xuất hiện để làm việc ngay bây giờ. – Chakra

Trả lời

9

tôi đã cùng một vấn đề và trong trường hợp của tôi đó là vấn đề với độ chính xác dữ liệu. Rõ ràng SSRS không thể xử lý 18 chữ số thập phân và thủ tục của tôi trả về dữ liệu này cho một số trường. Điều đó có thể xảy ra trong trường hợp của bạn. Dữ liệu cho một ngày cụ thể chỉ kết thúc bằng một giá trị có quá nhiều vị trí thập phân để xử lý bởi SSRS.

Một tùy chọn là thay đổi loại dữ liệu trong bảng để hỗ trợ độ chính xác thấp hơn. Giải pháp khác là chuyển đổi các số trong thủ tục lưu sẵn để điền vào báo cáo.

SELECT CONVERT(NUMERIC(38,8),MyNumber) AS MyNumber_v2 

Bạn có thể đọc thêm về lỗi này here.

5

Tôi có vấn đề tương tự với trường loại phần trăm. Khi giá trị 0% xuất hiện trong đầu ra dữ liệu, báo cáo xuất sang tệp Excel đã tạo bị hỏng. Tệp Excel được sửa tự động chứa 0,00000000000 giá trị thay vì 0,00% như mong đợi. Kiểu dữ liệu trường ban đầu trong DB là DECIMAL (24,14). Tôi đã thêm CONVERT vào mệnh đề DECIMAL (10,7) vào truy vấn và vấn đề đã được sửa.

1

Tôi đã gặp phải tình huống tương tự khi xuất ở định dạng excel. Trong trường hợp của tôi bằng cách tìm kiếm báo cáo chặt chẽ, tôi thấy rằng có một ký tự không phải ASCII trong đầu ra. Tôi đã xóa ký tự không phải ASCII và sau đó xuất excel đã hoạt động tốt. Tôi đã xóa ký tự không phải ASCII chứa cột bằng cách sử dụng hàm sau.

CREATE FUNCTION fnc_RemoveNonASCII 
(
@nstring nvarchar(255) 
) 
RETURNS varchar(255) 
AS 
BEGIN 
DECLARE @Result varchar(255) 
SET @Result = '' 

DECLARE @nchar nvarchar(1) 
DECLARE @position int 

SET @position = 1 
WHILE @position <= LEN(@nstring) 
BEGIN 
    SET @nchar = SUBSTRING(@nstring, @position, 1) 
    --Unicode & ASCII are the same from 1 to 255. 
    --Only Unicode goes beyond 255 
    --0 to 31 are non-printable characters 
    IF UNICODE(@nchar) between 32 and 255 
     SET @Result = @Result + @nchar 
    SET @position = @position + 1 
END 
RETURN @Result 
END 
GO 
1

Tôi gặp vấn đề tương tự khi xuất sang định dạng excel (xlsx) từ SSRS 2012 với cơ sở dữ liệu Oracle. Nhưng thông báo lỗi là "Chúng tôi đã tìm thấy sự cố với một số nội dung trong XYZ.xlsx, Bạn có muốn chúng tôi cố khôi phục nhiều nhất có thể không? Nếu bạn tin tưởng nguồn của sổ làm việc này, hãy nhấp Có". Vấn đề là do ký tự không in được ở một trong các trường. Vấn đề đã được giải quyết bằng cách thay đổi truy vấn SQL để sử dụng cụm từ thông dụng là "select column1, REGEXP_REPLACE (cột2, '[^ [: print:]]', '') làm cột2 từ bảng". Về cơ bản, cụm từ thông dụng sẽ xóa mọi ký tự không thể in ra khỏi cột2.

0

Kiểm tra phông chữ ô (hoặc tiêu đề cột) trên thiết kế báo cáo của bạn (trong trình tạo báo cáo). Có thể một trong số chúng không tồn tại trên máy của bạn!

+0

Xem tại đây: https: //social.msdn.microsoft.com/Forums/sqlserver/en-US/9a9ae671-d5cb-46a5-878e-09605c3a33a7/export-to-excel-error-in-sql-server-2014-report-builderviewer?forum= sqlreportingservices –

Các vấn đề liên quan