2011-01-28 38 views
15

Tôi bắt đầu tự hỏi liệu điều này có thể thực hiện được hay không. Tôi đã tìm kiếm các giải pháp trên Google và không tìm ra giải pháp nào hoạt động chính xác theo cách tôi muốn.Chuyển đổi hàng loạt docx để xóa HTML

Tôi nghĩ rằng nó sẽ có lợi để giải thích điều gì đòi hỏi. Tôi làm việc cho nhóm cơ sở dữ liệu tại khoa CNTT của trường đại học. Công việc chính của tôi là lấy thông số kỹ thuật của một báo cáo trong một tệp docx, sao chép nó sang dreamweaver, sửa một số định dạng và đưa nó lên trang web của họ. Vấn đề của tôi là nó vô cùng tẻ nhạt để làm điều này hơn và hơn. Tôi đã đoán, hey, tôi đã không viết bất cứ điều gì trong C# trong một thời gian, có lẽ tôi có thể viết một ứng dụng để lấy một tệp docx, chuyển đổi nó thành HTML, sửa CSS, gắn đầu trang và chân trang từ trang web trên đó và lưu kết quả. Ban đầu tôi dự tính sẽ làm từng cái một, nhưng có lẽ sẽ không khó để có nó vào một danh sách các tập tin và chuyển đổi hàng loạt.

Tôi đã tìm thấy các chủ đề có liên quan này về cách thực hiện điều này, nhưng chúng không phù hợp với nhu cầu của tôi đủ tốt.

http://www.techrepublic.com/blog/howdoi/how-do-i-modify-word-documents-using-c/190

Đây có lẽ là tốt cho một vài tài liệu, nhưng kể từ khi nó chỉ tự động hoá một thể hiện của Word, tôi cảm thấy như nó muốn được chậm và bộ nhớ chuyên sâu. Tôi muốn tránh mở và đóng một phiên bản của Word 50+ lần.

http://openxmldeveloper.org/articles/333.aspx

Đây là những gì tôi bắt đầu sử dụng. XSLT có lợi ích của việc không cần từ được cài đặt và cũng không chạy cho mỗi tệp. Sau khi tìm kiếm một số tôi đã có một bằng chứng về khái niệm làm việc. Nó lấy trong một tệp docx, giải nén nó, lấy tệp document.xml từ đó và sử dụng tệp DocX2Html.xsl mà tôi đã thu thập từ trình xem OpenXML. Tôi tin rằng ban đầu được cung cấp bởi MS cho máy chủ sharepoint để cung cấp khả năng hiển thị tài liệu từ trong trình duyệt. Hoặc một cái gì đó dọc theo các đường dây.

