POI Excel 导入导出重点

HSSF是指2007年以前的,XSSF是指2007年版本以上的

这个还是比较好用的,这些总结来自Apache的官方向导的点点滴滴

详细的请参考http://poi.apache.org/spreadsheet/quick-guide.html

1.导出excel:

  1 package test.worksheet;
  2 
  3 import java.io.File;
  4 import java.io.FileOutputStream;
  5 import java.io.IOException;
  6 import java.io.OutputStream;
  7 import java.util.Date;
  8 
  9 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 10 import org.apache.poi.hssf.util.HSSFColor;
 11 import org.apache.poi.ss.usermodel.Cell;
 12 import org.apache.poi.ss.usermodel.CellStyle;
 13 import org.apache.poi.ss.usermodel.CreationHelper;
 14 import org.apache.poi.ss.usermodel.Font;
 15 import org.apache.poi.ss.usermodel.IndexedColors;
 16 import org.apache.poi.ss.usermodel.Row;
 17 import org.apache.poi.ss.usermodel.Sheet;
 18 import org.apache.poi.ss.usermodel.Workbook;
 19 
 20 public class SummaryHSSF {
 21     public static void main(String[] args) throws IOException {
 22        //创建Workbook对象(这一个对象代表着对应的一个Excel文件)
 23        //HSSFWorkbook表示以xls为后缀名的文件
 24        Workbook wb = new HSSFWorkbook();
 25        //获得CreationHelper对象,这个应该是一个帮助类
 26        CreationHelper helper = wb.getCreationHelper();
 27        //创建Sheet并给名字(表示Excel的一个Sheet)
 28        Sheet sheet1 = wb.createSheet("HSSF_Sheet_1");  
 29        Sheet sheet2 = wb.createSheet("HSSF_Sheet_2");
 30        //Row表示一行Cell表示一列
 31        Row row = null;
 32        Cell cell = null;
 33        for(int i=0;i<60;i=i+2){
 34         //获得这个sheet的第i行
 35         row = sheet1.createRow(i);
 36         //设置行长度自动   
 37         //row.setHeight((short)500);
 38         row.setHeightInPoints(20);
 39         //row.setZeroHeight(true);
 40         for(int j=0;j<25;j++){  
 41          //设置每个sheet每一行的宽度,自动,根据需求自行确定
 42          sheet1.autoSizeColumn(j+1, true);
 43          //创建一个基本的样式
 44          CellStyle cellStyle = SummaryHSSF.createStyleCell(wb);
 45          //获得这一行的每j列
 46          cell = row.createCell(j);
 47          if(j==0){
 48           //设置文字在单元格里面的位置
 49           cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);
 50           //先创建字体样式,并把这个样式加到单元格的字体里面
 51           cellStyle.setFont(createFonts(wb));
 52           //把这个样式加到单元格里面
 53           cell.setCellStyle(cellStyle);     
 54           //给单元格设值
 55           cell.setCellValue(true);
 56          }else if(j==1){
 57           //设置文字在单元格里面的位置
 58           cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);
 59           //设置这个样式的格式(Format)
 60           cellStyle = SummaryHSSF.setCellFormat(helper,cellStyle, "#,##0.0000");     
 61           //先创建字体样式,并把这个样式加到单元格的字体里面
 62           cellStyle.setFont(createFonts(wb));
 63           //把这个样式加到单元格里面
 64           cell.setCellStyle(cellStyle);
 65           //给单元格设值
 66           cell.setCellValue(new Double(2008.2008));
 67          }else if(j==2){
 68           cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);     
 69           cellStyle.setFont(createFonts(wb));
 70           cell.setCellStyle(cellStyle);
 71           cell.setCellValue(helper.createRichTextString("RichString"+i+j));     
 72          }else if(j==3){
 73           cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);
 74           cellStyle = SummaryHSSF.setCellFormat(helper,cellStyle, "YYYY-MM-DD");
 75           cell.setCellStyle(cellStyle);
 76           cell.setCellValue(new Date());
 77          }else if(j==24){
 78           cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);
 79           cellStyle.setFont(createFonts(wb));
 80           //设置公式
 81           cell.setCellFormula("SUM(E"+(i+1)+":X"+(i+1)+")");     
 82          }else{     
 83           cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);
 84           cellStyle = SummaryHSSF.setFillBackgroundColors(cellStyle,IndexedColors.ORANGE.getIndex(),IndexedColors.ORANGE.getIndex(),CellStyle.SOLID_FOREGROUND);
 85           cell.setCellStyle(cellStyle);
 86           cell.setCellValue(1);
 87          }
 88         }
 89        }
 90        //输出
 91        OutputStream os = new FileOutputStream(new File("c://SummaryHSSF.xls"));
 92        wb.write(os);
 93        os.close();  
 94     }
 95 
 96     public static CellStyle createStyleCell(Workbook wb){
 97        CellStyle cellStyle = wb.createCellStyle();
 98        //设置一个单元格边框颜色
 99        cellStyle.setBorderBottom(CellStyle.BORDER_THIN);
100        cellStyle.setBorderTop(CellStyle.BORDER_THIN);
101        cellStyle.setBorderLeft(CellStyle.BORDER_THIN);
102        cellStyle.setBorderRight(CellStyle.BORDER_THIN);
103        //设置一个单元格边框颜色
104        cellStyle.setRightBorderColor(IndexedColors.BLACK.getIndex());
105        cellStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex());
106        cellStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex());
107        cellStyle.setTopBorderColor(IndexedColors.BLACK.getIndex());  
108        return cellStyle;
109     }
110 
111     public static CellStyle setCellStyleAlignment(CellStyle cellStyle,short halign,short valign){
112        //设置上下
113        cellStyle.setAlignment(halign);
114        //设置左右
115        cellStyle.setVerticalAlignment(valign);
116        return cellStyle;
117     }
118 
119     public static CellStyle setCellFormat(CreationHelper helper,CellStyle cellStyle,String fmt){
120        //还可以用其它方法创建format
121        cellStyle.setDataFormat(helper.createDataFormat().getFormat(fmt));
122        return cellStyle;
123     }
124 
125     public static CellStyle setFillBackgroundColors(CellStyle cellStyle,short bg,short fg,short fp){
126        cellStyle.setFillBackgroundColor(bg);
127        cellStyle.setFillForegroundColor(fg);
128        cellStyle.setFillPattern(fp);
129        return cellStyle;
130     }
131 
132     public static Font createFonts(Workbook wb){
133        //创建Font对象
134        Font font = wb.createFont();
135        //设置字体
136        font.setFontName("黑体");
137        //着色
138        font.setColor(HSSFColor.BLUE.index);
139        //斜体
140        font.setItalic(true);
141        //字体大小
142        font.setFontHeight((short)300);
143        return font;
144     }
145     }

