Java POI 操作Excel:单元格与表格绘制

需积分: 10 3 下载量 57 浏览量 更新于2024-07-20 收藏 3MB DOCX 举报
"java_poi操作excel" Apache POI 是一个流行的开源库,允许Java开发者读取、写入和操作Microsoft Office格式的文件,包括Excel。本篇内容将深入讲解如何使用POI进行Excel的基本操作,如单元格操作、画线、矩形、圆形以及表格的处理。 1. POI 结构与常用类 Apache POI 提供了多个包来处理不同的Office格式。主要关注的是处理Excel的部分: - HSSF:用于读写旧版的Microsoft Excel (XLS) 文件。 - XSSF:用于读写新式的OOXML Excel (XLSX) 文件。 在这些包中,以下是一些核心类: - HSSFWorkbook:代表Excel工作簿对象,是Excel文件的顶级容器。 - HSSFSheet:表示Excel中的工作表。 - HSSFRow:代表工作表中的行。 - HSSFCell:表示单元格,存储数据。 - HSSFFont:用于定义单元格的字体属性。 - HSSFDataFormat:定义单元格的日期或其他格式。 - HSSFHeader和HSSFFooter:分别用于设置页眉和页脚。 - HSSFCellStyle:管理单元格的样式,如对齐、边框、填充等。 - HSSFDateUtil:帮助转换日期值。 - HSSFPrintSetup:设置打印属性。 - HSSFErrorConstants:包含Excel错误代码的常量。 2. Excel的基本操作 创建一个简单的Excel文件涉及以下步骤: ```java public class Test00 { public static void main(String[] args) throws IOException { String filePath = "d://users//lizw//桌面//POI//sample.xls"; HSSFWorkbook workbook = new HSSFWorkbook(); // 创建Excel文件 HSSFSheet sheet = workbook.createSheet(); // 创建工作表 // 在工作表上添加数据 HSSFRow row = sheet.createRow(0); // 创建第一行 HSSFCell cell = row.createCell(0); // 创建第一列的单元格 cell.setCellValue("Hello, POI!"); // 设置单元格内容 // 保存到文件 FileOutputStream out = new FileOutputStream(filePath); workbook.write(out); out.close(); } } ``` 3. 单元格操作 除了创建和设置单元格内容外,还可以进行更多的操作,例如: - 改变单元格类型(数值、字符串、日期等)。 - 设置单元格的样式,如字体颜色、背景色、边框等。 - 使用HSSFDataFormat创建自定义的日期或数字格式。 4. 画图和形状 在Excel中添加图形元素需要使用XSSFShape接口和相关的实现类,例如: - 添加直线: ```java XSSFClientAnchor anchor = ...; // 定义锚点 XSSFPictureData pictureData = ...; // 加载图片资源 XSSFSimpleShape line = drawing.createSimpleShape(new XSSFPictureShape(pictureData)); line.setShapeType(ShapeTypes.LINE); ``` - 添加矩形和圆形: ```java XSSFClientAnchor anchor = ...; XSSFPictureData pictureData = ...; // 可以为空,因为矩形和圆形不需要图片资源 XSSFSimpleShape shape = drawing.createSimpleShape(new XSSFSimpleShape(anchor)); shape.setShapeType(ShapeTypes.RECTANGLE); // 矩形 shape.setShapeType(ShapeTypes.CIRCLE); // 圆形 ``` 5. 表格操作 - 创建表格: ```java HSSFTable table = sheet.createTable(); HSSFTableStyleInfo style = new HSSFTableStyleInfo(); style.setName("MyTableStyle"); table.setStyleInfo(style); ``` - 添加数据: ```java table.appendRow(row); ``` - 设置表格范围: ```java table.setStartCol(0); table.setEndCol(2); table.setStartRow(0); table.setEndRow(5); ``` 6. 行列操作 - 插入/删除行和列: ```java sheet.shiftRows(startRow, endRow, n); // 向下移动行 sheet.removeRow(row); // 删除行 sheet.setColumnWidth(columnIndex, widthInUnits); // 设置列宽 ``` 通过Apache POI,Java开发者能够实现对Excel文件的强大控制,无论是读取现有数据还是创建新的电子表格,甚至添加复杂的格式和图形。这个库提供了丰富的API,使得在Java中处理Excel变得非常灵活和高效。