2013-01-18 16 views
5

Chúng tôi có một ứng dụng cơ sở dữ liệu lưu trữ dữ liệu mà chúng tôi muốn báo cáo trong Microsoft Word.Cách tạo báo cáo trong từ 2010 bằng cách sử dụng C#, dot net, mẫu từ, xml

Giả sử tất cả thông tin của khách hàng được lưu trữ trên hệ thống cơ sở dữ liệu và bây giờ tôi được yêu cầu tạo hàng trăm chữ cái, báo cáo sẽ được gửi cho khách hàng của tôi. Các chữ cái này có cùng nội dung nhưng tên khách hàng khác nhau, địa chỉ khách hàng, v.v.

Tôi muốn sử dụng Office Word 2010 bằng cách tạo mẫu tài liệu có điều khiển nội dung bằng C# và .Net, sql làm cơ sở dữ liệu để thay thế nội dung mẫu này.

Tôi đã tìm kiếm các bài viết về tự động hóa Word 2010 trong C# và chấm net và sql. Ai đó có thể đẩy tôi đi đúng hướng không?

+1

Xem http://stackoverflow.com/questions/7382704/asp-net-web-service-using-office-2010-com. Nó không được hỗ trợ để sử dụng tự động hóa văn phòng trong một ứng dụng ASP.NET - và thường không hoạt động. –

+1

Câu hỏi không được gắn thẻ ASP.NET và không đề cập đến nó trong cơ thể. – Emyr

+1

Không phải là nó hét lên "Sử dụng chức năng chữ cái nối tiếp của Word!"? –

Trả lời

1

Bạn có thể sử dụng Interop.Word trong chương trình của mình, nhưng hãy nhớ rằng tài liệu có sẵn rất hiếm. Tôi đã phát triển ứng dụng của mình để xem các ví dụ như this one from C-SharpCorner hoặc this one from WindowsDevCenter. Ngay cả khi các ví dụ là cũ, bạn có thể có được ý tưởng chính và làm quen với cú pháp, và viết chương trình của bạn sau đó với một phiên bản cập nhật của Interop.Word (có cú pháp hơi đơn giản hơn).

Trong trường hợp của bạn, bạn nên tạo mẫu Word gọn gàng, với dấu trang nằm ở vị trí của tài liệu nơi bạn sẽ chèn thông tin khách hàng. Sau đó, bạn có thể mở mẫu từ chương trình của mình và điều hướng nó bằng cách sử dụng các dấu trang đó, khi bạn chèn thông tin được truy xuất từ ​​cơ sở dữ liệu của mình.

Có các lựa chọn thay thế thú vị khác cho Interop.Word mà bạn có thể thử nếu bạn không muốn đi sâu vào tự động hóa từ, chẳng hạn như DocX (thậm chí không cần cài đặt Microsoft Word hoặc Office) Open XML (để tạo tệp .docx).

1

Tôi đã sử dụng cụm Office.Interop trong quá khứ cho các loại hình chức năng nhưng phương pháp này mang một vài nhược điểm riêng biệt:

  • Lời Chúa phải được cài đặt trên máy nơi mã đang chạy
  • Các hội đồng Interop thực sự khởi động từ trong nền, vì vậy bạn phải cẩn thận để xử lý mọi thứ đúng cách và xử lý lỗi, nếu không bạn sẽ kết thúc với các quá trình Word lãng phí CPU/bộ nhớ trên máy chủ lưu trữ
  • API không phải là rất dễ chịu để làm việc với và tài liệu là hơi khan hiếm

Tôi cũng đã chơi với DocXOpen XML, cả hai đều có giá trị nhưng có xu hướng hơi bị hạn chế so với Interop. Lời khuyên của tôi là cố gắng sử dụng chức năng DocX hoặc Open XML và chỉ quay trở lại Interop nếu bạn không thể đạt được chức năng này theo bất kỳ cách nào khác. Nên có nhiều hướng dẫn trực tuyến cho cả ba API.

+0

Có khả năng xây dựng xml tùy chỉnh và ràng buộc với nguồn dữ liệu bằng DocX không? – learning

+0

Tôi không chắc chắn tôi làm theo, bạn có thể xây dựng như những gì bạn có nghĩa là? –

1

Kiểm tra dự án này. http://flexdoc.codeplex.com với flexdoc bạn không cần phải cài đặt từ ms. Tôi đã sử dụng flexdoc để tạo tập tin từ.

0

Tôi đã sử dụng cả interop và syncfusion để tạo báo cáo (mặc dù tôi đã tạo báo cáo excel nhưng cả hai công nghệ đều có thể được sử dụng để tạo báo cáo từ).thông tin phản hồi của tôi: -

  1. Mặc dù interop được bao gồm trong hầu hết các máy tính có visual studio (không chắc chắn về máy tính phòng thu phi thị giác), sử dụng interop đòi hỏi sự hiện diện của tương thích microsoft excel cũng trên máy tính tạo ra các báo cáo trong khi syncfusion không yêu cầu sự hiện diện của microsoft excel trên cùng một máy tính.
  2. Nếu bạn dự định sử dụng asp.net, thì interop không được hỗ trợ (ít nhất nó không phải là khi tôi làm việc) trong khi syncfusion được hỗ trợ.

