### POI操作Excel知识点详解 #### 一、概述 Apache POI是一个流行的Java库,用于处理Microsoft Office格式的文件,包括Excel(`.xls`和`.xlsx`)。本篇将详细介绍如何利用Apache POI 3.7版本进行Excel文件的操作,包括读取数据、写入数据以及格式设置等核心功能。 #### 二、读取Excel数据 ##### 2.1 读取Excel文件中的数据 在使用Apache POI读取Excel文件时,首先需要加载文件并获取工作簿对象(`HSSFWorkbook`),然后可以通过索引或名称获取工作表对象(`HSSFSheet`)。接着遍历每一行(`HSSFRow`)和每个单元格(`HSSFCell`)来获取数据。 **代码示例:** ```java File file = new File("path/to/file.xls"); // 指定文件路径 FileInputStream fis = new FileInputStream(file); HSSFWorkbook workbook = new HSSFWorkbook(fis); // 创建工作簿对象 HSSFSheet sheet = workbook.getSheetAt(0); // 获取第一个工作表 for (int i = 0; i <= sheet.getLastRowNum(); i++) { // 遍历所有行 HSSFRow row = sheet.getRow(i); // 获取当前行 for (int j = 0; j < row.getLastCellNum(); j++) { // 遍历当前行的所有单元格 HSSFCell cell = row.getCell(j, Row.MissingCellPolicy.RETURN_BLANK_AS_NULL); // 获取单元格 if (cell != null) { switch (cell.getCellType()) { case STRING: String value = cell.getStringCellValue(); // 对value进行处理... break; case NUMERIC: double numericValue = cell.getNumericCellValue(); // 处理numericValue... break; default: // 其他类型... break; } } } } ``` **注意事项:** - 在遍历单元格时,使用`Row.MissingCellPolicy.RETURN_BLANK_AS_NULL`可以避免因空单元格导致的异常。 - 单元格类型判断使用`getCellType()`方法。 #### 三、写入Excel数据 ##### 3.1 写入Excel文件中的数据 写入Excel文件的过程与读取相反,首先是创建一个空的工作簿对象,然后创建工作表,并设置工作表名称。接着向工作表中添加行和单元格,并设置单元格的值。 **代码示例:** ```java HSSFWorkbook workbook = new HSSFWorkbook(); // 创建工作簿 HSSFSheet sheet = workbook.createSheet("Sheet1"); // 创建工作表 // 写入数据 String[] data = {"01", "02", "03"}; for (int i = 0; i < data.length; i++) { HSSFRow row = sheet.createRow(i); // 创建行 for (int j = 0; j < data.length; j++) { HSSFCell cell = row.createCell(j); // 创建单元格 cell.setCellValue(data[j]); // 设置单元格值 } } // 输出到文件 FileOutputStream fileOut = new FileOutputStream("path/to/output.xls"); workbook.write(fileOut); fileOut.close(); ``` **注意事项:** - 使用`createSheet(String sheetName)`方法创建工作表,并通过`setSheetName(int index, String name)`设置工作表名称。 - 保存文件前确保关闭`FileOutputStream`。 #### 四、格式设置 ##### 4.1 设置单元格格式 POI提供了丰富的单元格样式设置功能,如设置字体、边框、填充颜色、对齐方式等。这里主要介绍日期格式和数字格式的设置。 **设置日期格式:** ```java HSSFCellStyle cellStyle = workbook.createCellStyle(); cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm")); HSSFCell cell = row.createCell(1); cell.setCellValue(new Date()); cell.setCellStyle(cellStyle); ``` **设置数字格式:** ```java HSSFCellStyle cellStyle = workbook.createCellStyle(); cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("#,##0.00")); HSSFCell cell = row.createCell(1); cell.setCellValue(1000000); cell.setCellStyle(cellStyle); ``` **设置对齐方式:** ```java HSSFCellStyle cellStyle = workbook.createCellStyle(); cellStyle.setAlignment(HorizontalAlignment.CENTER); // 水平居中 cellStyle.setVerticalAlignment(VerticalAlignment.CENTER); // 垂直居中 HSSFCell cell = row.createCell(1); cell.setCellStyle(cellStyle); ``` #### 五、其他注意事项 - 循环变量i,j,在早期版本的POI中要求为short类型,但随着版本更新,现代版本支持int类型。 - 为了防止中文乱码问题,早期版本的POI需要手动设置单元格编码格式(如`setEncoding(HSSFCell.ENCODING_UTF_16)`),但在新版中已自动实现此功能。 通过以上介绍,我们可以看到Apache POI 3.7在处理Excel文件时的强大功能,不仅能够方便地读写数据,还能灵活地设置各种格式。这使得它成为Java开发者处理Excel文件的首选工具之一。
- 粉丝: 1
- 资源: 11
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 塑料检测23-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- Python圣诞节倒计时与节日活动管理系统
- 数据结构之哈希查找方法
- 系统DLL文件修复工具
- 塑料、玻璃、金属、纸张、木材检测36-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- Python新年庆典倒计时与节日活动智能管理助手
- Nosql期末复习资料
- 数据结构排序算法:插入排序、希尔排序、冒泡排序及快速排序算法
- 2011-2024年各省数字普惠金融指数数据.zip
- 计算机程序设计员三级(选择题)