欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    Docx4J学习知识积累.docx

    • 资源ID:9573405       资源大小:351.11KB        全文页数:31页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Docx4J学习知识积累.docx

    1、Docx4J学习知识积累Docx4J概述: Docx4j是Java操作office2007+中的Word、Excel、PPT的开源项目,其主要针对WordXML同时也可以处理Excel和PPT,比POI要强大很多.Docx4J基于开源协议ASLv2。ASL是一个广泛适用于社区开源软件并被开源业界所认可的协议,该协议更有益于商业化产品的开发和再发行。遵循ASL发行的代码和其它许可协议可以整合成为一个闭源的商业产品,然后被其它开发人员再次发行。这不像开源许可协议。类GPL许可协议(有些像GPL),通常情况下用于确保其它类似开发成员再发行已经被发布并修改的代码及其衍生代码的开源和可发布性。Docx4

    2、J能做什么:1. 打开已存在docx(从文件系统、SMB/CIFS、使用VFS的WebDAV),pptx,xlsx2. 创建新的docx、pptx、xlsx3. 编程式地操作上面打开的文档Docx4J特殊的功能支持:1. 模版替换;CustomXML绑定2. 生产/消费Word2007的xmlPackage(pkg)格式3. 作为docx保存docx到文件系统(zipped)或者保存到JCR(unzipped)4. 应用转换,包括常见过滤器5. 作为HTML或者PDF导出6. 比较文档、段落或者sdt(内容控件)之间的差异7. 字体支持(字体替换及使用任何文档中嵌入的字体)一些有用的链接: D

    3、ocx4J: http:/www.docx4java.org/trac/docx4j Sample codes: docx4j, pptx4j, xlsx4j, 生成docx文件(第一部分),生成docx文件(第二部分),使用docx4j编程式地创建复杂的Word(.docx)文档,向Docx4j生成的word文档添加图片和布局-第一部分,向Docx4j生成的word文档中添加布局-第二部分 docx4j - 使用Java处理word2007(.docx)文档Docx4J的使用一 打开文件/模板Docx4J中,在内存中操作的word文档是“WordprocessingMLPackage”类型的

    4、对象(本文以下简称包)。 在编辑一个word文档前,开发者需要选择:创建一个新的空白包,并逐一将需要的内容填充进去,或者打开一个已有的文档,并在里面添加/替换新的内容。前者思路比较简单,比较适合简单文档的创建。但由于添加每条新内容时,都需要手动进行设置其各项参数(比如表格的行宽、列宽、边框等),且添加修改复杂控件(公式、页眉页脚)的过程都比较繁琐,所以在创建格式复杂的文档时不是很建议。后者需要事先制作一个模板文档,添加不同的占位符和各种模板信息,在准备上比前者复杂。但也具有很多优点:可以简化细节参数的调整(不需要手动调整表格、段落的具体细节参数)从而将精力集中到文档内容上;复杂的文档部分(如公

    5、式、复选框等)可以直接从模板中读取,只需要在其基础上修改文字等内容部分,而避开了繁琐的创建操作等。在创建格式复杂的文档时,这个方法相比前者可以精简大量代码。(本文之后将主要基于该方法进行说明)二 保存文件当结束对包的编辑时,开发者可以选择多种方式进行保存。三 常用类型Docx4J支持所有的docx内容格式,其中比较常见的有如下几种:1. Text:基本的文字内容2. R: 文字格式信息 3. P: 段落,可以单独使用,也可以添加到单元格(Tc)等作为内容以下代码创建了新文本,并将其填到指定的单元格中1. /*2. *功能描述:填充单元格内容3. *paramtc单元格对象4. *paramda

    6、ta内容5. *paramfontFamily字体6. *paramfontSize字号7. *paramisBlod是否加粗8. *paramjcEnumeration对齐方式9. *authormyclover10. */11. privatestaticvoidfillCellData(Tctc,Stringdata,StringfontFamily,StringfontSize,booleanisBlod,JcEnumerationjcEnumeration)12. ObjectFactoryfactory=Context.getWmlObjectFactory();13. org.d

    7、ocx4j.wml.Pp=(P)XmlUtils.unwrap(tc.getContent().get(0);14. /设置表格内容的对齐方式15. setCellContentStyle(p,jcEnumeration);16. org.docx4j.wml.Textt=factory.createText();17. t.setValue(data);18. org.docx4j.wml.Rrun=factory.createR();19. /设置表格内容字体样式20. run.setRPr(getRPr(fontFamily,fontSize,isBlod);21. TcPrtcpr=t

    8、c.getTcPr();22. if(tcpr=null)23. tcpr=factory.createTcPr();24. 25. /设置内容垂直居中26. CTVerticalJcvalign=factory.createCTVerticalJc();27. valign.setVal(STVerticalJc.CENTER);28. tcpr.setVAlign(valign);29. run.getContent().add(t);30. p.getContent().add(run);31. 32. 33. /*34. *功能描述:填充单元格内容,小五号,宋体,内容居中35. *pa

    9、ramtc单元格对象36. *paramdata数据37. *paramisBlod是否加粗38. *authormyclover39. */40. publicstaticvoidfillCellData(Tctc,Stringdata,booleanisBlod)41. fillCellData(tc,data,宋体,18,isBlod,JcEnumeration.CENTER);42. 4. Tbl:表格,每个表格含有一行或多行(Tr),每行有一个或者多个单元格(Tc)Tc是表格用于存储信息的基本单位以下代码创建了一个“rows行、cols列、行宽为widths“的空表格1. publi

    10、cstaticTblcreateTable(introws,intcols,intwidths)2. ObjectFactoryfactory=Context.getWmlObjectFactory();3. Tbltbl=factory.createTbl();4. /w:tblPr5. StringBuffertblSb=newStringBuffer();6. tblSb.append();7. tblSb.append();8. tblSb.append();9. /上边框双线10. tblSb.append();11. /左边无边框12. tblSb.append();13. /下边

    11、框双线14. tblSb.append();15. /右边无边框16. tblSb.append();17. tblSb.append();18. tblSb.append();19. tblSb.append();20. TblPrtblPr=null;21. try22. tblPr=(TblPr)XmlUtils.unmarshalString(tblSb.toString();23. catch(JAXBExceptione)24. e.printStackTrace();25. 26. tbl.setTblPr(tblPr);27. if(tblPr!=null)28. Jcjc=f

    12、actory.createJc();29. /单元格居中对齐30. jc.setVal(JcEnumeration.CENTER);31. tblPr.setJc(jc);32. CTTblLayoutTypetbll=factory.createCTTblLayoutType();33. /固定列宽34. tbll.setType(STTblLayoutType.FIXED);35. tblPr.setTblLayout(tbll);36. 37. /38. TblGridtblGrid=factory.createTblGrid();39. tbl.setTblGrid(tblGrid);

    13、40. /Addrequired41. for(inti=1;i=cols;i+)42. TblGridColgridCol=factory.createTblGridCol();43. gridCol.setW(BigInteger.valueOf(widthsi-1);44. tblGrid.getGridCol().add(gridCol);45. 46. /Nowtherows47. for(intj=1;j=rows;j+)48. Trtr=factory.createTr();49. tbl.getContent().add(tr);50. /Thecells51. for(int

    14、i=1;i=cols;i+)52. Tctc=factory.createTc();53. tr.getContent().add(tc);54. TcPrtcPr=factory.createTcPr();55. tc.setTcPr(tcPr);56. /57. TblWidthcellWidth=factory.createTblWidth();58. tcPr.setTcW(cellWidth);59. cellWidth.setType(dxa);60. cellWidth.setW(BigInteger.valueOf(widthsi-1);61. tc.getContent().

    15、add(factory.createP();62. 63. 64. 65. returntbl;66. 四 指定格式创建文档1. 修改文档格式页边距67. /*68. *功能描述:设置页边距69. *paramwordPackage文档处理包对象70. *paramtop上边距71. *parambottom下边距72. *paramleft左边距73. *paramright右边距74. *authormyclover75. */76. publicstaticvoidsetMarginSpace(WordprocessingMLPackagewordPackage,Stringtop,St

    16、ringbottom,Stringleft,Stringright)77. ObjectFactoryfactory=Context.getWmlObjectFactory();78. PgMarpg=factory.createSectPrPgMar();79. pg.setTop(newBigInteger(top);80. pg.setBottom(newBigInteger(bottom);81. pg.setLeft(newBigInteger(left);82. pg.setRight(newBigInteger(right);83. wordPackage.getDocument

    17、Model().getSections().get(0).getSectPr().setPgMar(pg);84. 85. 86. /*87. *功能描述:设置页边距,上下边距都为1440,2.54厘米88. *paramwordPackage文档处理包对象89. *paramleft左边距90. *paramright右边距91. *authormyclover92. */93. publicstaticvoidsetMarginSpace(WordprocessingMLPackagewordPackage,Stringleft,Stringright)94. setMarginSpace

    18、(wordPackage,1440,1440,left,right);95. 96. 97. /*98. *功能描述:设置页边距,上下边距都为1440,2.54厘米,左右边距都为1797,3.17厘米99. *paramwordPackage文档处理包对象100. *authormyclover101. */102. publicstaticvoidsetMarginSpace(WordprocessingMLPackagewordPackage)103. setMarginSpace(wordPackage,1440,1440,1797,1797);104. 文档只读1. /*2. *功能描

    19、述:设置文档是否只读,包括内容和样式3. *paramwordPackage文档处理包对象4. *paramisReadOnly是否只读5. *throwsException6. *authormyclover7. */8. publicstaticvoidsetReadOnly(WordprocessingMLPackagewordPackage,booleanisReadOnly)throwsException9. bytebt=.getBytes();10. if(isReadOnly)11. bt=123456.getBytes();12. 13. ObjectFactoryfacto

    20、ry=Context.getWmlObjectFactory();14. /创建设置文档对象15. DocumentSettingsPartds=wordPackage.getMainDocumentPart().getDocumentSettingsPart();16. if(ds=null)17. ds=newDocumentSettingsPart();18. 19. CTSettingscs=ds.getJaxbElement();20. if(cs=null)21. cs=factory.createCTSettings();22. 23. /创建文档保护对象24. CTDocPro

    21、tectcp=cs.getDocumentProtection();25. if(cp=null)26. cp=newCTDocProtect();27. 28. /设置加密方式29. cp.setCryptProviderType(STCryptProv.RSA_AES);30. cp.setCryptAlgorithmClass(STAlgClass.HASH);31. /设置任何用户32. cp.setCryptAlgorithmType(STAlgType.TYPE_ANY);33. cp.setCryptAlgorithmSid(newBigInteger(4);34. cp.setCryptSpinCount(newBigInteger(50000);35. /只读36. if(isReadOnly)37. cp.setEdit(STDocProtect.READ_ONLY);38. cp.setHash(bt);39. cp.setSalt(bt);40. /设置内容不可编辑41. cp.setEnforcement(true);42. /设置格式不可编辑43. cp.setFormatting(true);44. else45. cp.setEdit(STDocProt


    注意事项

    本文(Docx4J学习知识积累.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开