POI-入门(Maven)
2020-04-22 08:40
1381 查看
POI入门操作
1. 搭建环境
<dependencies> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.0.1</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.0.1</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>4.0.1</version> </dependency> </dependencies>
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. API介绍
API名称 | 介绍 |
---|---|
Workbook | Excel的文档对象,针对不同的Excel类型分为:HSSFWorkbook(2003)和XSSFWorkbool(2007) |
Sheet | Excel的表单 |
Row | Excel的行 |
Cell | Excel的格子单元 |
Font | Excel字体 |
CellStyle | 格子单元样式 |
4. 基本操作
4.1 创建Excel
import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileOutputStream; import java.io.IOException; /** * 使用POI创建excel */ public class PoiTest01 { public static void main(String[] args) throws IOException { // 1. 创建工作簿 XSSFWorkbook 2003 xss 2007 Workbook wb = new XSSFWorkbook(); // 2. 创建表单sheet wb.createSheet("test"); // 3. 文件流 FileOutputStream pis =new FileOutputStream("C:\\Users\\asus\\Desktop\\poi\\test.xlsx"); // 4. 写入文件 wb.write(pis); pis.close(); } }
4.2 创建单元格
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; import java.io.FileOutputStream; import java.io.IOException; /** * 创建单元格写入内容 */ public class PoiTest02 { public static void main(String[] args) throws IOException { // 1. 创建工作簿 XSSFWorkbook 2003 xss 2007 Workbook wb = new XSSFWorkbook(); // 2. 创建表单sheet Sheet sheet = wb.createSheet("test"); // 创建行对象 参数: 索引(从0开始) Row row = sheet.createRow(2); // 创建单元格对象 Cell cell = row.createCell(2); // 向单元格中写入内容 // 3. 文件流 cell.setCellValue("tian"); FileOutputStream pis =new FileOutputStream("C:\\Users\\asus\\Desktop\\poi\\test1.xlsx"); // 4. 写入文件 wb.write(pis); pis.close(); } }
4.3 设置格式
import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileOutputStream; import java.io.IOException; /** * 单元格样式处理 */ public class PoiTest03 { public static void main(String[] args) throws IOException { // 1. 创建工作簿 XSSFWorkbook 2003 xss 2007 Workbook wb = new XSSFWorkbook(); // 2. 创建表单sheet Sheet sheet = wb.createSheet("test"); // 创建行对象 参数: 索引(从0开始) Row row = sheet.createRow(2); // 创建单元格对象 Cell cell = row.createCell(2); // 向单元格中写入内容 // 3. 文件流 cell.setCellValue("tian"); // 样式处理 // 创建样式对象 CellStyle cellStyle = wb.createCellStyle(); cellStyle.setBorderTop(BorderStyle.THIN);// 上边框 cellStyle.setBorderLeft(BorderStyle.THIN); cellStyle.setBorderBottom(BorderStyle.THIN); cellStyle.setBorderRight(BorderStyle.THIN); // 创建字体对象 Font font = wb.createFont(); font.setFontName("华文行楷"); // 字体 font.setFontHeightInPoints((short)28); // 字号 cellStyle.setFont(font); // 行高和列宽 row.setHeightInPoints(50);// 行高 sheet.setColumnWidth(2,31*256);//列宽 列宽的宽度为字符的宽度 // 居中显示 cellStyle.setAlignment(HorizontalAlignment.CENTER); // 水平居中 cellStyle.setVerticalAlignment(VerticalAlignment.CENTER); // 垂直居中 // 向单元格设置样式 cell.setCellStyle(cellStyle); FileOutputStream pis =new FileOutputStream("C:\\Users\\asus\\Desktop\\poi\\test2.xlsx"); // 4. 写入文件 wb.write(pis); pis.close(); } }
4.4 绘制图形
import org.apache.poi.ss.usermodel.*; import org.apache.poi.util.IOUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; /** * 插入图片 */ public class PoiTest04 { public static void main(String[] args) throws IOException { // 1. 创建工作簿 XSSFWorkbook 2003 xss 2007 Workbook wb = new XSSFWorkbook(); // 2. 创建表单sheet Sheet sheet = wb.createSheet("test"); // 读取图片流 FileInputStream stream = new FileInputStream("C:\\Users\\asus\\Desktop\\poi\\fenxi.jpg"); // 图片转换为二进制数组 byte[] bytes = IOUtils.toByteArray(stream); stream.read(bytes); // 向poi内存中添加一张图片,返回图片在图片集合中的索引 int index = wb.addPicture(bytes, Workbook.PICTURE_TYPE_JPEG);// 参数一: 图片的二进制数据,参数二: 图片类型 // 绘制图片工具类 CreationHelper creationHelper = wb.getCreationHelper(); // 创建一个绘图对象 Drawing<?> drawingPatriarch = sheet.createDrawingPatriarch(); // 创建锚点,设置图片坐标 ClientAnchor clientAnchor = creationHelper.createClientAnchor(); clientAnchor.setRow1(0);// 从第几行开始 clientAnchor.setCol1(0);// 第几个单元格 // 绘制图片 Picture picture = drawingPatriarch.createPicture(clientAnchor, index);// 图片位置,图片的索引 picture.resize();// 自适应渲染图片 FileOutputStream pis =new FileOutputStream("C:\\Users\\asus\\Desktop\\poi\\test3.xlsx"); // 4. 写入文件 wb.write(pis); pis.close(); } }
4.5 加载读取Excel
import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.IOException; /** * 读取excel并解析 */ public class PoiTest05 { public static void main(String[] args) throws IOException { // 1.根据Excel文件创建工作簿 Workbook wb = new XSSFWorkbook("C:\\Users\\asus\\Desktop\\poi\\demo.xlsx"); // 2. 获取Sheet Sheet sheet = wb.getSheetAt(0);// 参数, 索引 // 3. 获取Sheet中的每一行,和每一个单元格中的内容 for (int rowNum = 0; rowNum<=sheet.getLastRowNum();++rowNum) { Row row = sheet.getRow(rowNum);// 根据索引拿到每一行 StringBuilder sb = new StringBuilder(); for(int cellNum = 2; cellNum<row.getLastCellNum();++cellNum){ // 根据索引获取每一个单元格 Cell cell = row.getCell(cellNum); // 获取每一个单元格的内容 Object value = getCellValue(cell); sb.append(value).append("-"); // } System.out.println(sb.toString()); } } public static Object getCellValue(Cell cell){ // 1. 获取到单元格 的数据类型 CellType cellType = cell.getCellType(); // 2. 根据单元格数据类型获取数据 Object value = null; switch (cellType){ case STRING: // 字符串类型 value= cell.getStringCellValue(); break; case BOOLEAN:// boolean类型 value=cell.getBooleanCellValue(); break; case NUMERIC:// 数字类型(包含日期和普通数字) // 日期: if(DateUtil.isCellDateFormatted(cell)){ value = cell.getDateCellValue(); }else{ // 数字 value= cell.getNumericCellValue(); } break; case FORMULA: // 公式类型 value= cell.getCellFormula(); break; default: break; } return value; } }
- 点赞 3
- 收藏
- 分享
- 文章举报
相关文章推荐
- Maven实战——Maven入门
- Maven入门-1.介绍及搭建开发环境
- 使用IntelliJ IDEA 配置Maven(入门)
- maven 入门
- Apache Maven 入门篇(下)
- Maven——快速入门手册(学习记录) ****
- Apache Maven 入门篇(下)
- Maven 3 入门 -- 核心概念
- Maven3.x 插件开发入门
- Maven实战——Maven入门
- Maven 入门总结
- Maven入门示例(2):调试helloworld webapp程序
- maven入门教程
- maven3实战之maven使用入门
- maven 教程一 入门
- Maven 入门教程(一)
- Apache Maven入门篇(上)
- Maven学习总结(一)——Maven入门
- 读书笔记:maven入门-聚合与继承
- Spring入门学习(一)带热部署的maven的HelloWorld