Apache POI使用详解
POI结构与常用类
1、POI介绍
Apache POI是Apache软件基金会的开源项目,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 .NET的开发人员则可以利用NPOI (POI for .NET) 来存取 Microsoft Office文档的功能。
2、POI结构说明
包名称说明
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格式档案的功能。
3、POI常用类说明
类名 说明
HSSFWorkbook Excel的文档对象
HSSFSheet
Excel的表单
HSSFRow
Excel的行
HSSFCell
Excel的格子单元
HSSFFont Excel字体
HSSFDataFormat 格子单元的日期格式
HSSFHeader Excel文档Sheet的页眉
HSSFFooter Excel文档Sheet的页脚
HSSFCellStyle 格子单元样式
HSSFDateUtil 日期
HSSFPrintSetup 打印
HSSFErrorConstants 错误信息表
Excel的基本操作
java POI 生成 excel 文件写入本地
/** * java 生成 excel 文件写入本地 * */ @RequestMapping(value = "/excel") @ResponseBody public void createExcel(){ //windows和linux的斜杠不一样,而且java对于“/”需要转义处理,File.separator可以跨平台实现 //切记!!!路径后面要写到具体的文件名称,不能只写到文件夹,否则会报拒绝访问 String filePath = "D:"+File.separator+"YiFan"+File.separator+"excel.xls";//文件路径 File file = new File(filePath); try { OutputStream ops = new FileOutputStream(file); //创建excel文件 HSSFWorkbook workbook = new HSSFWorkbook(); //创建excel工作表 HSSFSheet sheet = workbook.createSheet("sheet1"); //为工作表增加一行 HSSFRow row = sheet.createRow(0); //在指定的行上增两个单元格 row.createCell(0).setCellValue("姓名"); row.createCell(1).setCellValue("密码"); //调用输出流把excel文件写入本地磁盘 workbook.write(ops); //关闭输出流 ops.close(); } catch (Exception e) { e.printStackTrace(); } }
java POI 读取本地 excel 文件
/**
* java POI 读取本地excel文件
*
*/
@RequestMapping(value = "/ExcelOperate")
@ResponseBody
public void ExcelOperate(){
String filePath = "D:"+File.separator+"YiFan"+File.separator+"excel.xls";
try{
BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(new File(filePath)));//流读取文件
POIFSFileSystem fileSystem = new POIFSFileSystem(bufferedInputStream);//采用POIFSFileSystem 进行解析
//读取excel文件
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(fileSystem);
//根据名称获取指定的excel工作薄
HSSFSheet sheet = hssfWorkbook.getSheet("sheet1");
String fileName = hssfWorkbook.getSheetName(0);//返回读取文件名称
int last = sheet.getLastRowNum();//获取最后一行的值,去除空格
int first = sheet.getFirstRowNum();
List<String> list = new ArrayList<>();
//遍历获取数据
for (int i =0;i<=last;i++){
HSSFRow row = sheet.getRow(i);//获取i行
int cell = row.getLastCellNum();//获取i行中的列数
for(int j =0;j<cell;j++){
String value = row.getCell(j).getStringCellValue();
list.add(value);
}
bufferedInputStream.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
2019.04.11 落笔