POI生成Word多级标题格式
生活随笔
收集整理的這篇文章主要介紹了
POI生成Word多级标题格式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、使用模板文件生成標題
- 1、創建模板文件
- 2、獲得模板文檔的整體樣式
- 3、使用標題樣式
- 4、結果展示
- 二、自定義標題
- 1、生成標題方法
- 2、調用生成標題方法
- 3、結果展示
一、使用模板文件生成標題
1、創建模板文件
新建一個doc文件,如format.doc,創建標題,如標題1、標題2……
2、獲得模板文檔的整體樣式
// 新建的word文檔對象 XWPFDocument doc = new XWPFDocument(); // word整體樣式 // 讀取模板文檔 XWPFDocument template = new XWPFDocument(new FileInputStream("D:\\test\\poi\\word\\format.docx")); // 獲得模板文檔的整體樣式 CTStyles wordStyles = template.getStyle(); // 獲取新建文檔對象的樣式 XWPFStyles newStyles = doc.createStyles(); // 關鍵行// 修改設置文檔樣式為靜態塊中讀取到的樣式 newStyles.setStyles(wordStyles);3、使用標題樣式
// 標題1,1級大綱 XWPFParagraph para1 = doc.createParagraph(); // 關鍵行// 1級大綱 para1.setStyle("1"); XWPFRun run1 = para1.createRun(); // 標題內容 run1.setText("標題1");// 標題2,2級大綱 XWPFParagraph para2 = doc.createParagraph(); // 關鍵行// 2級大綱 para2.setStyle("2"); XWPFRun run2 = para1.createRun(); // 標題內容 run2.setText("標題2");// 正文 XWPFParagraph paraX = doc.createParagraph(); XWPFRun runX = paraX.createRun(); for(int i=0;i<100;i++) {// 正文內容runX.setText("正文\r\n"); }// word寫入到文件 FileOutputStream fos; try {fos = new FileOutputStream("D:\\test\\poi\\word\\test.docx");doc.write(fos);fos.close(); } catch (Exception e) {// TODO 自動生成的 catch 塊e.printStackTrace(); }4、結果展示
二、自定義標題
1、生成標題方法
/*** * @param doc* @param styles* @param strStyleId 標題id* @param headingLevel 標題級別* @param pointSize 字體大小(/2)* @param hexColor 字體顏色* @param typefaceName 字體名稱(默認宋體)*/public void createHeadingStyle(XWPFDocument doc, XWPFStyles styles, String strStyleId, int headingLevel, int pointSize, String hexColor, String typefaceName) {//創建樣式CTStyle ctStyle = CTStyle.Factory.newInstance();//設置idctStyle.setStyleId(strStyleId);CTString styleName = CTString.Factory.newInstance();styleName.setVal(strStyleId);ctStyle.setName(styleName);CTDecimalNumber indentNumber = CTDecimalNumber.Factory.newInstance();indentNumber.setVal(BigInteger.valueOf(headingLevel));// 數字越低在格式欄中越突出ctStyle.setUiPriority(indentNumber);CTOnOff onoffnull = CTOnOff.Factory.newInstance();ctStyle.setUnhideWhenUsed(onoffnull);// 樣式將顯示在“格式”欄中ctStyle.setQFormat(onoffnull);// 樣式定義給定級別的標題CTPPr ppr = CTPPr.Factory.newInstance();ppr.setOutlineLvl(indentNumber);ctStyle.setPPr(ppr);XWPFStyle style = new XWPFStyle(ctStyle);CTHpsMeasure size = CTHpsMeasure.Factory.newInstance();size.setVal(new BigInteger(String.valueOf(pointSize)));CTHpsMeasure size2 = CTHpsMeasure.Factory.newInstance();size2.setVal(new BigInteger(String.valueOf(pointSize)));CTFonts fonts = CTFonts.Factory.newInstance();if(typefaceName == null || typefaceName.equals("")) typefaceName = "宋體";fonts.setAscii(typefaceName); //字體CTRPr rpr = CTRPr.Factory.newInstance();rpr.setRFonts(fonts);rpr.setSz(size);rpr.setSzCs(size2); //字體大小CTColor color=CTColor.Factory.newInstance();color.setVal(hexToBytes(hexColor));rpr.setColor(color); //字體顏色style.getCTStyle().setRPr(rpr);// is a null op if already definedstyle.setType(STStyleType.PARAGRAPH);styles.addStyle(style);}public static byte[] hexToBytes(String hexString) {HexBinaryAdapter adapter = new HexBinaryAdapter();byte[] bytes = adapter.unmarshal(hexString);return bytes;}2、調用生成標題方法
// 新建的word文檔對象 XWPFDocument doc = new XWPFDocument(); // 獲取新建文檔對象的樣式 XWPFStyles newStyles = doc.createStyles(); String heading1 = "My Heading 1"; docUtils.createHeadingStyle(doc, newStyles, heading1, 1, 45, "000000", "宋體"); XWPFParagraph para1 = doc.createParagraph(); para1.setStyle("My Heading 1"); XWPFRun run1 = para1.createRun(); run1.setText("My Heading 1"); // word寫入到文件 FileOutputStream fos; try {fos = new FileOutputStream("D:\\test\\poi\\word\\test.docx");doc.write(fos);fos.close(); } catch (Exception e) {// TODO 自動生成的 catch 塊e.printStackTrace(); }3、結果展示
參考文章:
- 如何使用Apache POI為docx文件中的段落設置標題樣式?
- Apache POI自動生成Word文檔
總結
以上是生活随笔為你收集整理的POI生成Word多级标题格式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 雷达人体存在感应器,人体感知控制应用,为
- 下一篇: 华为数通ensp命令(一)