POI操作Excel(二)

时间:2023-03-08 20:10:24

注意:HSSFWorkBook对应2003版Excel      XSSFWorkBook对应2007以上的Excel

一.创建时间单元格

public void helloPoi3() throws Exception {
Workbook wb = new HSSFWorkbook(); // 定义一个新的工作簿
Sheet sheet = wb.createSheet("第一个Sheet页"); // 创建第一个Sheet页
Row row = sheet.createRow(0); // 创建一个行
Cell cell = row.createCell(0); // 创建一个单元格 第1列
cell.setCellValue(new Date()); // 给单元格设置值
// 第一种
CreationHelper createHelper = wb.getCreationHelper();
CellStyle cellStyle = wb.createCellStyle(); // 单元格样式类
cellStyle.setDataFormat(createHelper.createDataFormat().getFormat(
"yyy-mm-dd hh:mm:ss"));
cell = row.createCell(1); // 第二列
cell.setCellValue(new Date());
cell.setCellStyle(cellStyle);
// 第二种
cell = row.createCell(2); // 第三列
cell.setCellValue(Calendar.getInstance());
cell.setCellStyle(cellStyle); FileOutputStream fileOut = new FileOutputStream("F:\\工作簿.xls");
wb.write(fileOut);
fileOut.close();
}

  二.处理不同格式数据

	@Test
public void helloPoi4() throws Exception {
Workbook wb = new HSSFWorkbook(); // 定义一个新的工作簿
Sheet sheet = wb.createSheet("第一个Sheet页"); // 创建第一个Sheet页
Row row = sheet.createRow(0); // 创建一个行
Cell cell = row.createCell(0); // 创建一个单元格 第1列
cell.setCellValue(new Date()); // 给单元格设置值 row.createCell(1).setCellValue(1);
row.createCell(2).setCellValue("一个字符串");
row.createCell(3).setCellValue(true);
row.createCell(4).setCellValue(HSSFCell.CELL_TYPE_NUMERIC);
row.createCell(5).setCellValue(false); FileOutputStream fileOut = new FileOutputStream("F:\\工作簿1.xls");
wb.write(fileOut);
fileOut.close();
}

三.遍历excel  的sheet

	@Test
public void helloPoi5() throws Exception {
XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream("F:\\开发任务.xlsx"));
XSSFSheet hssSheet = wb.getSheetAt(0);
if (hssSheet == null) {
return;
}
// 遍历行
for (int rowNum = 0; rowNum <= hssSheet.getLastRowNum(); rowNum++) {
XSSFRow hssRow = hssSheet.getRow(rowNum);
if (hssRow == null) {
continue;
}
//遍历列
for (int cellNum = 0; cellNum <= hssRow.getLastCellNum(); cellNum++) {
XSSFCell hssCell = hssRow.getCell(cellNum);
if (hssCell == null) {
continue;
}
System.out.print(" " + getValue(hssCell));
}
System.out.println();
}
}
private static String getValue(XSSFCell hssfCell){
if(hssfCell.getCellType()==HSSFCell.CELL_TYPE_BOOLEAN){
return String.valueOf(hssfCell.getBooleanCellValue());
}else if(hssfCell.getCellType()==HSSFCell.CELL_TYPE_NUMERIC){
return String.valueOf(hssfCell.getNumericCellValue());
}else{
return String.valueOf(hssfCell.getStringCellValue());
}
}

  四.获取excel内的文本信息

@Test
public void helloPoi6()throws Exception{
InputStream is=new FileInputStream("F:\\工作簿1.xls");
POIFSFileSystem fs=new POIFSFileSystem(is);
HSSFWorkbook wb=new HSSFWorkbook(fs);
ExcelExtractor excelExtractor=new ExcelExtractor(wb);
excelExtractor.setIncludeSheetNames(false);// 我们不需要Sheet页的名字
System.out.println(excelExtractor.getText());
}