计一次excel 导出
最终结果
将统计字段和查询的信息放在同一个对象之后,创建一个相对的一对多关系表
如下
@Data
@ExcelTarget("storeRank")
public class storeRank {
@Excel(name = "门店名字", orderNum = "1", width = 25, needMerge = true)
private String storeName;
@ExcelCollection(name = "信息", orderNum = "2")
private List list;
}
其相对应的StoreRankVo 的结构为对应的单个查询明细
@Data
public class StoreRankVo {
@Excel(name = "承运商名字", width = 20)
private String carriersName;
@Excel(name = "票数", width = 20)
private String num;
@Excel(name = "运费", width = 20)
private String money;
}
由于表头相对复杂,所以这里使用的是easyPoi 其 needMerge 可以很好的自适应对应的字段的高度
处理的数据结构如下
[
{
"storeName": "浙江省杭州市龙湖金沙天街店-XX",
"list": [
{
"num": "21",
"money": "116.0",
"carriersName": "京东快递"
},
{
"num": "6",
"money": "252.0",
"carriersName": "京东物流"
},
{
"num": "27",
"money": "368.0",
"carriersName": "总计"
}
]
},
{
"storeName": "浙江省杭州市西湖区西溪天街店-XXX",
"list": [
{
"num": "44",
"money": "251.5",
"carriersName": "京东快递"
},
{
"num": "1",
"money": "16.2",
"carriersName": "顺丰速运(陆运产品)"
},
{
"num": "45",
"money": "267.7",
"carriersName": "总计"
}
]
}
]
部分代码如下
HashMap map = new HashMap<>();
//此处门店id
List list = storeBrandsDao.getSoreID("");
//根据查询条件和门店列表获取门店的排行信息
map.put("ids", list);
LinkedList objects = new LinkedList<>();
for (String s : list
) {
LinkedList rankVoLinkedList = new LinkedList<>();
String senderStoreName = orderDao.selectList(new QueryWrapper().lambda().eq(ConfigOrder::getSenderStoreID, s)).get(0).getSenderStoreName();
map.put("storeId", s);
List
此处附上工具类
package com.dp_admin_server.utils;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Set;
public class ExcelUtils {
public static void exportExcel(List