easyexcel3.1.1版本设置图片居中展示
时间: 2025-03-29 19:10:35 浏览: 79
在 EasyExcel 3.1.1 版本中,设置图片居中展示并不是直接通过内置功能完成的,而是需要借助自定义样式以及对 Excel 单元格的操作来实现。
以下是具体的步骤:
### 步骤一:添加依赖
首先确保项目已经引入了 EasyExcel 的 Maven 或 Gradle 依赖。例如,在 `pom.xml` 中:
```xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.1.1</version>
</dependency>
```
---
### 步骤二:插入图片并设置单元格属性
EasyExcel 提供了一个接口叫做 `WriteHandler`,可以用于处理一些复杂的场景(如插入图片、调整样式等)。你可以利用这个接口来自定义图片位置,并将它放在单元格中心。
示例代码如下:
```java
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.write.handler.WriteHandler;
public class ExcelWithImage {
public static void main(String[] args) {
String fileName = "example_with_image.xlsx";
// 创建文件流或指定路径
EasyExcel.write(fileName)
.registerWriteHandler(new ImageAndAlignHandler()) // 注册处理器
.sheet("Sheet with image")
.doWrite(data()); // 写入数据
}
private static List<List<String>> data() {
List<List<String>> list = new ArrayList<>();
for (int i = 0; i < 5; i++) {
List<String> row = new ArrayList<>();
row.add("测试" + i);
if (i == 2) { // 假设第3行有图片
row.add("[IMAGE]");
} else {
row.add("");
}
list.add(row);
}
return list;
}
}
// 自定义 WriteHandler 来控制图片和对齐方式
class ImageAndAlignHandler implements WriteHandler {
@Override
public void sheet(int sheetNo, Sheet sheet) {}
@Override
public void table(int tableIndex, Table table) {}
@Override
public void cell(CellData cellData, Cell cell, Boolean isHead) {
Workbook workbook = cell.getSheet().getWorkbook();
Drawing<?> patriarch = cell.getSheet().createDrawingPatriarch();
// 如果该列包含"[IMAGE]"标记,则插入图片
if ("[IMAGE]".equals(cell.getStringCellValue())) {
try {
InputStream inputStream = new FileInputStream("/path/to/image.png");
byte[] bytes = IOUtils.toByteArray(inputStream);
int pictureIdx = workbook.addPicture(bytes, Workbook.PICTURE_TYPE_PNG);
CreationHelper helper = workbook.getCreationHelper();
ClientAnchor anchor = helper.createClientAnchor();
anchor.setCol1(1); // 图片起始列索引
anchor.setRow1(cell.getRowIndex()); // 起始行索引
anchor.setDx1(0); // 水平偏移量
anchor.setDy1(0); // 竖直偏移量
patriarch.createPicture(anchor, pictureIdx);
// 设置单元格内容为空白以免干扰显示效果
cell.setCellValue("");
// 设置单元格水平垂直居中
CellStyle style = workbook.createCellStyle();
style.setAlignment(HorizontalAlignment.CENTER);
style.setVerticalAlignment(VerticalAlignment.CENTER);
cell.setCellStyle(style);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
```
---
### 关键点解析
1. **Cell定位**:通过 `cell.getCellAddress()` 获取当前操作的单元格坐标。
2. **图片加载**:通过 `InputStream` 加载本地图片资源到内存。
3. **锚定点配置**:设定图片相对于单元格的位置(包括宽度和高度)。
4. **样式应用**:创建新的 `CellStyle` 并将其应用于目标单元格以达到“文本”或其他元素的居中布局。
---
### 注意事项
- 明确导入的图片大小是否合适,必要时需缩放;
- 需要额外注意的是 `[IMAGE]` 这种占位符只是一个示意标志,实际可以根据业务需求替换其他标识字符串或者逻辑判断条件。
阅读全文
相关推荐


















