直接上代码
@Test
public void testWrite07BigData() throws IOException {
// 1.创建一个工作簿
XSSFWorkbook workbook = new XSSFWorkbook();
// 2.创建一个工作表
Sheet sheet = workbook.createSheet();
//这边是sql语句直接将数据库的数据存到list
List<EceclEntity> list = (List<EceclEntity>) execlRepo.findAll();
List list1 = new ArrayList();
List listNum = new ArrayList();
//遍历list,应为list导出的数据格式是EceclEntity(),遍历直接取出里面的数据
for (int i = 0; i < list.size(); i++) {
list1.add(list.get(i).getName());
}
//java8特性去重(这边是根据需求要统计每个字段的总数量,但是会有重复的参数名称,所以需要去重)
List myList = (List) list1.stream().distinct().collect(Collectors.toList());
System.out.println(myList);
for (int i = 0; i < myList.size(); i++) {
String w = execlRepo.findone(myList.get(i).toString());
//将取得新数据存入listNum
listNum.add(w);
}
//for (int i = 0; i < listNum.size(); i++) {
//创建行(这边我是直接写死在第一行)
Row row1 = sheet.createRow(0);
for (int j = 0; j < myList.size(); j++) {
Cell cell = row1.createCell(j);//获取列
cell.setCellValue(myList.get(j).toString());
}
Row row = sheet.createRow(1);//创建行
for (int i = 0; i < listNum.size(); i++) {
Cell cell = row.createCell(i);//获取列
//括号里是转成Dubbo类型,格式需要
cell.setCellValue(Double.parseDouble(listNum.get(i).toString()));
}
// 生成一张表(IO流) 03版本就是使用xls结尾
//导出到指定路径
FileOutputStream fileOutputStream = new FileOutputStream("路径" + "testWrite07BigData.xlsx");
workbook.write(fileOutputStream);
//关闭输出流
fileOutputStream.close();
}
应为上网查看有着导出的表格的有点复杂,代码太多就自己参考着写了一个测试类
这个是最后做出的样子