ApachePOIHSSF和XSSF读写EXCEL总结_第1页
ApachePOIHSSF和XSSF读写EXCEL总结_第2页
ApachePOIHSSF和XSSF读写EXCEL总结_第3页
ApachePOIHSSF和XSSF读写EXCEL总结_第4页
ApachePOIHSSF和XSSF读写EXCEL总结_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Apache POI HSSF和XSSF读写EXCEL总结 HSSF是指2007年以前的,XSSF是指2007年版本以上的 这个还是比较好用的,这些总结来自Apache的官方向导的点点滴滴 还有好多没有没有写的,详细的请参考 还有LOG也比较好看 Java代码  1. public class SummaryHSSF    2.   3.     public static void main(String args) thr

2、ows IOException    4.         /创建Workbook对象(这一个对象代表着对应的一个Excel文件)   5.                      /HSSFWorkbook表示以xls为后缀名的文件  

3、 6.         Workbook wb = new HSSFWorkbook();   7.         /获得CreationHelper对象,这个应该是一个帮助类   8.         CreationHelper helper 

4、= wb.getCreationHelper();   9.         /创建Sheet并给名字(表示Excel的一个Sheet)   10.         Sheet sheet1 = wb.createSheet("HSSF_Sheet_1");       

5、0; 11.         Sheet sheet2 = wb.createSheet("HSSF_Sheet_2");   12.         /Row表示一行Cell表示一列   13.         Row row =

6、0;null;   14.         Cell cell = null;   15.         for(int i=0;i<60;i=i+2)   16.             /获得这个sheet的

7、第i行   17.             row = sheet1.createRow(i);   18.             /设置行长度自动             &#

8、160;19.             /row.setHeight(short)500);   20.             row.setHeightInPoints(20);   21.           &#

9、160; /row.setZeroHeight(true);   22.             for(int j=0;j<25;j+)          23.                

10、; /设置每个sheet每一行的宽度,自动,根据需求自行确定   24.                 sheet1.autoSizeColumn(j+1, true);   25.                 /

11、创建一个基本的样式   26.                 CellStyle cellStyle = SummaryHSSF.createStyleCell(wb);   27.                &#

12、160;/获得这一行的每j列   28.                 cell = row.createCell(j);   29.                 if(j=0)   30. &

13、#160;                   /设置文字在单元格里面的位置   31.                     cellStyle = SummaryH

14、SSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);   32.                     /先创建字体样式,并把这个样式加到单元格的字体里面   33.     

15、;                cellStyle.setFont(createFonts(wb);   34.                     /把这个样式加到单元格里面   35. &#

16、160;                   cell.setCellStyle(cellStyle);                      36.    

17、0;                /给单元格设值   37.                     cell.setCellValue(true);   38.    

18、;             else if(j=1)   39.                     /设置文字在单元格里面的位置   40.       

19、              cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);   41.             

20、;        /设置这个样式的格式(Format)   42.                     cellStyle = SummaryHSSF.setCellFormat(helper,cellStyle, "#,#0.0000");&#

21、160;                    43.                     /先创建字体样式,并把这个样式加到单元格的字体里面   44.   

