2009-12-07 34 views

Trả lời

0

Hãy thử điều này một: http://www.dancrintea.ro/doc-to-pdf/

Bên cạnh việc thay thế các chuỗi trong ms file từ cũng có thể: - đọc/ghi file Excel sử dụng đơn giản API như: getCell (x, y) và setCell (x, y, string) - giấu tờ Excel (tính toán trung học chẳng hạn) - thay thế hình ảnh trong dOC, ODT và SXW file - và chuyển đổi:

doc -> pdf, html, txt, rtf xls -> pdf, html , csv ppt -> pdf, swf

2

tôi sẽ đề nghị thư viện Apache POI:

http://poi.apache.org/

Nhìn hơn - có vẻ như nó đã không được giữ đến nay - Boo! Nó có thể là đủ hoàn thành ngay bây giờ để làm những gì bạn cần tuy nhiên.

0

Tôi sẽ xem xét dự án Apache POI. Đây là những gì tôi đã sử dụng để tương tác với các tài liệu MS trong quá khứ.

http://poi.apache.org/

5

Trong khi có hỗ trợ MS Word trong Apache POI, nó không phải là rất tốt. Tải và sau đó lưu bất kỳ tệp nào khác với định dạng cơ bản nhất sẽ có khả năng thu gọn bố cục. Bạn nên thử nó mặc dù, có thể nó hoạt động cho bạn.

Có một số thư viện thương mại, nhưng tôi không biết có bất kỳ thư viện nào tốt hơn không.

Giải pháp "điên" mà tôi phải giải quyết khi làm việc theo yêu cầu tương tự gần đây đã sử dụng định dạng DOCX, mở vùng chứa ZIP, đọc XML tài liệu và sau đó thay thế điểm đánh dấu của tôi bằng đúng văn bản. Tính năng này hoạt động để thay thế các bit văn bản đơn giản mà không cần đoạn văn, v.v.

private static final String WORD_TEMPLATE_PATH = "word/word_template.docx"; 
private static final String DOCUMENT_XML = "word/document.xml"; 

/*....*/ 

final Resource templateFile = new ClassPathResource(WORD_TEMPLATE_PATH); 

final ZipInputStream zipIn = new ZipInputStream(templateFile.getInputStream()); 
final ZipOutputStream zipOut = new ZipOutputStream(output); 

ZipEntry inEntry; 
while ((inEntry = zipIn.getNextEntry()) != null) { 
    final ZipEntry outEntry = new ZipEntry(inEntry.getName()); 
    zipOut.putNextEntry(outEntry); 

    if (inEntry.getName().equals(DOCUMENT_XML)) { 
     final String contentIn = IOUtils.toString(zipIn, UTF_8); 
     final String outContent = this.processContent(new StringReader(contentIn)); 
     IOUtils.write(outContent, zipOut, UTF_8); 
    } else { 
     IOUtils.copy(zipIn, zipOut); 
    } 

    zipOut.closeEntry(); 
} 

zipIn.close(); 
zipOut.finish(); 

Tôi không tự hào về nó, nhưng nó hoạt động.

+1

Sáng tạo, mặc dù hackish, giải pháp! Làm việc hoàn hảo cho tôi. Tuy nhiên, bạn phải cẩn thận với cách bạn nhập điểm đánh dấu của bạn trong tài liệu. Đôi khi, Word sẽ phân tách bằng từ khóa đánh dấu thành hai thẻ XML, như: ' hello thế giới! '. Xuất hiện để làm việc tốt miễn là bạn gõ toàn bộ từ đánh dấu ra mà không thay đổi vị trí của con trỏ ở giữa. – Michael

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