poi对Excel的导入导出简单案例,供参考
首先需要导入下面所依赖的JAR包:
poi-3.14-20160307.jar
poi-ooxml-3.14-20160307.jar
poi-ooxml-schemas-3.14-20160307.jar
xmlbeans-2.6.0.jar
**这是Maven导入配置**
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.11</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.11</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.11</version>
</dependency>
下面就开始吧,实现代码如下
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
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;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
/**
* 导入和导出Excel文件类
* 支持2003(xls)和2007(xlsx)版本的Excel文件
* @author ZhouMengShun
*/
public class ExcelUtil {
/**
* 导入Excel
* @param execelFile 表示Excel文件路径
*/
public void impExcel(String execelFile){
try {
Workbook book = null;//构造 Workbook对象
try {
//Excel 2007获取方法
book=new XSSFWorkbook(new FileInputStream(execelFile));
} catch(Exception ex){
//Excel 2003获取方法
book=new HSSFWorkbook(new FileInputStream(execelFile));
}
//读取表格的第一个sheet页
Sheet sheet = book.getSheetAt(0);
int totalRows=sheet.getLastRowNum();//获取总行数,从0开始
//循环输出表格中的内容,首先循环取出行,再根据行循环取出列 (第一行索引是0,从1开始读的话可以去掉头部)
for (int i = 0; i <= totalRows; i++) {
Row row = sheet.getRow(i);//获取行
if(row == null){//处理空行
continue ;
}
int totalCells=row.getLastCellNum();//总共有多少列,从0开始
for (int j = row.getFirstCellNum(); j < totalCells; j++) {
if(row.getCell(j)==null){//处理空列
continue ;
}
//调用getStringCellValue方法转换列内容格式
//如只需要字符格式,可通过 row.getCell(j).toString()获取单元格内容
String cell=getStringCellValue(row.getCell((short)j)).trim();
System.out.print(cell + "\t");
}
System.out.println("");
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 转换单元格内容,这里返回字符串
* @param cell Excel 单元格
* @return String 返回单元格数据内容
*/
public String getStringCellValue(Cell cell) {
if (cell==null){//列为空
return null;
}
String strCell = "";
switch(cell.getCellType()){
case HSSFCell.CELL_TYPE_STRING://字符串类型
//也可通过cell.toString()获取单元格内容
strCell = cell.getStringCellValue();
break;
case HSSFCell.CELL_TYPE_NUMERIC://数字类型
// 判断当前的cell是否为Date,如果是Date类型则,转化为Data格式
if (HSSFDateUtil.isCellDateFormatted(cell)) {
//方法1:这样子的data格式是带时分秒的:2011-10-12 0:00:00
//strCell=cell.getDateCellValue().toLocaleString();
//方法2:这样子的data格式是不带带时分秒的:2011-10-12
Date date = cell.getDateCellValue();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
strCell = sdf.format(date);
}else{//如果是纯数字
strCell=String.valueOf(cell.getNumericCellValue());//取得当前Cell的数值
}
break;
case HSSFCell.CELL_TYPE_BOOLEAN://布尔(boolean)类型
strCell = String.valueOf(cell.getBooleanCellValue());
break;
case HSSFCell.CELL_TYPE_BLANK://为空类型
strCell = "";
break;
default:
strCell = "";
break;
}
return strCell;
}
/**
* 导出Excel
* @param expFilePath 表示Excel文件路径
*/
public void expExcel(String expFilePath){
OutputStream os=null;
Workbook book=null;
try {
os = new FileOutputStream(expFilePath);//创建输出流
book = new HSSFWorkbook();//创建工作区(97-2003)
Sheet sheet= book.createSheet("test");//创建第一个sheet页
//========= 创建行数据开始 ,多行数据该处可以用循环创建===============
//创建行 ,0表示第一行,以此类推
Row row = sheet.createRow(0);
//给第一行的第一列赋值,0表示第一列,以此类推
row.createCell(0).setCellValue("第一列");
//给第一行的第二列赋值,0表示第一列,以此类推
row.createCell(1).setCellValue("第二列");
//给第一行的第三列赋值,0表示第一列,以此类推
row.createCell(2).setCellValue("第三列");
//================ 创建行数据结束 ========================
book.write(os);//写文件
}catch(Exception e){
e.printStackTrace();
}finally {
try {
os.close();//关闭输出流
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
//导入Excel 2007
//new ExcelUtil().impExcel("E:/input.xlsx");
//导入Excel 2003
new ExcelUtil().impExcel("E:/input.xls");
//导出Excel
//new ExcelUtil().expExcel("E:/outPut.xls");
}
}