ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:345.59KB ,
资源ID:28061445      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/28061445.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Docx4J知识积累.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Docx4J知识积累.docx

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

2、做什么: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. 字体支持(字体替换及使用任何文档中嵌入的字体)一些有用的链接: Doc

3、x4J: Sample codes: docx4j, pptx4j, xlsx4j, 生成docx文件(第一部分),生成docx文件(第二部分),使用docx4j编程式地创建复杂的Word(.docx)文档,向Docx4j生成的word文档添加图片和布局-第一部分,向Docx4j生成的word文档中添加布局-第二部分 docx4j - 使用Java处理word2007(.docx)文档Docx4J的使用一 打开文件/模板Docx4J中,在内存中操作的word文档是“WordprocessingMLPackage”类型的对象(本文以下简称包)。 在编辑一个word文档前,开发者需要选择:创建一个

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

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

6、Size字号7. *paramisBlod是否加粗8. *paramjcEnumeration对齐方式9. *authormyclover10. */11. privatestaticvoidfillCellData(Tctc,Stringdata,StringfontFamily,StringfontSize,booleanisBlod,JcEnumerationjcEnumeration)12. ObjectFactoryfactory=();13. p=(P)().get(0);14. dd(t);15. ().add(run);16. 17. 18. /*19. *功能描述:填充单元格

7、内容,小五号,宋体,内容居中20. *paramtc单元格对象21. *paramdata数据22. *paramisBlod是否加粗23. *authormyclover24. */25. publicstaticvoidfillCellData(Tctc,Stringdata,booleanisBlod)26. fillCellData(tc,data,宋体,18,isBlod,;27. 4. Tbl:表格,每个表格含有一行或多行(Tr),每行有一个或者多个单元格(Tc)Tc是表格用于存储信息的基本单位以下代码创建了一个“rows行、cols列、行宽为widths“的空表格1. publi

8、cstaticTblcreateTable(introws,intcols,intwidths)2. ObjectFactoryfactory=();3. Tbltbl=();4. ppend.append();5. ();6. ();7. dd(gridCol);8. 9. dd(tr);10. dd(tc);11. TcPrtcPr=();12. (tcPr);13. dd();14. 15. 16. 17. returntbl;18. 四 指定格式创建文档1. 修改文档格式页边距19. /*20. *功能描述:设置页边距21. *paramwordPackage文档处理包对象22. *p

9、aramtop上边距23. *parambottom下边距24. *paramleft左边距25. *paramright右边距26. *authormyclover27. */28. publicstaticvoidsetMarginSpace(WordprocessingMLPackagewordPackage,Stringtop,Stringbottom,Stringleft,Stringright)29. ObjectFactoryfactory=();30. PgMarpg=();31. (newBigInteger(top);32. (newBigInteger(bottom);3

10、3. (newBigInteger(left);34. (newBigInteger(right);35. ().getSections().get(0).getSectPr().setPgMar(pg);36. 37. 38. /*39. *功能描述:设置页边距,上下边距都为1440,厘米40. *paramwordPackage文档处理包对象41. *paramleft左边距42. *paramright右边距43. *authormyclover44. */45. publicstaticvoidsetMarginSpace(WordprocessingMLPackagewordPack

11、age,Stringleft,Stringright)46. setMarginSpace(wordPackage,1440,1440,left,right);47. 48. 49. /*50. *功能描述:设置页边距,上下边距都为1440,厘米,左右边距都为1797,厘米51. *paramwordPackage文档处理包对象52. *authormyclover53. */54. publicstaticvoidsetMarginSpace(WordprocessingMLPackagewordPackage)55. setMarginSpace(wordPackage,1440,1440

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

13、tes();12. 13. ObjectFactoryfactory=();14. etDocumentSettingsPart();15. if(ds=null)16. ds=newDocumentSettingsPart();17. 18. CTSettingscs=();19. if(cs=null)20. cs=();21. 22. ddTargetPart(ds);23. 24. 25. /*26. *功能描述:设置文档是否只读,包括内容和样式27. *paramfileName文件28. *paramisReadOnly是否只读29. *return返回值:设置成功,则返回true

14、,否则返回false30. *throwsException31. *authormyclover32. */33. publicstaticbooleansetReadOnly(StringfileName,booleanisReadOnly)throwsException34. try35. Filefile=newFile(fileName);36. if(!()37. returnfalse;38. 修改字体生成的RPr不能单独使用,应与Text共同使用1. /*2. *功能描述:设置字体的样式3. *paramfontFamily字体类型4. *paramcolorVal字体颜色5.

15、 *paramhpsMeasureSize字号大小6. *paramsTHint字体格式7. *paramisBlod是否加粗8. *return返回值:返回字体样式对象9. *throwsException10. *authormyclover11. */12. privatestaticRPrgetRPr(StringfontFamily,StringcolorVal,StringhpsMeasureSize,STHintsTHint,booleanisBold)13. ObjectFactoryfactory=();14. RPrrPr=();15. 16. rf=new17. (sTH

16、int);18. (fontFamily);19. (fontFamily);20. (rf);21. 22. BooleanDefaultTruebdt=().createBooleanDefaultTrue();23. (bdt);24. if(isBold)25. (bdt);26. 27. color=new28. (colorVal);29. (color);30. 31. sz=new32. (newBigInteger(hpsMeasureSize);33. (sz);34. (sz);35. 36. returnrPr;37. 38. Textt=();39. (data);4

17、0. Rrun=();41. (getRPr(宋体, 000000,18 ,isBold)42. ().add(t);43. ().add(run);3. 修改单元格/表格样式单元格内容垂直居中(已有Tc tc)1. TcPrtcpr=();2. ObjectFactoryfactory=();3. if(tcpr=null)4. tcpr=();5. 合并单元格1. /*2. *功能描述:合并单元格3. *表示合并第startRow(开始行)行中的第startCol(开始列)列到(startCol+colSpan-1)列4. *表示合并第startCol(开始列)行中的第startRow(开

18、始行)列到(startRow+rowSpan-1)行5. *paramtc单元格对象6. *paramcurrentRow当前行号,传入的是遍历表格时的行索引参数7. *paramstartRow开始行8. *paramrowSpan合并的行数,大于1才表示合并9. *paramcurrentCol当前列号,传入的是遍历表格时的列索引参数10. *paramstartCol开始列11. *paramcolSpan合并的列数,大于1才表示合并12. *authormyclover13. */14. publicstaticvoidsetCellMerge(Tctc,intcurrentRow,i

19、ntstartRow,introwSpan,intcurrentCol,intstartCol,intcolSpan)15. ObjectFactoryfactory=();16. TcPrtcpr=();17. if(tcpr=null)18. tcpr=();19. 插入分页符添加换页符相当地简单。Docx4j拥有一个叫作Br的break对象,这个对象有一个type属性,这种情况下我们需要将其设置为page,type其它可选的值为column和textWrapping。这个break可以很简单地添加到段落中。1. privatestaticvoidaddPageBreak()2. Main

20、DocumentPartdocumentPart=();3. 4. BrbreakObj=newBr();5. ;6. 7. Pparagraph=();8. ().add(breakObj);9. ().getBody().getContent().add(paragraph);10. 6. 插入目录1. publicclassAddingTableOfContent2. privatestaticObjectFactoryfactory;3. 4. /*5. *首先我们创建对象工厂和包并从包中抽出文档部件.然后我们添加目录表,后面跟着一些带有分类6. *标题样式的段落.最后我们保存包.7.

21、 */8. publicstaticvoidmain(Stringargs)throwsDocx4JException9. factory=();10. WordprocessingMLPackagewordMLPackage=();11. MainDocumentPartdocumentPart=();12. 13. addTableOfContent(documentPart);14. 15. (Heading1,Hello1);16. (Heading2,Hello2);17. (Heading3,Hello3);18. (Heading1,Hello1);19. 20. (newFil

22、e(src/main/files/);21. 22. 23. /*24. *将目录表添加到文档.25. *26. *首先我们创建段落.然后添加标记域开始的指示符,然后添加域内容(真正的目录表),接着添加域27. *结束的指示符.最后将段落添加到给定文档的JAXB元素中.28. *29. *paramdocumentPart30. */31. privatestaticvoidaddTableOfContent(MainDocumentPartdocumentPart)32. Pparagraph=();33. 34. addFieldBegin(paragraph);35. addTableOfContentField(paragraph);36. addFieldEnd(paragraph);37. 38.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1