2.导入excel:

 1 package test.worksheet;
 2 
 3 
 4 import java.io.File;
 5 import java.io.FileInputStream;
 6 import java.io.InputStream;
 7 
 8 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 9 import org.apache.poi.ss.usermodel.Cell;
10 import org.apache.poi.ss.usermodel.DateUtil;
11 import org.apache.poi.ss.usermodel.Row;
12 import org.apache.poi.ss.usermodel.Sheet;
13 import org.apache.poi.ss.usermodel.Workbook;
14 import org.apache.poi.ss.usermodel.WorkbookFactory;
15 
16 public class ReadExcel {
17     public static void main(String[] args) throws Exception {
18        InputStream is = new FileInputStream(new File("c://SummaryHSSF.xls"));
19        //根据输入流创建Workbook对象
20        Workbook wb = WorkbookFactory.create(is);
21        //get到Sheet对象
22        Sheet sheet = wb.getSheetAt(0);
23        //这个必须用接口
24        for(Row row : sheet){
25         for(Cell cell : row){
26          //cell.getCellType是获得cell里面保存的值的type
27          //如Cell.CELL_TYPE_STRING
28          switch(cell.getCellType()){
29           case Cell.CELL_TYPE_BOOLEAN:
30            //得到Boolean对象的方法
31            System.out.print(cell.getBooleanCellValue()+" ");
32            break;
33           case Cell.CELL_TYPE_NUMERIC:
34            //先看是否是日期格式
35            if(DateUtil.isCellDateFormatted(cell)){
36             //读取日期格式
37             System.out.print(cell.getDateCellValue()+" ");
38            }else{
39             //读取数字
40             System.out.print(cell.getNumericCellValue()+" ");
41            }
42            break;
43           case Cell.CELL_TYPE_FORMULA:
44            //读取公式
45            System.out.print(cell.getCellFormula()+" ");
46            break;
47           case Cell.CELL_TYPE_STRING:
48            //读取String
49            System.out.print(cell.getRichStringCellValue().toString()+" ");
50            break;     
51          }
52         }
53         System.out.println("");
54        }
55     }
56     }

3.需要的包

poi-3.9-20121203.jar和poi-ooxml-3.7-20121029.jar

原文地址:https://www.cnblogs.com/yanjie-java/p/8329667.html