(二)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):
控制台输出: