文章标题

来源:互联网 发布:php curl 模拟get请求 编辑:程序博客网 时间:2024/06/05 07:15

在实际项目中经常需要导出Word文档,Itext是其中一种选择,使用Itext导出Word文档时需要导入iText-2.1.7.jar和iText-rtf-2.1.7.jar两个jar,具体实现如下代码所示:

package cn.outofmemory.utils.file;  import java.awt.Color;  import com.lowagie.text.Chunk;  import com.lowagie.text.Font;  import com.lowagie.text.Paragraph;  import com.lowagie.text.Phrase;  public class DocStyleUtils {      /**      * 功能说明:设置字体的样式,颜色为黑色</BR>      * 修改日期:2011-04-27      * @author myclover      * @param family  字体类型      * @param size    字体大小,22f为二号,18f为小二号,16f为三号      * @param style   字体样式      * @return      */      public static Font setFontStyle(String family , float size , int style){          return setFontStyle(family, Color.BLACK, size, style);      }      /**      * 功能说明:设置字体的样式</BR>      * 修改日期:2011-04-27      * @author myclover      * @param family  字体类型      * @param color   字体颜色      * @param size    字体大小,22f为二号,18f为小二号,16f为三号      * @param style   字体样式      * @return      */      public static Font setFontStyle(String family , Color color , float size , int style){          Font font = new Font();          font.setFamily(family);          font.setColor(color);          font.setSize(size);          font.setStyle(style);          return font;      }      /**      * 功能说明:为文字填充浅灰色背景</BR>      * 修改日期:2011-04-27      * @author myclover      * @param content   需要填充背景颜色的内容      * @param appendStr 不需要填充背景颜色的内容      * @return      */      private static Phrase setPhraseStyle(String content , String appendStr){          Chunk chunk = new Chunk(content);          //填充的背景颜色为浅灰色          chunk.setBackground(Color.LIGHT_GRAY);          Phrase phrase = new Phrase(chunk);          phrase.add(appendStr);          return phrase;      }      /**      * 功能说明:设置段落的样式,设置前半截内容和后半截内容格式不一样的段落样式</BR>      * 修改日:2011-04-27      * @author myclover      * @param content  前半截内容      * @param font     字体的样式      * @param firstLineIndent 首行缩进多少字符,16f约等于一个字符      * @param appendStr 后半截内容      * @return      */      public static Paragraph setParagraphStyle(String content , Font font , float firstLineIndent , String appendStr){          Paragraph par = setParagraphStyle(content, font, 0f, 12f);          Phrase phrase = new Phrase();          phrase.add(par);          phrase.add(appendStr);          Paragraph paragraph = new Paragraph(phrase);          paragraph.setFirstLineIndent(firstLineIndent);          //设置对齐方式为两端对齐          paragraph.setAlignment(Paragraph.ALIGN_JUSTIFIED_ALL);          return paragraph;      }      /**      * 功能说明:设置段落的样式,设置前半截内容填充了浅灰色的背景颜色,后半截内容没有背景颜色的段落样式</BR>      * 修改日期:2011-04-27      * @author myclover      * @param content  前半截有背景颜色的内容      * @param font     字体的样式      * @param firstLineIndent 首行缩进的字符,16f约等于一个字符      * @param leading  行间距12f表示单倍行距      * @param appendStr 后半截内容      * @return      */      public static Paragraph setParagraphStyle(String content , Font font , float firstLineIndent , float leading , String appendStr){          Phrase phrase = setPhraseStyle(content , appendStr);          Paragraph par = new Paragraph(phrase);          par.setFont(font);          par.setFirstLineIndent(firstLineIndent);          par.setLeading(leading);          //设置对齐方式为两端对齐          par.setAlignment(Paragraph.ALIGN_JUSTIFIED_ALL);          return par;      }      /**      * 功能说明:设置段落的样式,一般用于设置标题</BR>      * 修改日期:2011-04-27      * @author myclover      * @param content  段落的内容      * @param font     字体样式      * @param leading  行间距      * @param alignment 对齐方式      * @return      */      public static Paragraph setParagraphStyle(String content , Font font , float leading , int alignment){          return setParagraphStyle(content, font, 0f, leading, 0f, alignment);      }      /**      * 功能说明:设置段落的样式,对齐方式为两端对齐,缩进样式是文本之后0.2毫米</BR>      * 修改日期:2011-04-27      * @author myclover      * @param content  段落的内容      * @param font     字体的样式      * @param firstLineIndent 首行缩进多少字符,16f约等于一个字符      * @param leading  行间距      * @return      */      public static Paragraph setParagraphStyle(String content , Font font , float firstLineIndent , float leading){          return setParagraphStyle(content, font, firstLineIndent, leading, 0.6f, Paragraph.ALIGN_JUSTIFIED_ALL);      }      /**      * 功能说明:设置段落的样式</BR>      * 修改日期:2011-04-27      * @author myclover      * @param content  段落的内容      * @param font     字体的样式      * @param firstLineIndent  首行缩进多少字符,16f约等于一个字符      * @param leading  行间距      * @param indentationRight 缩进样式中的文本之后多少毫米,0.6f相当于0.2毫米      * @param alignment 对齐方式      * @return      */      public static Paragraph setParagraphStyle(String content , Font font , float firstLineIndent , float leading , float indentationRight , int alignment){          Paragraph par = new Paragraph(content, font);          par.setFirstLineIndent(firstLineIndent);          par.setLeading(leading);          par.setIndentationRight(indentationRight);          par.setAlignment(alignment);          return par;      }  }  

测试类如下:

package cn.outofmemory.utils.file;  import java.io.File;  import java.io.FileOutputStream;  import jxl.Workbook;  import jxl.format.Alignment;  import jxl.write.Label;  import jxl.write.WritableSheet;  import jxl.write.WritableWorkbook;  import com.lowagie.text.Document;  import com.lowagie.text.Font;  import com.lowagie.text.Paragraph;  import com.lowagie.text.rtf.RtfWriter2;  public class TestDoc {      /**      * @param args      */      public static void main(String[] args) {          exportDoc("D:\\test.doc");      }      public static void exportDoc(String fileName){          try {              Document doc = new Document();              RtfWriter2.getInstance(doc, new FileOutputStream(fileName));              // 打开文档              doc.open();              //设置页边距,上、下25.4毫米,即为72f,左、右31.8毫米,即为90f              doc.setMargins(90f, 90f, 72f, 72f);              //设置标题字体样式,粗体、二号、华文中宋              Font tfont = DocStyleUtils.setFontStyle("华文中宋", 22f, Font.BOLD);              //设置正文内容的字体样式,常规、三号、仿宋_GB2312              Font bfont = DocStyleUtils.setFontStyle("仿宋_GB2312", 16f, Font.NORMAL);              //构建标题,居中对齐,12f表示单倍行距              Paragraph title = DocStyleUtils.setParagraphStyle("测试Itext导出Word文档", tfont, 12f, Paragraph.ALIGN_CENTER);              //构建正文内容              StringBuffer contentSb = new StringBuffer();              contentSb.append("最近项目很忙,这个是项目中使用到的,所以现在总结一下,以便今后可以参考使用,");              contentSb.append("2011年4月27日 — 2011年5月20日,对以下技术进行使用,");              contentSb.append("Itext、");              contentSb.append("Excel、");              contentSb.append("Word、");              contentSb.append("PPT。");              //首行缩进2字符,行间距1.5倍行距              Paragraph bodyPar = DocStyleUtils.setParagraphStyle(contentSb.toString(), bfont, 32f, 18f);              Paragraph bodyEndPar = DocStyleUtils.setParagraphStyle("截至2011年4月28日,各种技术已经完全实现。", bfont, 32f, 18f);              //设置空行              Paragraph blankRow = new Paragraph(18f, " ", bfont);              Paragraph deptPar = DocStyleUtils.setParagraphStyle("(技术开发部盖章)", bfont, 12f, Paragraph.ALIGN_RIGHT);              Paragraph datePar = DocStyleUtils.setParagraphStyle("2011-04-30", bfont, 12f, Paragraph.ALIGN_RIGHT);              //向文档中添加内容              doc.add(title);              doc.add(blankRow);              doc.add(bodyPar);              doc.add(bodyEndPar);              doc.add(blankRow);              doc.add(blankRow);              doc.add(blankRow);              doc.add(deptPar);              doc.add(datePar);              //最后一定要记住关闭              doc.close();          } catch (Exception e) {              e.printStackTrace();          }      }     }  
0 0
原创粉丝点击