POI学习笔记(一)之——Excel文件读取、创建、设置日期格式

本文介绍如何使用Java Apache POI库进行Excel文件的创建、编辑与读取操作,包括单元格赋值、日期格式设置及内容提取等实用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

准备POIjar包:https://pan.baidu.com/s/1szYH3162hJ5f6ZW4Z5h3Ew


创建Excel对象

给单元格存如值:

package com.java1234.poi;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;

public class Demo3 {	
	public static void main(String[] args) throws Exception {
		
		Workbook wb = new HSSFWorkbook();//创建工作簿
		Sheet sheet = wb.createSheet("创建第一个Sheet页");
		Row row = sheet.createRow(0);//创建一个行
		Cell cell = row.createCell(0);//创建一个单元格  第一列
		cell.setCellValue(1);//给单元格设值
		
		row.createCell(1).setCellValue(1.2);//创建一个单元格第二列值是1.2
		row.createCell(2).setCellValue("第一行第三列");//创建一个单元格第三列为字符串
		
		sheet.createRow(2).createCell(4).setCellValue("第三行第五列");
		
		FileOutputStream fileOut = new FileOutputStream("D:\\用POI高出来的单元格.xls");
		wb.write(fileOut);
		fileOut.close();
		System.out.println("创建单元格成功");
	}
}

设置日期格式:

package com.java1234.poi;

import java.io.FileOutputStream;
import java.util.Date;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;

public class Demo5 {
	
	public static void main(String[] args) throws Exception {
		
		Workbook wb = new HSSFWorkbook();//定义一个新工作簿
		Sheet sheet = wb.createSheet("Sheet第一页");//工作簿创建一个sheet页
		Row row = sheet.createRow(0);//创建第一行
		Cell cell = row.createCell(0);
		cell.setCellValue(new Date());
		
		CreationHelper creationHelper = wb.getCreationHelper();
		CellStyle cellStyle = wb.createCellStyle();//新建单元格样式
		cellStyle.setDataFormat(creationHelper.createDataFormat().getFormat("yyyy-MM-dd HH:mm:ss"));//单元格样式模板
		cell.setCellStyle(cellStyle);//设置单元格样式
		
		FileOutputStream fileOut = new FileOutputStream("D:\\测试工作表.xls");
		wb.write(fileOut);
		fileOut.close();
	}
	
}

读取Excel工作表:

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

package com.java1234.poi;

import java.io.FileInputStream;
import java.io.InputStream;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

public class Demo6 {
	
	public static void main(String[] args) throws Exception {
		InputStream is = new FileInputStream("D:\\测试工作表.xls");//创建输入流对象
		POIFSFileSystem fs = new POIFSFileSystem(is);
		HSSFWorkbook wb = new HSSFWorkbook(fs);//创建一个工作簿对象
		HSSFSheet hssfSheet = wb.getSheetAt(0);//获取第一个Sheet页
		if(hssfSheet==null) {
			return;
		}
		//遍历Row
		for(int rowNum=0;rowNum<=hssfSheet.getLastRowNum();rowNum++) {
			HSSFRow hssfRow = hssfSheet.getRow(rowNum);  //获取行
			if(hssfRow == null) {
				continue;
			}
			//遍历列Cell
			for(int cellNum=0;cellNum<=hssfRow.getLastCellNum();cellNum++) {
				HSSFCell hssfCell = hssfRow.getCell(cellNum);//获取列
				if(hssfCell == null) {
					continue;
				}
				System.out.print(" "+getValue(hssfCell));
			}
			System.out.println();
			
		}
		
		is.close();
		
	}
	
	private static String getValue(HSSFCell 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());
		}
	}
	
}

文本提取:

package com.java1234.poi;

import java.io.FileInputStream;
import java.io.InputStream;

import org.apache.poi.hssf.extractor.ExcelExtractor;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

public class Demo7 {
	
	public static void main(String[] args) throws Exception {
		InputStream is = new FileInputStream("D:\\测试工作表.xls");//创建输入流对象
		POIFSFileSystem fs = new POIFSFileSystem(is);
		HSSFWorkbook wb = new HSSFWorkbook(fs);
		
		ExcelExtractor excetExtractor = new ExcelExtractor(wb);
		excetExtractor.setIncludeSheetNames(false);//false:不需要sheet页的名字  true:需要sheet页的内容
		System.out.println(excetExtractor.getText());
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值