Are there any alternatives to using Apache POI Java for Microsoft Office?
I discovered Apache POI for doing a lot with MS Office programmatically in Java, but its documentation leaves me wanting, as well as a few other things. Does a better alternative exist?
I thought to myself that OpenOffice.org might have something, but cannot find any co开发者_运维技巧ncise site that would have a Library that would allow you to open and store Word, Powerpoint, Excel, or other MS Office applications through Java.
Do any better alternatives exist?
I think POI is the best among other libraries. I don't know the reason why you don't like it
Excel .xls & .xlsx
HSSF is the POI Project's pure Java implementation of the Excel '97(-2007) file format. XSSF is the POI Project's pure Java implementation of the Excel 2007 OOXML (.xlsx) file format.
Word .doc & .docx
HWPF is the name of our port of the Microsoft Word 97(-2007) file format to pure Java. It also provides limited read only support for the older Word 6 and Word 95 file formats. The partner to HWPF for the new Word 2007 .docx format is XWPF. Whilst HWPF and XWPF provide similar features, there is not a common interface across the two of them at this time.
anyway here are some libraries : Try Aspose and java2word
On the Aspose.cells site they offer a comparison to its open source competitors.
http://www.aspose.com/docs/display/cellsjava/Aspose.Cells+for+Java+Vs+Open+Source+Competitors
They contrast with the following:
JExcelAPI POI-HSSF
Not an unbiased comparison probably but...
I maintain docx4j, which is a strongly typed ASL v2 library for manipulating the XML file types (docx, pptx, xlsx) via JAXB.
If you also need to deal with the legacy binary formats (doc, ppt, xls), you'd need to pre-convert them to docx/pptx/xlsx before bringing docx4j to bear on them.
See more at Apache POI or docx4j for dealing with docx documents
While POI does seem to be the go to option version 5.0 has become extremely bloated. Be prepared for your war files to be at least 10-15MB larger than with 4.x and no obvious way to build without all the cruft
For Excel, I recommand JXLS http://jxls.sourceforge.net/index.html
Small Java library to interact with Excel files.
With jxls-reader (jxls-reader-2.0.5.jar 40Kb), for example, it's as simple as specifying mapping (xml) between your Bean and an Excel file - no overkill with poi plumbing (transtyping, character encoding, etc.)
No more headache sincerely
<?xml version="1.0" encoding="utf-8"?>
<workbook>
<worksheet idx="0">
<section startRow="0" endRow="0" />
<loop startRow="1" endRow="1" items="mybeans" var="mybean" varType="MyBean">
<section startRow="1" endRow="1">
<mapping row="1" col="0">mybean.field1</mapping>
<mapping row="1" col="1">mybean.field2</mapping>
<mapping row="1" col="2">mybean.field3</mapping>
</section>
<loopbreakcondition>
<rowcheck offset="0">
<!-- stop looping when content of cell[n,0] is empty -->
<cellcheck offset="0"></cellcheck>
</rowcheck>
</loopbreakcondition>
</loop>
</worksheet>
</workbook>
精彩评论