POI :
一、简介:
Apache POI使用Java编写的免费开源的跨平台的Java API,Apache POI提供API给Java程序对
Microsoft office格式档案读和写的功能。POI为“Poor Obfuscation Implementation” 的首字母缩写,意为
“可怜的模糊实现”。
Apache POI是创建和维护操作各种符合Office Open XML (OOXML)标准和微软的OLE2复合
文档格式(OLE2)的Java API。用它可以使用Java读取和创建,修改MS Excel文件。而且,还可以使
用Java读取和创建MS Word和MSPowerPoint文件。Apache POI 提供Java操作ExceI解决方案(适用于
Excel97-2008)。
二、结构:
HSSF - 提供读写Microsoft Excel XLS格式档案的功能。
XSSF - 提供读写Microsoft Excel OOXML XLSX格式档案的功能。
HWPF - 提供读写Microsoft Word DOC 格式档案的功能。
HSLF - 提供读写Microsoft PowerPoint格式档案的功能。
HDGF - 提供读Microsoft Visio格式档案的功能。
HPBF - 提供读Microsoft Publisher格式档案的功能。
HSMF - 提供读Microsoft Outlook格式档案的功能。
三、应用:
1、所需jar包
2、将Excel数据导入到数据库
/**
* @author:jianzhoulee
* @date : 2016-8-18
* @功能: Excel数据导入到数据库
*/
@RequestMapping("upload")
public String upload(HttpServletRequest request, Student student) throws Exception{
//上传文件
MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) request;
//获取文件
MultipartFile file = mRequest.getFile("file");
//获取文件名
String filename = file.getOriginalFilename();
System.out.println(filename);
//上传到服务器的路径
String path = request.getSession().getServletContext().getRealPath("") + "\\upload\\";
//上传
file.transferTo(new File(path+filename));
FileInputStream inputStream = new FileInputStream(new File(path+filename));
//开始导入文件 创建一个workbook
XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
//创建单元行
XSSFSheet sheetAt = workbook.getSheetAt(0);
//循环添加数据
for (Row row : sheetAt) {
if(row.getRowNum()>=1){
student.setId(Double.valueOf(row.getCell(0).toString()));
student.setName(row.getCell(1).toString());
student.setSex(row.getCell(2).toString());
student.setAge(Double.valueOf(row.getCell(3).toString()));
student.setAddr(row.getCell(4).toString());
studentservice.save(student);
}
}
//关闭流
inputStream.close();
//重定向
return "redirect:studentList.action";
}
3、将数据库中的数据导出到Excel
/**
* @author:jianzhoulee
* @date : 2016-8-18
* @功能: 将数据库的数据导出到Excel
*/
@RequestMapping("download")
public String download() throws IOException{
//创建workbook
XSSFWorkbook workbook = new XSSFWorkbook();
//创建sheet
XSSFSheet sheet = workbook.createSheet("student");
//创建行
XSSFRow row = sheet.createRow(0);
//给第一行单元格添加标题
row.createCell(0).setCellValue("编号 ");
row.createCell(1).setCellValue("姓名 ");
row.createCell(2).setCellValue("性别 ");
row.createCell(3).setCellValue("年龄 ");
row.createCell(4).setCellValue("地址 ");
//获得数据库中的所有数据
List<Student> studentList = studentservice.studentList();
//定义一个变量
int i = 1;
//循环遍历从数据库得到的数据
for (Student student : studentList) {
//创建单元行 从第二行开始
row = sheet.createRow(i);
//为每个单元格赋值
row.createCell(0).setCellValue(student.getId());
row.createCell(1).setCellValue(student.getName());
row.createCell(2).setCellValue(student.getSex());
row.createCell(3).setCellValue(student.getAge());
row.createCell(4).setCellValue(student.getAddr());
i++;
}
//导出的文件路径
FileOutputStream outputStream = new FileOutputStream
("C:/Users/lcf/Desktop /student.xls");
//导出完成
workbook.write(outputStream);
//关闭流
outputStream.close();
System.out.println("ok");
return "redirect:studentList.action";
}
}