Sau khi điều chỉnh mã đó cho phù hợp với nhu cầu của tôi và gặp sự cố với phương thức objXSLT.Load(), tôi đã sử dụng IlMerge để biến XSL thành DLL. Không có ý tưởng tại sao tôi tiếp tục nhận được một lỗi biên dịch khi sử dụng các tập tin XSL đồng bằng cũ, nhưng DLL làm việc tốt, vì vậy tôi đã hài lòng. Ở đây (http://pastebin.com/a5HBAakJ) là mã hiện tại của tôi. Nó thực hiện công việc chuyển đổi docx sang HTML tốt (trừ các khoảng trống ngẫu nhiên giữa một số từ), nhưng tệp kết quả có cú pháp HTML vô cùng xấu xí. Một ví dụ về sự quái dị này có thể được tìm thấy ở đây (http://pastebin.com/b8sPGmFE).

Có ai biết cách tôi có thể khắc phục điều này không? Tôi nghĩ có lẽ tôi cần phải tạo một tệp XSL mới, vì một trong những MS được cung cấp là những gì có trách nhiệm gắn bó tất cả các thẻ và mã bổ sung trong đó. Vấn đề của tôi với điều đó là tôi không biết gì về cách làm điều đó. Có lẽ có một phiên bản thay thế đã có. Tất cả tôi cần là một trong đó sẽ bảo tồn định dạng bảng và văn bản. Hình ảnh không cần thiết.

+0

Bạn nói lúc đầu rằng đây là một quá trình bạn đang thực hiện thủ công, nhưng sau đó bạn không hài lòng với giải pháp tự động hóa từ bộ nhớ chuyên sâu. Tại sao? Nếu bạn không bán sản phẩm này như một sản phẩm thương mại thì tại sao hiệu quả của giải pháp lại quan trọng? Bạn đang biến một quá trình thủ công mất thời gian vào một một tự động, những người quan tâm nếu nó mất một phút mỗi tài liệu - nó vẫn sẽ dặm nhanh hơn. – Keith

+0

Đúng, tôi không bán nó như một sản phẩm thương mại. Tuy nhiên, tôi có ý định chia sẻ nó với đồng nghiệp của tôi, và tôi muốn cung cấp cho họ một chương trình hiệu quả. Máy tính cá nhân của tôi có thể hiện đại và có những thông số kỹ thuật để xử lý những thứ như vậy, nhưng tôi không biết họ sẽ xử lý nó như thế nào. Một vấn đề khác là sự phụ thuộc vào Word. Tôi giả sử tất cả họ đều sở hữu một bản sao, nhưng đó chỉ là một giả định. Tôi muốn cung cấp cho họ một chương trình sẽ hoạt động hiệu quả bất kể họ chạy máy tính nào. – Omega192

Trả lời

6

này trông giống như chỉ là những gì bạn cần: http://msdn.microsoft.com/en-us/library/ff628051(v=office.14).aspx

Tác giả Eric trắng viết blog về kinh nghiệm của mình đang phát triển công cụ đó. Bạn có thể thấy rằng danh sách các bài viết trên blog của mình ở đây: http://blogs.msdn.com/b/ericwhite/archive/2008/10/20/eric-white-s-blog-s-table-of-contents.aspx#Open_XML_to_XHtml

+0

Ồ wow. Tôi thực sự không biết làm thế nào tôi không bao giờ đi qua này trong tìm kiếm của tôi. Tôi đoán tôi đã tìm docx để html hơn là Open XML/WordprocessingML để XHTML. Tôi đã không có cơ hội để thực hiện điều này được nêu ra, nhưng nó trông giống như chính xác những gì tôi đang tìm kiếm. Cảm ơn nhiều! : D – Omega192

+1

Tuyệt vời! Một khi bạn hoàn thành chương trình này, tôi chắc chắn nhiều người sẽ rất thích nghe nếu nó hoạt động. Có thể khi bạn hoàn thành chương trình, bạn có thể đăng mã nguồn ở đâu đó hoặc một thứ gì đó. Chúc may mắn! –

+0

Tôi chắc chắn sẽ lưu ý rằng:] – Omega192

2

Kể từ khi tôi là một fan hâm mộ lớn của Aspose.Words, thư viện thương mại để tạo/quá trình tài liệu Word, tôi sẽ làm một cái gì đó như:

  1. Open the Word document with Aspose.Words .
  2. Save the Word document as HTML.
  3. Sử dụng một cái gì đó như SgmlReader hoặc HTML Agility Pack (hoặc thậm chí Regular Expressions nếu thích hợp) để xóa thẻ/thuộc tính HTML không mong muốn.

Vì bạn đã viết bạn làm việc tại một trường đại học, tôi không chắc chắn liệu các gói thương mại là một lựa chọn hay không.

+1

Vâng, tôi đã đi qua một số giải pháp thương mại, mặc dù không phải Aspose.Words cụ thể. Đây chỉ là một dự án cá nhân tôi đang làm để giúp đỡ đồng nghiệp và bản thân mình, vì vậy tôi dựa vào ngân sách sinh viên đại học của tôi là $ 0: P Tôi đánh giá cao thời gian của bạn để trả lời câu hỏi của tôi, cảm ơn bạn! – Omega192

2

Xin đừng chắc chắn những quy tắc nào đang thúc đẩy các giải pháp của riêng bạn, vì vậy hãy cho tôi biết nếu tôi hết hàng.

Tôi là một nhà phát triển web người có vấn đề tương tự, vì vậy tôi tạo ra công cụ của riêng tôi: http://www.convertwordtohtml.com

Chúng tôi cũng đang làm việc trên một phiên bản mới sẽ có chất lượng chuyển đổi tốt hơn và một cú nhấp chuột chuyển đổi ví dụ như bạn có thể nhấp chuột phải vào một tập tin từ và nó sẽ được chuyển đổi trực tiếp sang html và mã được đặt vào clipboard. Phiên bản hiện tại cũng hỗ trợ truy cập dòng lệnh và phiên bản mới sẽ có phiên bản máy chủ.

Có phiên bản dùng thử miễn phí có thể tải xuống từ trang web và nếu bạn có bất kỳ câu hỏi nào liên hệ với tôi bất kỳ lúc nào.

+1

Tôi khá chắc chắn nó là hoàn toàn chấp nhận được để làm điều đó. Có vẻ như bạn đã tạo ra một phần mềm rất hay, tiếc là tôi không có tiền để mua giấy phép. Cảm ơn bạn đã đăng bài của bạn, mặc dù! – Omega192

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