(二)JAVA使用POI操作excel

 

1,创建一个时间格式的单元格

Demo4.java

 1 package com.wishwzp.poi;
 2 
 3 import java.io.FileOutputStream;
 4 import java.util.Calendar;
 5 import java.util.Date;
 6 
 7 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 8 import org.apache.poi.ss.usermodel.Cell;
 9 import org.apache.poi.ss.usermodel.CellStyle;
10 import org.apache.poi.ss.usermodel.CreationHelper;
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 
15 public class Demo4 {
16 
17     public static void main(String[] args) throws Exception{
18         Workbook wb=new HSSFWorkbook(); // 定义一个新的工作簿
19         Sheet sheet=wb.createSheet("第一个Sheet页");  // 创建第一个Sheet页
20         
21         Row row=sheet.createRow(0); // 创建一个行
22         
23         Cell cell=row.createCell(0); // 创建一个单元格  第1列
24         cell.setCellValue(new Date());  // 给单元格设置值
25         
26         CreationHelper createHelper=wb.getCreationHelper();
27         CellStyle cellStyle=wb.createCellStyle(); //单元格样式类
28         cellStyle.setDataFormat(createHelper.createDataFormat().getFormat("yyy-mm-dd hh:mm:ss"));
29         cell=row.createCell(1); // 第二列
30         cell.setCellValue(new Date());
31         cell.setCellStyle(cellStyle);
32         
33         cell=row.createCell(2);  // 第三列
34         cell.setCellValue(Calendar.getInstance());
35         cell.setCellStyle(cellStyle);
36         
37         FileOutputStream fileOut=new FileOutputStream("d:\\工作簿.xls");
38         wb.write(fileOut);
39         fileOut.close();
40     }
41 }

 

 

 


2,处理不同内容格式的单元格

 Demo5.java

 1 package com.wishwzp.poi;
 2 
 3 import java.io.FileOutputStream;
 4 import java.util.Calendar;
 5 import java.util.Date;
 6 
 7 import org.apache.poi.hssf.usermodel.HSSFCell;
 8 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 9 import org.apache.poi.ss.usermodel.Cell;
10 import org.apache.poi.ss.usermodel.CellStyle;
11 import org.apache.poi.ss.usermodel.CreationHelper;
12 import org.apache.poi.ss.usermodel.Row;
13 import org.apache.poi.ss.usermodel.Sheet;
14 import org.apache.poi.ss.usermodel.Workbook;
15 
16 public class Demo5 {
17 
18     public static void main(String[] args) throws Exception{
19         Workbook wb=new HSSFWorkbook(); // 定义一个新的工作簿
20         Sheet sheet=wb.createSheet("第一个Sheet页");  // 创建第一个Sheet页
21         
22         Row row=sheet.createRow(0); // 创建一个行
23         
24         Cell cell=row.createCell(0); // 创建一个单元格  第1列
25         cell.setCellValue(new Date());  // 给单元格设置值
26         
27         row.createCell(1).setCellValue(1);
28         row.createCell(2).setCellValue("一个字符串");
29         row.createCell(3).setCellValue(true);
30         row.createCell(4).setCellValue(HSSFCell.CELL_TYPE_NUMERIC);
31         row.createCell(5).setCellValue(false);
32         
33         FileOutputStream fileOut=new FileOutputStream("d:\\工作簿.xls");
34         wb.write(fileOut);
35         fileOut.close();
36     }
37 }

 

 

3,遍历工作簿的行和列并获取单格内容

 

我们遍历这个excel。  

Demo6.java

 

 1 package com.wishwzp.poi;
 2 
 3 import java.io.FileInputStream;
 4 import java.io.InputStream;
 5 
 6 import org.apache.poi.hssf.usermodel.HSSFCell;
 7 import org.apache.poi.hssf.usermodel.HSSFRow;
 8 import org.apache.poi.hssf.usermodel.HSSFSheet;
 9 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
10 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
11 
12 public class Demo6 {
13 
14     public static void main(String[] args) throws Exception{
15         InputStream is=new FileInputStream("d:\\个人名单.xls");
16         POIFSFileSystem fs=new POIFSFileSystem(is);
17         HSSFWorkbook wb=new HSSFWorkbook(fs);
18         
19         HSSFSheet hssfSheet=wb.getSheetAt(0); // 获取第一个Sheet页
20         if(hssfSheet==null){
21             return;
22         }
23         // 遍历行Row
24         for(int rowNum=0;rowNum<=hssfSheet.getLastRowNum();rowNum++){
25             HSSFRow hssfRow=hssfSheet.getRow(rowNum);
26             if(hssfRow==null){
27                 continue;
28             }
29             // 遍历列Cell
30             for(int cellNum=0;cellNum<=hssfRow.getLastCellNum();cellNum++){
31                 HSSFCell hssfCell=hssfRow.getCell(cellNum);
32                 if(hssfCell==null){
33                     continue;
34                 }
35                 System.out.print(" "+getValue(hssfCell));
36             }
37             System.out.println();
38         }
39     }
40     
41     private static String getValue(HSSFCell hssfCell){
42         if(hssfCell.getCellType()==HSSFCell.CELL_TYPE_BOOLEAN){
43             return String.valueOf(hssfCell.getBooleanCellValue());
44         }else if(hssfCell.getCellType()==HSSFCell.CELL_TYPE_NUMERIC){
45             return String.valueOf(hssfCell.getNumericCellValue());
46         }else{
47             return String.valueOf(hssfCell.getStringCellValue());
48         }
49     }
50 }

控制台输出:

这里面是遍历 ,是表单形式。。。

 

4,文本提取

我们文本提取上面个人名单.xls表格。。。

  Demo7.java

 

 1 package com.wishwzp.poi;
 2 
 3 import java.io.FileInputStream;
 4 import java.io.InputStream;
 5 
 6 import org.apache.poi.hssf.extractor.ExcelExtractor;
 7 import org.apache.poi.hssf.usermodel.HSSFCell;
 8 import org.apache.poi.hssf.usermodel.HSSFRow;
 9 import org.apache.poi.hssf.usermodel.HSSFSheet;
10 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
11 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
12 
13 public class Demo7 {
14 
15     public static void main(String[] args) throws Exception{
16         InputStream is=new FileInputStream("d:\\个人名单.xls");
17         POIFSFileSystem fs=new POIFSFileSystem(is);
18         HSSFWorkbook wb=new HSSFWorkbook(fs);
19         
20         ExcelExtractor excelExtractor=new ExcelExtractor(wb);
21         excelExtractor.setIncludeSheetNames(false);// 我们不需要Sheet页的名字
22         System.out.println(excelExtractor.getText());
23     }
24     
25 
26 }

 

控制台显示:

这里面是文本信息。。。

 

excelExtractor.setIncludeSheetNames(false);这个如果为true的话就会显示Sheet页了

excelExtractor.setIncludeSheetNames(true):

控制台输出:

 

posted @ 2016-05-14 23:57  kika  阅读(1642)  评论(0编辑  收藏  举报