1、ApachePOIHSSF和XSSF读写EXCEL总结Apache POI HSSF和XSSF读写EXCEL总结HSSF是指2007年以前的,XSSF是指2007年版本以上的这个还是比较好用的,这些总结来自Apache的官方向导的点点滴滴还有好多没有没有写的,详细的请参考http:/poi.apache.org/spreadsheet/quick-guide.html 还有LOG也比较好看Java代码public class SummaryHSSF public static void main(String args) throws IOException /创建Workbook对象(这一个
2、对象代表着对应的一个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.createSheet(HSSF_Sheet_2); /Row表示一行Cell表示一列Row row
3、= null; Cell cell = null; for(int i=0;i60;i=i+2) /获得这个sheet的第i行row = sheet1.createRow(i); /设置行长度自动/row.setHeight(short)500); row.setHeightInPoints(20); /row.setZeroHeight(true); for(int j=0;j25;j+) /设置每个sheet每一行的宽度,自动,根据需求自行确定sheet1.autoSizeColumn(j+1, true); /创建一个基本的样式CellStyle cellStyle = SummaryH
4、SSF.createStyleCell(wb); /获得这一行的每j列cell = row.createCell(j); if(j=0) /设置文字在单元格里面的位置cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER); /先创建字体样式,并把这个样式加到单元格的字体里面cellStyle.setFont(createFonts(wb); /把这个样式加到单元格里面cell.setCellStyle(cellStyle); /给单元格
5、设值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); /先创建字体样式,并把这个样式加到单元格的字体里面cellStyle.setFont(createF
6、onts(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(wb); cell.setCellStyle(cellStyle); cell.setCell
7、Value(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); cell.setCellStyle(cellStyle); cell.setCellValue(new Date()
8、; 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)+); else cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellS
9、tyle.VERTICAL_CENTER); cellStyle = SummaryHSSF.setFillBackgroundColors(cellStyle,IndexedColors.ORANGE.getIndex(),IndexedColors.ORANGE.getIndex(),CellStyle.SOLID_FOREGROUND); cell.setCellStyle(cellStyle); cell.setCellValue(1); /输出OutputStream os = new FileOutputStream(new File(c:/SummaryHSSF.xls); wb
10、.write(os); os.close(); /* * 边框* param wb * return */ public static CellStyle createStyleCell(Workbook wb) CellStyle cellStyle = wb.createCellStyle(); /设置一个单元格边框颜色cellStyle.setBorderBottom(CellStyle.BORDER_THIN); cellStyle.setBorderTop(CellStyle.BORDER_THIN); cellStyle.setBorderLeft(CellStyle.BORDER
11、_THIN); cellStyle.setBorderRight(CellStyle.BORDER_THIN); /设置一个单元格边框颜色cellStyle.setRightBorderColor(IndexedColors.BLACK.getIndex(); cellStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex(); cellStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex(); cellStyle.setTopBorderColor(IndexedColors.BLA
12、CK.getIndex(); return cellStyle; /* * 设置文字在单元格里面的位置* CellStyle.ALIGN_CENTER * CellStyle.VERTICAL_CENTER * param cellStyle * param halign * param valign * return */ public static CellStyle setCellStyleAlignment(CellStyle cellStyle,short halign,short valign) /设置上下cellStyle.setAlignment(CellStyle.ALIGN
13、_CENTER); /设置左右cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER); return cellStyle; /* * 格式化单元格* 如#,#0.00,m/d/yy去HSSFDataFormat或XSSFDataFormat里面找* param cellStyle * param fmt * return */ public static CellStyle setCellFormat(CreationHelper helper,CellStyle cellStyle,String fmt) /还可以用其它方法创建fo
14、rmat cellStyle.setDataFormat(helper.createDataFormat().getFormat(fmt); return cellStyle; /* * 前景和背景填充的着色* param cellStyle * param bg IndexedColors.ORANGE.getIndex(); * param fg IndexedColors.ORANGE.getIndex(); * param fp CellStyle.SOLID_FOREGROUND * return */ public static CellStyle setFillBackgroun
15、dColors(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 createFonts(Workbook wb) /创建Font对象Font font = wb.createFont(); /设置字体
16、font.setFontName(黑体); /着色font.setColor(HSSFColor.BLUE.index); /斜体font.setItalic(true); /字体大小font.setFontHeight(short)300); return font; public class SummaryHSSF public static void main(String args) throws IOException /创建Workbook对象(这一个对象代表着对应的一个Excel文件)/HSSFWorkbook表示以xls为后缀名的文件Workbook wb = new HSSF
17、Workbook();/获得CreationHelper对象,这个应该是一个帮助类CreationHelper helper = wb.getCreationHelper();/创建Sheet并给名字(表示Excel的一个Sheet)Sheet sheet1 = wb.createSheet(HSSF_Sheet_1); Sheet sheet2 = wb.createSheet(HSSF_Sheet_2);/Row表示一行Cell表示一列Row row = null;Cell cell = null;for(int i=0;i60;i=i+2)/获得这个sheet的第i行row = shee
18、t1.createRow(i);/设置行长度自动/row.setHeight(short)500);row.setHeightInPoints(20);/row.setZeroHeight(true);for(int j=0;j25;j+) /设置每个sheet每一行的宽度,自动,根据需求自行确定sheet1.autoSizeColumn(j+1, true);/创建一个基本的样式CellStyle cellStyle = SummaryHSSF.createStyleCell(wb);/获得这一行的每j列cell = row.createCell(j);if(j=0)/设置文字在单元格里面的
19、位置cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);/先创建字体样式,并把这个样式加到单元格的字体里面cellStyle.setFont(createFonts(wb);/把这个样式加到单元格里面cell.setCellStyle(cellStyle); /给单元格设值cell.setCellValue(true);else if(j=1)/设置文字在单元格里面的位置cellStyle = SummaryHSSF.setCell
20、StyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);/设置这个样式的格式(Format)cellStyle = SummaryHSSF.setCellFormat(helper,cellStyle, #,#0.0000); /先创建字体样式,并把这个样式加到单元格的字体里面cellStyle.setFont(createFonts(wb);/把这个样式加到单元格里面cell.setCellStyle(cellStyle);/给单元格设值cell.setCellValue(new Double(
21、2008.2008);else if(j=2)cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER); cellStyle.setFont(createFonts(wb);cell.setCellStyle(cellStyle);cell.setCellValue(helper.createRichTextString(RichString+i+j); else if(j=3)cellStyle = SummaryHSSF.setCel
22、lStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);cellStyle = SummaryHSSF.setCellFormat(helper,cellStyle, MM-yyyy-dd);cell.setCellStyle(cellStyle);cell.setCellValue(new Date();else if(j=24)cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, Ce
23、llStyle.VERTICAL_CENTER);cellStyle.setFont(createFonts(wb);/设置公式cell.setCellFormula(SUM(E+(i+1)+:X+(i+1)+); else cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);cellStyle = SummaryHSSF.setFillBackgroundColors(cellStyle,IndexedColors.ORANGE.
24、getIndex(),IndexedColors.ORANGE.getIndex(),CellStyle.SOLID_FOREGROUND);cell.setCellStyle(cellStyle);cell.setCellValue(1);/输出OutputStream os = new FileOutputStream(new File(c:/SummaryHSSF.xls);wb.write(os);os.close(); /* 边框* param wb* return*/public static CellStyle createStyleCell(Workbook wb)CellSt
25、yle cellStyle = wb.createCellStyle();/设置一个单元格边框颜色cellStyle.setBorderBottom(CellStyle.BORDER_THIN);cellStyle.setBorderTop(CellStyle.BORDER_THIN);cellStyle.setBorderLeft(CellStyle.BORDER_THIN);cellStyle.setBorderRight(CellStyle.BORDER_THIN);/设置一个单元格边框颜色cellStyle.setRightBorderColor(IndexedColors.BLACK
26、.getIndex();cellStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex();cellStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex();cellStyle.setTopBorderColor(IndexedColors.BLACK.getIndex(); return cellStyle;/* 设置文字在单元格里面的位置* CellStyle.ALIGN_CENTER* CellStyle.VERTICAL_CENTER* param cellStyle* par
27、am halign* param valign* return*/public static CellStyle setCellStyleAlignment(CellStyle cellStyle,short halign,short valign)/设置上下cellStyle.setAlignment(CellStyle.ALIGN_CENTER);/设置左右cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);return cellStyle;/* 格式化单元格* 如#,#0.00,m/d/yy去HSSFDataFormat或X
28、SSFDataFormat里面找* param cellStyle* param fmt* return*/public static CellStyle setCellFormat(CreationHelper helper,CellStyle cellStyle,String fmt)/还可以用其它方法创建formatcellStyle.setDataFormat(helper.createDataFormat().getFormat(fmt);return cellStyle;/* 前景和背景填充的着色* param cellStyle* param bg IndexedColors.O
29、RANGE.getIndex();* param fg IndexedColors.ORANGE.getIndex();* param fp CellStyle.SOLID_FOREGROUND* return*/public static CellStyle setFillBackgroundColors(CellStyle cellStyle,short bg,short fg,short fp)/cellStyle.setFillBackgroundColor(bg);cellStyle.setFillForegroundColor(fg);cellStyle.setFillPatter
30、n(fp);return cellStyle;/* 设置字体* param wb* return*/public static Font createFonts(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代码public class ReadExcel public static void main(String args) throws Exce
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1