2012-08-29 30 views
5

Tôi đã tạo báo cáo với một số dữ liệu trong đó. Tôi không muốn người dùng phải nhấp vào nút xuất biểu mẫu và xuất dữ liệu sang tài liệu từ. Các tập tin tiết kiệm tốt vấn đề là khi tôi đi để mở tài liệu trong từ của nó chỉ là một bó rác thay vì báo cáo được cho là để tiết kiệm.Làm cách nào để xuất trực tiếp sang tài liệu từ trong trình xem báo cáo

my tiết kiệm nút trông như thế này:

SaveFileDialog saveFileDialog = new SaveFileDialog(); 
saveFileDialog.InitialDirectory = @“C:\”; 
saveFileDialog.RestoreDirectory = true; 
savefileDialog.Title = “Browse Text Files”; 
saveFileDialog.DefaultExt = “docx”; 

saveFileDialog.Filter = “Word Doc (*.docx)|*.docx|PDF (*.pdf)| *.pdf”; 
saveFileDialog.checkFileExists = false; 
saveFileDialog.CheckPathExists = true; 

Warning[] warnings; 
string[] streams; 
string mimeType; 
string encoding; 
string extension; 

byte[] bytes = reportViewer1.LocalReport.Render(“Word”, null, out mimeType, out encoding, out extension, out streams, out warnings); 

if (saveFileDialog.ShowDialog() == DialogResult.OK) 
{ 
var filename = saveFileDialog.FileName; 
System.IO.FileStream file = new FileStream(filename, FileMode.Create); 
file.Write(bytes, 0, bytes.length); 
file.close(); 
} 

Bất kỳ lời đề nghị?

+0

"những thứ" không được xác định "? bạn có thể cụ thể không? – codingbiz

+0

Đừng bỏ qua lỗi của bạn. Nhìn vào * những gì * nó đang nói là không xác định. Nó đang cố gắng giúp bạn ... –

+0

DropDownList1, httpContext.Current.Response.BinaryWrite (byte) không xác định – Robert

Trả lời

3

LocalReport.Render cho Word chỉ xuất sang định dạng Word cũ hơn (phiên bản 6, tôi tin). Các định dạng mở mới hơn dựa trên XML (phần mở rộng docx) không được hỗ trợ. Vì vậy, bằng cách có một phần mở rộng docx, Word đang mong đợi định dạng mới hơn, không phải là định dạng cũ, vì vậy nó diễn giải mọi thứ như rác. Ngoài ra, hãy thay đổi phần mở rộng docx trên tài liệu Word thành .zip, trích xuất nội dung và có một poke xung quanh các thư mục kết quả. Nó là khá thú vị những gì bây giờ có thể nhìn thấy.

1

Vì vậy, sau rất nhiều công việc trên điều này, tôi thấy rằng việc thay đổi dòng này:

saveFileDialog.Filter = “Word Doc (*.docx)|*.docx|PDF (*.pdf)| *.pdf”; 

để

saveFileDialog.Filter = “Word Doc (*.doc)|*.doc|PDF (*.pdf)| *.pdf”; 

sửa chữa vấn đề của tôi. Vì lý do gì đó, việc lưu vào một tệp .docx sẽ làm hỏng dữ liệu.

10

Tôi biết điều này là cũ và đã được trả lời (sắp xếp), nhưng tôi đã tình cờ gặp vấn đề này và bạn cần phải sử dụng "WORDOPENXML" thay vì "Word" trong cuộc gọi Render. Bằng cách này, nó sẽ xuất sang docx.

Sử dụng ListRenderingExtensions để xem tiện ích mở rộng nào có sẵn.

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