22、60;                 cellStyle.setFont(createFonts(wb);   45.                     /把这个样式加到单元格里面  

23、0;46.                     cell.setCellStyle(cellStyle);   47.                     /给单元格设值

24、  48.                     cell.setCellValue(new Double(2008.2008);   49.                 else&#

25、160;if(j=2)   50.                     cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);    

26、                   51.                     cellStyle.setFont(createFonts(wb);   52.   

27、0;                 cell.setCellStyle(cellStyle);   53.                     cell.setCellValue(helper.creat

28、eRichTextString("RichString"+i+j);                      54.                 else if(j=3)   

29、;55.                     cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);   56.      

30、               cellStyle = SummaryHSSF.setCellFormat(helper,cellStyle, "MM-yyyy-dd");   57.                 &#

31、160;   cell.setCellStyle(cellStyle);   58.                     cell.setCellValue(new Date();   59.           &

32、#160;     else if(j=24)   60.                     cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle

33、.VERTICAL_CENTER);   61.                     cellStyle.setFont(createFonts(wb);   62.                

34、0;    /设置公式   63.                     cell.setCellFormula("SUM(E"+(i+1)+":X"+(i+1)+")");        

35、0;            64.                 else                     65. &#

36、160;                   cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);   66.       &

37、#160;             cellStyle = SummaryHSSF.setFillBackgroundColors(cellStyle,IndexedColors.ORANGE.getIndex(),IndexedColors.ORANGE.getIndex(),CellStyle.SOLID_FOREGROUND);   67.       

38、0;             cell.setCellStyle(cellStyle);   68.                     cell.setCellValue(1);   69.   

39、0;                70.                71.            72.         /

40、输出   73.         OutputStream os = new (new File("c:/SummaryHSSF.xls");   74.         wb.write(os);   75.         o

41、s.close();        76.        77.     /*  78.      * 边框  79.      * param wb  80.      * return  81.

42、     */  82.     public static CellStyle createStyleCell(Workbook wb)   83.         CellStyle cellStyle = wb.createCellStyle();   84.   

43、0;     /设置一个单元格边框颜色   85.         cellStyle.setBorderBottom(CellStyle.BORDER_THIN);   86.         cellStyle.setBorderTop(CellStyle.BORDER_THIN);   87.   &#

44、160;     cellStyle.setBorderLeft(CellStyle.BORDER_THIN);   88.         cellStyle.setBorderRight(CellStyle.BORDER_THIN);   89.         /设置一个单元格边框颜色   90.   

45、      cellStyle.setRightBorderColor(IndexedColors.BLACK.getIndex();   91.         cellStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex();   92.         cellStyle.set

46、BottomBorderColor(IndexedColors.BLACK.getIndex();   93.         cellStyle.setTopBorderColor(IndexedColors.BLACK.getIndex();           94.         return ce

47、llStyle;   95.        96.     /*  97.      * 设置文字在单元格里面的位置  98.      * CellStyle.ALIGN_CENTER  99.      * CellStyle.VERTICAL_CENTER 

48、60;100.      * param cellStyle  101.      * param halign  102.      * param valign  103.      * return  104.      */

49、0; 105.     public static CellStyle setCellStyleAlignment(CellStyle cellStyle,short halign,short valign)   106.         /设置上下   107.         cell

50、Style.setAlignment(CellStyle.ALIGN_CENTER);   108.         /设置左右   109.         cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);   110.        &#

51、160;return cellStyle;   111.        112.     /*  113.      * 格式化单元格  114.      * 如#,#0.00,m/d/yy去HSSFDataFormat或XSSFDataFormat里面找  115.     

52、 * param cellStyle  116.      * param fmt  117.      * return  118.      */  119.     public static CellStyle setCellFormat(CreationHel

53、per helper,CellStyle cellStyle,String fmt)   120.         /还可以用其它方法创建format   121.         cellStyle.setDataFormat(helper.createDataFormat().getFormat(fmt);   122.   

54、;      return cellStyle;   123.        124.     /*  125.      * 前景和背景填充的着色  126.      * param cellStyle  127.   

55、60;  * param bg IndexedColors.ORANGE.getIndex();  128.      * param fg IndexedColors.ORANGE.getIndex();  129.      * param fp CellStyle.SOLID_FOREGROUND  130.    

56、60; * return  131.      */  132.     public static CellStyle setFillBackgroundColors(CellStyle cellStyle,short bg,short fg,short fp)   133.        

57、60;/cellStyle.setFillBackgroundColor(bg);   134.         cellStyle.setFillForegroundColor(fg);   135.         cellStyle.setFillPattern(fp);   136.        &

58、#160;return cellStyle;   137.        138.     /*  139.      * 设置字体  140.      * param wb  141.      * return  142.  

59、;    */  143.     public static Font createFonts(Workbook wb)   144.         /创建Font对象   145.         Font font = w

60、b.createFont();   146.         /设置字体   147.         font.setFontName("黑体");   148.         /着色   149.     

61、0;   font.setColor(HSSFColor.BLUE.index);   150.         /斜体   151.         font.setItalic(true);   152.         /字体大小   153.

62、         font.setFontHeight(short)300);   154.         return font;   155.        156.   public class SummaryHSSF public static void main(String args) thro

63、ws IOException /创建Workbook对象(这一个对象代表着对应的一个Excel文件) /HSSFWorkbook表示以xls为后缀名的文件Workbook wb = new HSSFWorkbook();/获得CreationHelper对象,这个应该是一个帮助类CreationHelper helper = wb.getCreationHelper();/创建Sheet并给名字(表示Excel的一个Sheet)Sheet sheet1 = wb.createSheet("HSSF_Sheet_1");Sheet sheet2 = wb.createShee

64、t("HSSF_Sheet_2");/Row表示一行Cell表示一列Row row = null;Cell cell = null;for(int i=0;i<60;i=i+2)/获得这个sheet的第i行row = sheet1.createRow(i);/设置行长度自动/row.setHeight(short)500);row.setHeightInPoints(20);/row.setZeroHeight(true);for(int j=0;j<25;j+)/设置每个sheet每一行的宽度,自动,根据需求自行确定sheet1.autoSizeColumn(

65、j+1, true);/创建一个基本的样式CellStyle cellStyle = SummaryHSSF.createStyleCell(wb);/获得这一行的每j列cell = row.createCell(j);if(j=0)/设置文字在单元格里面的位置cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);/先创建字体样式,并把这个样式加到单元格的字体里面cellStyle.setFont(createFonts(wb);/把

66、这个样式加到单元格里面cell.setCellStyle(cellStyle);/给单元格设值cell.setCellValue(true);else if(j=1)/设置文字在单元格里面的位置cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);/设置这个样式的格式(Format)cellStyle = SummaryHSSF.setCellFormat(helper,cellStyle, "#,#0.0000"

67、);/先创建字体样式,并把这个样式加到单元格的字体里面cellStyle.setFont(createFonts(wb);/把这个样式加到单元格里面cell.setCellStyle(cellStyle);/给单元格设值cell.setCellValue(new Double(2008.2008);else if(j=2)cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);cellStyle.setFont(createFonts(

68、wb);cell.setCellStyle(cellStyle);cell.setCellValue(helper.createRichTextString("RichString"+i+j);else if(j=3)cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);cellStyle = SummaryHSSF.setCellFormat(helper,cellStyle, "MM-yyyy-dd&

69、quot;);cell.setCellStyle(cellStyle);cell.setCellValue(new Date();else if(j=24)cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);cellStyle.setFont(createFonts(wb);/设置公式cell.setCellFormula("SUM(E"+(i+1)+":X"+(i+1)+")&qu

70、ot;);elsecellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);cellStyle = SummaryHSSF.setFillBackgroundColors(cellStyle,IndexedColors.ORANGE.getIndex(),IndexedColors.ORANGE.getIndex(),CellStyle.SOLID_FOREGROUND);cell.setCellStyle(cellStyle);cell

71、.setCellValue(1);/输出OutputStream os = new (new File("c:/SummaryHSSF.xls");wb.write(os);os.close();/* * 边框 * param wb * return */public static CellStyle createStyleCell(Workbook wb)CellStyle cellStyle = wb.createCellStyle();/设置一个单元格边框颜色cellStyle.setBorderBottom(CellStyle.BORDER_THIN);cellSt

72、yle.setBorderTop(CellStyle.BORDER_THIN);cellStyle.setBorderLeft(CellStyle.BORDER_THIN);cellStyle.setBorderRight(CellStyle.BORDER_THIN);/设置一个单元格边框颜色cellStyle.setRightBorderColor(IndexedColors.BLACK.getIndex();cellStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex();cellStyle.setBottomBorderColor(I

73、ndexedColors.BLACK.getIndex();cellStyle.setTopBorderColor(IndexedColors.BLACK.getIndex();return cellStyle;/* * 设置文字在单元格里面的位置 * CellStyle.ALIGN_CENTER * CellStyle.VERTICAL_CENTER * param cellStyle * param halign * param valign * return */public static CellStyle setCellStyleAlignment(CellStyle cellSty

74、le,short halign,short valign)/设置上下cellStyle.setAlignment(CellStyle.ALIGN_CENTER);/设置左右cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);return cellStyle;/* * 格式化单元格 * 如#,#0.00,m/d/yy去HSSFDataFormat或XSSFDataFormat里面找 * param cellStyle * param fmt * return */public static CellStyle setCellForm

75、at(CreationHelper helper,CellStyle cellStyle,String fmt)/还可以用其它方法创建formatcellStyle.setDataFormat(helper.createDataFormat().getFormat(fmt);return cellStyle;/* * 前景和背景填充的着色 * param cellStyle * param bg IndexedColors.ORANGE.getIndex(); * param fg IndexedColors.ORANGE.getIndex(); * param fp CellStyle.SO

76、LID_FOREGROUND * return */public static CellStyle setFillBackgroundColors(CellStyle cellStyle,short bg,short fg,short fp)/cellStyle.setFillBackgroundColor(bg);cellStyle.setFillForegroundColor(fg);cellStyle.setFillPattern(fp);return cellStyle;/* * 设置字体 * param wb * return */public static Font createF

77、onts(Workbook wb)/创建Font对象Font font = wb.createFont();/设置字体font.setFontName("黑体");/着色font.setColor(HSSFColor.BLUE.index);/斜体font.setItalic(true);/字体大小font.setFontHeight(short)300);return font;读取Excel文件 Java代码  1. public class ReadExcel    2.    

78、 public static void main(String args) throws Exception    3.         InputStream is = new (new File("c:/SummaryHSSF.xls");   4.       &

79、#160; /根据输入流创建Workbook对象   5.         Workbook wb = WorkbookFactory.create(is);   6.         /get到Sheet对象   7.         Sheet 

80、sheet = wb.getSheetAt(0);   8.         /这个必须用接口   9.         for(Row row : sheet)   10.             for(C

81、ell cell : row)   11.                 /cell.getCellType是获得cell里面保存的值的type   12.                 /如Cell.CE

82、LL_TYPE_STRING   13.                 switch(cell.getCellType()   14.                     case C

83、ell.CELL_TYPE_BOOLEAN:   15.                         /得到Boolean对象的方法   16.               &

84、#160;         System.out.print(cell.getBooleanCellValue()+" ");   17.                         break;  

85、60;18.                     case Cell.CELL_TYPE_NUMERIC:   19.                     

86、60;   /先看是否是日期格式   20.                         if(DateUtil.isCellDateFormatted(cell)   21.          

87、                   /读取日期格式   22.                            

88、 System.out.print(cell.getDateCellValue()+" ");   23.                         else   24.         

89、60;                   /读取数字   25.                            

90、; System.out.print(cell.getNumericCellValue()+" ");   26.                            27.         

91、60;               break;   28.                     case Cell.CELL_TYPE_FORMULA:   29.   &#

92、160;                     /读取公式   30.                         Syst

93、em.out.print(cell.getCellFormula()+" ");   31.                         break;   32.           &

94、#160;         case Cell.CELL_TYPE_STRING:   33.                         /读取String   34.    

95、0;                    System.out.print(cell.getRichStringCellValue().toString()+" ");   35.                         break;                     36.          &#

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论