tblW w:
w=\"0\" w:
type=\"auto\"/>");
7. dd(gridCol);
8. }
9. dd(tr);
10. dd(tc);
11. TcPr tcPr = ();
12. (tcPr);
13. dd());
14. }
15.
16. }
17. return tbl;
18. }
四指定格式创建文档
1.修改文档格式
页边距
19. /**
20. * 功能描述:
设置页边距
21. * @param wordPackage 文档处理包对象
22. * @param top 上边距
23. * @param bottom 下边距
24. * @param left 左边距
25. * @param right 右边距
26. * @author myclover
27. */
28. public static void setMarginSpace(WordprocessingMLPackage wordPackage , String top , String bottom , String left , String right ){
29. ObjectFactory factory = ();
30. PgMar pg = ();
31. (new BigInteger(top));
32. (new BigInteger(bottom));
33. (new BigInteger(left));
34. (new BigInteger(right));
35. ().getSections().get(0).getSectPr().setPgMar(pg);
36. }
37.
38. /**
39. * 功能描述:
设置页边距,上下边距都为1440,厘米
40. * @param wordPackage 文档处理包对象
41. * @param left 左边距
42. * @param right 右边距
43. * @author myclover
44. */
45. public static void setMarginSpace(WordprocessingMLPackage wordPackage , String left , String right ){
46. setMarginSpace(wordPackage, "1440", "1440", left, right);
47. }
48.
49. /**
50. * 功能描述:
设置页边距,上下边距都为1440,厘米,左右边距都为1797,厘米
51. * @param wordPackage 文档处理包对象
52. * @author myclover
53. */
54. public static void setMarginSpace(WordprocessingMLPackage wordPackage){
55. setMarginSpace(wordPackage, "1440", "1440", "1797", "1797");
56. }
文档只读
1. /**
2. * 功能描述:
设置文档是否只读,包括内容和样式
3. * @param wordPackage 文档处理包对象
4. * @param isReadOnly 是否只读
5. * @throws Exception
6. * @author myclover
7. */
8. public static void setReadOnly(WordprocessingMLPackage wordPackage , boolean isReadOnly)throws Exception{
9. byte[] bt = "".getBytes();
10. if(isReadOnly){
11. bt = "123456".getBytes();
12. }
13. ObjectFactory factory = ();
14. etDocumentSettingsPart();
15. if(ds == null){
16. ds = new DocumentSettingsPart();
17. }
18. CTSettings cs = ();
19. if(cs == null){
20. cs = ();
21. }
22. ddTargetPart(ds);
23. }
24.
25. /**
26. * 功能描述:
设置文档是否只读,包括内容和样式
27. * @param fileName 文件
28. * @param isReadOnly 是否只读
29. * @return 返回值:
设置成功,则返回true,否则返回false
30. * @throws Exception
31. * @author myclover
32. */
33. public static boolean setReadOnly(String fileName , boolean isReadOnly)throws Exception{
34. try {
35. File file = new File(fileName);
36. if (!
()) {
37. return false;
38. }
修改字体
生成的RPr不能单独使用,应与Text共同使用
1. /**
2. * 功能描述:
设置字体的样式
3. * @param fontFamily 字体类型
4. * @param colorVal 字体颜色
5. * @param hpsMeasureSize 字号大小
6. * @param sTHint 字体格式
7. * @param isBlod 是否加粗
8. * @return 返回值:
返回字体样式对象
9. * @throws Exception
10. * @author myclover
11. */
12. private static RPr getRPr(String fontFamily , String colorVal , String hpsMeasureSize , STHint sTHint , boolean isBold){
13. ObjectFactory factory = ();
14. RPr rPr = ();
15.
16. rf = new
17. (sTHint);
18. (fontFamily);
19. (fontFamily);
20. (rf);
21.
22. BooleanDefaultTrue bdt = ().createBooleanDefaultTrue();
23. (bdt);
24. if(isBold){
25. (bdt);
26. }
27. color = new
28. (colorVal);
29. (color);
30.
31. sz = new
32. (new BigInteger(hpsMeasureSize));
33. (sz);
34. (sz);
35.
36. return rPr;
37. }
38.Text t = ();
39. (data);
40. R run = ();
41. (getRPr("宋体","000000", "18", , isBold)
42. ().add(t);
43. ().add(run);
3.修改单元格/表格样式
单元格内容垂直居中(已有Tctc)
1.TcPr tcpr = ();
2.ObjectFactory factory = ();
3. if(tcpr == null){
4. tcpr = ();
5. }
合并单元格
1. /**
2. * 功能描述:
合并单元格
3. * 表示合并第startRow(开始行)行中的第startCol(开始列)列到(startCol + colSpan - 1)列
4. * 表示合并第startCol(开始列)行中的第startRow(开始行)列到(startRow + rowSpan - 1)行
5. * @param tc 单元格对象
6. * @param currentRow 当前行号,传入的是遍历表格时的行索引参数
7. * @param startRow 开始行
8. * @param rowSpan 合并的行数,大于1才表示合并
9. * @param currentCol 当前列号,传入的是遍历表格时的列索引参数
10. * @param startCol 开始列
11. * @param colSpan 合并的列数,大于1才表示合并
12. * @author myclover
13. */
14. public static void setCellMerge(Tc tc , int currentRow , int startRow , int rowSpan , int currentCol , int startCol , int colSpan){
15. ObjectFactory factory = ();
16. TcPr tcpr = ();
17. if(tcpr == null){
18. tcpr = ();
19. }
插入分页符
添加换页符相当地简单。
Docx4j拥有一个叫作Br的break对象,这个对象有一个type属性,这种情况下我们需要将其设置为page,type其它可选的值为column和textWrapping。
这个break可以很简单地添加到段落中。
1. private static void addPageBreak() {
2. MainDocumentPart documentPart = ();
3.
4. Br breakObj = new Br();
5. ;
6.
7. P paragraph = ();
8. ().add(breakObj);
9. ().getBody().getContent().add(paragraph);
10. }
6.插入目录
1.public class AddingTableOfContent {
2. private static ObjectFactory factory;
3.
4. /**
5. * 首先我们创建对象工厂和包并从包中抽出文档部件. 然后我们添加目录表, 后面跟着一些带有分类
6. * 标题样式的段落. 最后我们保存包.
7. */
8. public static void main(String[] args) throws Docx4JException {
9. factory = ();
10. WordprocessingMLPackage wordMLPackage = ();
11. MainDocumentPart documentPart = ();
12.
13. addTableOfContent(documentPart);
14.
15. ("Heading1", "Hello 1");
16. ("Heading2", "Hello 2");
17. ("Heading3", "Hello 3");
18. ("Heading1", "Hello 1");
19.
20. (new File("src/main/files/"));
21. }
22.
23. /**
24. * 将目录表添加到文档.
25. *
26. * 首先我们创建段落. 然后添加标记域开始的指示符, 然后添加域内容(真正的目录表), 接着添加域
27. * 结束的指示符. 最后将段落添加到给定文档的JAXB元素中.
28. *
29. * @param documentPart
30. */
31. private static void addTableOfContent(MainDocumentPart documentPart) {
32. P paragraph = ();
33.
34. addFieldBegin(paragraph);
35. addTableOfContentField(paragraph);
36. addFieldEnd(paragraph);
37.
38.