POI开发:Java中的Excel相关操作
一、Apache POI
1、简介:
Apache POI支持大多数中小规模的应用程序开发,提供API给Java程序对Microsoft Office格式档案读和写的功能,呈现和文本提取是它的主要特点。
2、结构:
HSSF:
提供读写Microsoft Excel XLS格式档案的功能。
XSSF:
提供读写Microsoft Excel OOXML XLSX格式档案的功能。
HWPF:
提供读写Microsoft Word DOC格式档案的功能。
HSLF:
提供读写Microsoft PowerPoint PPT格式档案的功能。
HDGF:
提供读Microsoft Visio格式档案的功能。
HPBF:
提供读Microsoft Publisher格式档案的功能。
HSMF:
提供读Microsoft Outlook格式档案的功能。
二、环境配置
1、java环境搭建
(1)、安装:
下载java并进行安装(详细步骤略)
(2)、环境变量配置:
控制面板-》系统和安全-》系统-》高级系统设置-》环境变量:
配置变量如下:
JAVA_HOME:
jdk存放路径。
CLASSPATH:
PATH:
向后添加一行:
(3)、配置完成
2、在eclipse中导入POI包:
(1)、下载POI:
POI下载地址:http://poi.apache.org/download.html
文件目录结构:
(2)、导入POI:
将所需jar包放入lib中:
Build Path-》Configure Build Path...
三、示例代码:
1、创建新的工作簿:
package com.gb.test; import java.io.*; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class create { public static void main(String[] args) throws Exception { //新建工作簿 XSSFWorkbook newExcel = new XSSFWorkbook();
//新建流 FileOutputStream out = new FileOutputStream(new File("newExcel.xlsx"));//写入 newExcel.write(out); out.close(); System.out.println("创建成功"); } }
运行截图:
此时新建的工作簿是空的,无法打开,需要新建电子表。
2、新建电子表
package com.gb.test; import java.io.*; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class create { public static void main(String[] args) throws Exception { //新建工作簿 XSSFWorkbook newExcel = new XSSFWorkbook(); //新建流 FileOutputStream out = new FileOutputStream(new File("newExcel.xlsx"));
//新建电子表 Sheet sheet = newExcel.createSheet("sheet1");
//写入 newExcel.write(out); out.close(); System.out.println("电子表创建成功"); } }
运行截图:
3、新建行
package com.gb.test; import java.io.*; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class create { public static void main(String[] args) throws Exception { //新建工作簿 XSSFWorkbook newExcel = new XSSFWorkbook(); //新建流 FileOutputStream out = new FileOutputStream(new File("newExcel.xlsx")); //新建电子表 Sheet sheet = newExcel.createSheet("sheet1");
//新建行 Row row = sheet.createRow(0); //第1个单元格赋值为"test" row.createCell(0).setCellValue("test");
//写入 newExcel.write(out); out.close(); System.out.println("数据添加成功"); } }
运行截图:
创建单元格:
Cell cell = row.createCell(0);
4、文件内容读取
package com.gb.test; import java.io.*; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class read { public static void main(String[] args) throws Exception { //新建流 FileInputStream in = new FileInputStream(new File("newExcel.xlsx")); //工作簿 XSSFWorkbook newExcel = new XSSFWorkbook(in); //新建电子表 Sheet sheet = newExcel.getSheetAt(0); //新建行 Row row = sheet.getRow(0); String test=row.getCell(0).toString(); in.close(); System.out.println("数据读取成功"); System.out.println(test); } }
运行截图:
5、修改单元格样式
package com.gb.test; import java.io.*; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.*; public class style { public static void main(String[] args) throws Exception { //新建流 FileInputStream in = new FileInputStream(new File("newExcel.xlsx")); //工作簿 XSSFWorkbook newExcel = new XSSFWorkbook(in); //获取第一个电子表 Sheet sheet = newExcel.getSheetAt(0); //获取第一行 Row row = sheet.getRow(0); //获取第一个单元格 Cell cell=row.getCell(0);
//新建样式 XSSFFont font=newExcel.createFont(); //设置字体 font.setFontName("宋体"); //设置字体大小 font.setFontHeightInPoints((short) 16); //粗体显示 //设置单元格样式 XSSFCellStyle style = newExcel.createCellStyle(); style.setFont(font); cell.setCellStyle(style);
//新建流 FileOutputStream out = new FileOutputStream(new File("newExcel.xlsx")); //写入 newExcel.write(out); out.close(); System.out.println("样式设置成功"); } }
运行截图:
文字方向:
style.setRotation((short) 90);
从左向右为x轴,逆时针旋转的度数则为文字旋转度数。
四、可能出现的错误:
1、java.lang.NoClassDefFoundError: org/apache/commons/collections4/ListValuedMap这一类的错误。
错误原因:
缺乏需要的jar包,必要的jar没有导全。