
如何使用jslx请参考之前写的文章:http://www.jiajiajia.club/blog/artical/76vv9kuy36j4/454
添加配置
import org.apache.poi.ss.usermodel.Row;
import org.jxls.area.Area;
import org.jxls.command.AbstractCommand;
import org.jxls.common.CellRef;
import org.jxls.common.Context;
import org.jxls.common.Size;
import org.jxls.transform.poi.PoiTransformer;
/**
* 自定义指令配置,在批注中添加
* 例如:
* jx:autoRowHeight(lastCell ="C3")
* lastCell参数是指定该批注作用的范围
*/
public class AutoRowHeightCommand extends AbstractCommand {
/**
* 返回批注的名称
* @return
*/
@Override
public String getName() {
return "autoRowHeight";
}
/**
* @param cellRef
* @param context
* @return
*/
@Override
public Size applyAt(CellRef cellRef, Context context) {
Area area=getAreaList().get(0);
Size size = area.applyAt(cellRef, context);
PoiTransformer transformer = (PoiTransformer) area.getTransformer();
Row row = transformer.getWorkbook().getSheet(cellRef.getSheetName()).getRow(cellRef.getRow());
row.setHeight((short) -1);
return size;
}
}
在主代码中加如配置
//设置自适应行高
XlsCommentAreaBuilder.addCommandMapping("autoRowHeight", AutoRowHeightCommand.class);
完整代码如下:
import club.jiajiajia.jxls.config.AutoRowHeightCommand;
import club.jiajiajia.jxls.entity.Entity;
import org.jxls.builder.xls.XlsCommentAreaBuilder;
import org.jxls.common.Context;
import org.jxls.util.JxlsHelper;
import org.springframework.core.io.ClassPathResource;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
/**
* 一般导出(导出一个列表数据)
*/
public class Test2 {
public static void main(String[] args) throws Exception{
InputStream templateIn= new ClassPathResource("template/template2.xlsx").getInputStream();
OutputStream os =new FileOutputStream("D:\\data\\temp2.xlsx");
Context context = new Context();
List<Entity> data = new ArrayList<>();
data.add(new Entity(1,"张三","张三的简介"));
data.add(new Entity(2,"李四","里斯的简介"));
data.add(new Entity(3,"王五","王五的简介"));
data.add(new Entity(4,"赵六","赵六的简介"));
context.putVar("data", data);
JxlsHelper jxlsHelper = JxlsHelper.getInstance();
jxlsHelper.getAreaBuilder().getTransformer();
//设置自适应行高
XlsCommentAreaBuilder.addCommandMapping("autoRowHeight", AutoRowHeightCommand.class);
jxlsHelper.processTemplate(templateIn, os, context);
}
}
模板中如何添加批注
jx:autoRowHeight(lastCell ="C3")
测试模板以及项目下载地址:https://github.com/18438301593/jxls2.git
在项目中resources下