本帖最后由 gzd03 于 2013-03-04 13:43:58 编辑

解决方案 »

  1.   

    别用POI了,代码复杂、编码混乱,功能比较弱,无法生成复杂格式的word、pdf。给你推荐用PageOffice,你去搜搜,很多人在用,远离乱码的困扰,代码很简洁。既能创建新word,也能打开word模板在指定位置处生成内容,文本、图片、表格等一应俱全,更令人激动的是同时支持word2003、2007、2010、2013。而POI处理doc和docx的完全是两组不兼容的对象,而poi解析.doc那部分组件是残缺不全的并且也已经不更新了上PageOffice创建word表格的代码:WordDocument doc = new WordDocument();Table newTable = doc.openDataRegion("Text").createTable(3, 5, WdAutoFitBehavior.wdAutoFitFixed);//在指定位置处创建表格,也可以打开已存在表格
    newTable.setPreferredWidthType(WdPreferredWidthType.wdPreferredWidthPoints);
    newTable.setPreferredWidth(350);//设置表格宽度
    newTable.openColumn(1).setWidth(150, WdRulerStyle.wdAdjustFirstColumn);//设置第一列宽度
    //newTable.openRow(2).setHeight(50);//设置第二行行高
    newTable.setRowsHeight(50);//设置表格里所有行的行高
    newTable.openCellRC(2, 1).setValue("PageOffice");//单元格填值newTable.openCellRC(2, 1).getFont().setSize(15);//下面设置字体
    newTable.openCellRC(2, 1).getFont().setColor(Color.GREEN);
    newTable.openCellRC(2, 1).getFont().setBold(true);
    newTable.openCellRC(2, 1).getFont().setItalic(true);
    newTable.openCellRC(2, 1).getParagraphFormat().setAlignment(WdParagraphAlignment.wdAlignParagraphCenter);//设置当前单元格中的内容水平居中
    newTable.openCellRC(2, 1).setVerticalAlignment(WdCellVerticalAlignment.wdCellAlignVerticalCenter);//设置当前单元格中的内容垂直居中
    newTable.openCellRC(2, 1).getFont().setUnderline(WdUnderline.wdUnderlineDottedHeavy);
    newTable.openCellRC(2, 1).getFont().setShadow(true);
    newTable.openCellRC(2, 1).getFont().setStrikeThrough(true);
    newTable.openCellRC(1, 1).mergeTo(1, 5);//第一行的5个单元格合并为一个单元格一般列数可以确定,行数根据查询结果定,PageOffice里有一个函数InsertRowAfter可以指定从当前创建的表格的哪一行开始扩展新行,循环调用openCellRC即可按照不同的查询生成不同行数的表格。具体示例代码,下载PageOffice的软件包里找
      

  2.   

    谢谢各位解答,问题解决,将word模板转换为xml格式,然后用freeer控制xml节点
      

  3.   


    poi操作excel还行,word,pdf就算了吧
      

  4.   

    请问楼主怎么用将word模板转换为xml格式,然后用freeer控制xml节点 实现的?