poi读写excel数据
public class PoiDoexcel {
/*
* HSSFWorkbook:是操作Excel2003以前(包括2003)的版本,扩展名是.xls
XSSFWorkbook:是操作Excel2007的版本,扩展名是.xlsx
操作2007时要加包:dom4j-1.6.1.jar,stax-api-1.0.1.jar,xmlbeans-2.3.0.jar
* */
@Test
public void doexcelone2003(){
try {
//用HSSF的usermodel读取文件很简单。首先创建一个InputStream,然后创建一个HSSFWorkbook
InputStream inputStream=new FileInputStream("D:/开发资料/poi/test2003.xls");
HSSFWorkbook workbook=new HSSFWorkbook(inputStream);
//读取excel表的行和列
HSSFSheet sheet1=workbook.getSheetAt(0);//获取第一个sheet表
HSSFRow row=sheet1.getRow(1);//获取第三行
HSSFCell cell=row.getCell(3);//第四个单元格
//上面这段代码提取出第一个工作表第三行第四单元格。利用单元格对象可以获得它的值,提取单元格
//的值时请注意它的类型
if(cell.getCellType()==HSSFCell.CELL_TYPE_STRING){
System.out.println("单元格是字符串,值是:"+cell.getStringCellValue());
}else if(cell.getCellType()==HSSFCell.CELL_TYPE_NUMERIC){
System.out.println("单元格是数字,值是:"+cell.getColumnIndex());
}else {
System.out.println("单元格的值不是字符串和数字,值是:"+cell.getDateCellValue());
}
/*Excel内部以数值的形式保存日期数据的
* 对于包含日期数据的单元格,cell.getCellType()将返回HSSFCell.CELL_TYPE_NUMERIC,不
过利用工具函数HSSFDateUtil.isCellDateFormatted(cell)可以判断出单元格的值是否为日期。
* 很多时候isCellDateFormatted函数会返回否定的结论,存在一定的误判可能
* */
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void doexcelone2007(){
try {
//用HSSF的usermodel读取文件很简单。首先创建一个InputStream,然后创建一个HSSFWorkbook
InputStream inputStream=new FileInputStream("D:/开发资料/poi/test2007.xlsx");
XSSFWorkbook workbook=new XSSFWorkbook(inputStream);
//读取excel表的行和列
XSSFSheet sheet1=workbook.getSheetAt(0);//获取第一个sheet表
XSSFRow row=sheet1.getRow(1);//获取第三行
XSSFCell cell=row.getCell(3);//第四个单元格
//上面这段代码提取出第一个工作表第三行第四单元格。利用单元格对象可以获得它的值,提取单元格
//的值时请注意它的类型
if(cell.getCellType()==XSSFCell.CELL_TYPE_STRING){
System.out.println("单元格是字符串,值是:"+cell.getStringCellValue());
}else if(cell.getCellType()==XSSFCell.CELL_TYPE_NUMERIC){
System.out.println("单元格是数字,值是:"+cell.getColumnIndex());
}else {
System.out.println("单元格的值不是字符串和数字,值是:"+cell.getDateCellValue());
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void dowrite2003(){
try {
HSSFWorkbook workbook=new HSSFWorkbook();
//创建工作表及其内容必须从相应的父对象出发
HSSFSheet sheet=workbook.createSheet();
HSSFRow row=sheet.createRow(0);
HSSFCell cell=row.createCell(0);
cell.setCellValue(1);
row.createCell(1).setCellValue(1.888);
row.createCell(2).setCellValue("写入一个字符串");
row.createCell(3).setCellValue(true);
row.createCell(4).setCellValue(new Date().toLocaleString());
//如果要设置单元格的样式,首先要创建一个样式对象
//注意,CellFormat和CellStyle对象是工作簿对象的成员,单元格对象只是引用它们
HSSFCell cell5=row.createCell(5);
HSSFCellStyle style = workbook.createCellStyle();
style.setDataFormat(HSSFDataFormat.getBuiltinFormat("($#,##0_);[Red]($#,##0)"));
//HSSFCellStyle.BIG_SPOTS 马赛克样式 HSSFCellStyle.SOLID_FOREGROUND 填充
style.setFillForegroundColor((short)15);
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
//style.setFillBackgroundColor(HSSFColor.RED.index);
//style.setFillPattern(HSSFCellStyle.BIG_SPOTS);//马赛克样式
//可以指定给多个单元格
cell5.setCellStyle(style);
cell5.setCellValue("摘要文档");
FileOutputStream fileOut=new FileOutputStream("workbook.xls");
workbook.write(fileOut);
fileOut.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}