POI操作Excel(二)

注意: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());
	  }

  

原文地址:https://www.cnblogs.com/goxcheer/p/8671147.html