@绝望的八皮 你好,想跟你请教个问题:
PoiRender 能把多个对象打印在同一个文件的多个sheet吗
有个业务需求,需要把15张表导出在一个Excel,代码也是参考别人,跟您的结合在一起了,只是限制了record了。
public class PoiKit { private SheetData[] sheetDatas; public PoiKit(SheetData... sheetDatas) { this.sheetDatas = sheetDatas; } public static PoiKit sheetDatas(SheetData... sheetDatas) { return new PoiKit(sheetDatas); } public Workbook export() { HSSFWorkbook wb = new HSSFWorkbook(); //多张sheet for (SheetData sheetData : sheetDatas) { List titles = sheetData.titles; List records = sheetData.records; String sheetName = sheetData.sheetName; HSSFSheet sheet = wb.createSheet(sheetName); int rowIndex = 0, cellIndex = 0; HSSFRow row = null; HSSFCell cell = null; //创建标题行 row = sheet.createRow(rowIndex); row.setHeight((short) 450); rowIndex++; for (Pair pair : titles) { cell = row.createCell(cellIndex); cell.setCellStyle(titleCellStyle); //设置样式 cellIndex++; cell.setCellValue(pair.title); } //处理每一行 for (Record record : records) { row = sheet.createRow(rowIndex); row.setHeight((short) 450); rowIndex++; cellIndex = 0; for (Pair pair : titles) { cell = row.createCell(cellIndex); cell.setCellStyle(cellStyle); //设置样式 cellIndex++; Object value = record.get(pair.column); if (value != null) { cell.setCellValue(value.toString()); } } } } return wb; } /** * 标题列和列名的对应 */ public static class Pair { public String column; public String title; public Pair(String column, String title) { this.column = column; this.title = title; } } /** * 创建一个sheet需要的数据 */ public static class SheetData { public List titles; public List records; public String sheetName; public SheetData(List titles, List records, String sheetName) { this.titles = titles; this.records = records; this.sheetName = sheetName; } } }
title是一个pair? 能分享更多代码吗?我还是没有理解你是怎么样的最后。。
/** * 创建一个sheet需要的数据 */ public static class SheetData { public List<Pair> titles; public List<Record> records; public String sheetName; public SheetData(List<Pair> titles, List<Record> records, String sheetName) { this.titles = titles; this.records = records; this.sheetName = sheetName; }
非常感谢,试用了一下,还是跟我想要的不一样。我用另外一种方式解决,PoiRender me(SheetData... sheetDatas),先把要导出对象的header,column,data 封装在sheetdata里
3.1.3正式发布
http://www.oschina.net/news/59364/jfinal-extensions-3-1-3
可以支持多个sheet不同的header了 ,请试用;)
明白了,谢谢您的回复。
这种场景暂时不支持还.多个data本来的目的是解决一个sheet过多分开的场景,解决2003单sheet 65535的限制.如果一个data超过65535 那么自动拆成多个sheet. 目前这样的设计下多个header和column的情况实现有点复杂..可能需要再权衡一下.
data,data2字段不同怎么写?
可以
谢谢,看了代码,可以支持。 但是有个疑问,多个对象,字段不一样情况,columns、headers怎么设置,看似不是不定长参数。能否给个调用例子。
PoiKit.data(data,data2).version(PoiKit.VERSION_2003).sheetName("data").columns("name").headers(headers).export();
功能已经实现了在github最新代码可以应该,但是没有发布mvn
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
有一天你能到我的心里去,你会看到那里全是你给的伤悲。
文章 0 评论 0
接受
发布评论
评论(12)
有个业务需求,需要把15张表导出在一个Excel,代码也是参考别人,跟您的结合在一起了,只是限制了record了。
title是一个pair? 能分享更多代码吗?我还是没有理解你是怎么样的最后。。
非常感谢,试用了一下,还是跟我想要的不一样。我用另外一种方式解决,PoiRender me(SheetData... sheetDatas),先把要导出对象的header,column,data 封装在sheetdata里
3.1.3正式发布
http://www.oschina.net/news/59364/jfinal-extensions-3-1-3
可以支持多个sheet不同的header了 ,请试用;)
明白了,谢谢您的回复。
这种场景暂时不支持还.多个data本来的目的是解决一个sheet过多分开的场景,解决2003单sheet 65535的限制.如果一个data超过65535 那么自动拆成多个sheet. 目前这样的设计下多个header和column的情况实现有点复杂..可能需要再权衡一下.
data,data2字段不同
怎么写?
可以
谢谢,看了代码,可以支持。 但是有个疑问,多个对象,字段不一样情况,columns、headers怎么设置,看似不是不定长参数。能否给个调用例子。
功能已经实现了在github最新代码可以应该,但是没有发布mvn