Link cho syncfusion: - http://www.syncfusion.com/products/aspnet/docio

Tóm tắt: - Nếu bạn đang phát triển một ứng dụng giao diện điều khiển và máy chủ (trong đó ứng dụng sẽ được triển khai) có microsoft office cài đặt, sau đó interop có thể là một ý tưởng tốt. Nếu không, bạn cũng có thể xem đồng bộ hóa.

1

article chứa mã nguồn có thể tải xuống này có thể dễ dàng sử dụng để khắc phục sự cố của bạn.

1

Microsoft khuyến nghị OpenXml cho bất kỳ ứng dụng nào đang chạy trong quy trình máy chủ và cách tiếp cận này có lẽ là một trong những cách tốt nhất để giảm phụ thuộc (như những người khác đã đề cập). Dưới đây là một số liên kết để giúp bạn bắt đầu:

Tải OpenXML SDK 2.0: http://www.microsoft.com/en-au/download/details.aspx?id=5124

Hướng dẫn hữu ích: http://msdn.microsoft.com/en-us/library/ff478255.aspx

1

Vì vậy, để khởi KHÔNG SỬ DỤNG Interop, tôi đã sử dụng nó trong 4 năm trở lại đây và tôi phải nói với bạn rằng đó không phải là một ý tưởng hay (nó thực sự bị mất và bạn sẽ gặp phải rất nhiều vấn đề. Nó thực sự được viết trên trang web của Microsoft mà bạn không nên sử dụng nó để tạo ra phía máy chủ. sử dụng SDK OpenXML, tôi đã thực sự chỉ bắt đầu sử dụng nó nhưng tôi phải nói rằng ngay cả khi nó có vẻ như ab khó sử dụng hơn, chắc chắn nhanh hơn rất nhiều sử dụng interop và điều tốt nhất là biết tôi không cần bất kỳ chương trình nào từ bộ Office để cài đặt trên máy của mình, nhược điểm là tôi có thể ' t xuất khẩu sang PDF hoặc XPS nữa mà không có một thư viện của bên thứ 3

Bạn có thể tìm sdk đây http://www.microsoft.com/en-us/download/details.aspx?id=30425

tôi đề nghị tải về công cụ này cũng nó khá hữu ích.

Đây là một hướng dẫn tốt để bắt đầu với nó thực sự đã giúp tôi rất nhiều.

http://msdn.microsoft.com/en-us/library/office/bb448854.aspx

Và u cũng có thể sử dụng tài liệu API từ công cụ năng suất mà là trên các trang web giống như sdk

+0

Bài viết này có thể được cải thiện rất nhiều bởi một chút chú ý đến chính tả và ngữ pháp và ít sử dụng viết tắt văn bản nói. –

1

Tôi đồng ý với những người khác rằng SDK OpenXML là một cách tốt để đi cho cùng một lý do. Tôi đang ở giữa việc tạo ra một loại báo cáo tương tự như bạn. Các báo cáo tôi cần tạo không may là rất năng động không chỉ với dữ liệu mà còn với bố cục.

Nếu bố cục của bạn không cần thay đổi thì tôi khuyên bạn nên sử dụng Công cụ SDK, nó cho phép bạn lấy bất kỳ tài liệu từ nào và tạo mã C# để bạn tạo lại cùng một tài liệu chính xác.Từ thời điểm đó, tất cả những gì bạn phải làm là thay thế văn bản bằng dữ liệu bạn muốn trong mã. Bạn có thể tạo báo cáo chung trong từ, lấy mã bằng công cụ, sau đó chỉ cần tìm kiếm văn bản trình giữ chỗ trong mã và thay thế chuỗi đó bằng một biến. dễ dàng như text1.text = reportData;

Tôi cũng tìm thấy Công cụ SDK là cách tuyệt vời để tìm hiểu mã, bạn có thể so sánh hai tệp cạnh nhau và xem chúng khác nhau như thế nào trong mã.

1

Câu trả lời của bạn là OpenXML SDK.

  1. goto Open XML SDK 2.5 for Microsoft Office
  2. tải OpenXMLSDKV25 và OpenXMLSDKToolV25
  3. cài đặt sdk và công cụ năng suất
  4. mở lời nói và tạo tài liệu mẫu của bạn
  5. mở Open XML SDK Năng suất Công cụ
  6. tài liệu từ mở
  7. nhấp chuột phải vào tên tài liệu từ Document Explorer và chọn phản ánh mã
  8. sao chép tất cả các mã được tạo ra để dự án của bạn
  9. tìm và sửa đổi "Đoạn" hoặc "Run" mà bạn muốn thay thế với dữ liệu của bạn
0

Bạn có thể usee miễn phí .NET Word API để tạo báo cáo trong từ 97 ~ 2010 sử dụng C#.

 //Create word document 
     Document document = new Document(); 
     document.LoadFromFile(@"..\..\..\..\..\..\Data\Fax.doc"); 

     string[] filedNames = new string[]{"Contact Name","Fax","Date"}; 

     string[] filedValues = new string[]{"John Smith","+1 (69) 123456",System.DateTime.Now.Date.ToString()}; 

     document.MailMerge.Execute(filedNames, filedValues); 

     //Save doc file. 
     document.SaveToFile("Sample.doc", FileFormat.Doc);