package com.wuyj.sql; import org.apache.poi.hssf.usermodel.*; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; /** * @author: sx_wuy * @time: 2020/4/27 19:59 */ public class Sql { public static void main(String[] args) { try { /** * listA和listB是你两条sql的查询结果 * 你只用负责把两条sql语句的结果分别放入这两个集合中就可以了 * 现在的代码只是B中存在,A中不存在的数据。 */ ArrayList<PageData> listA = new ArrayList<PageData>(); ArrayList<PageData> listB = new ArrayList<PageData>(); // TODO: TODO之间是测试代码,你在使用的时候记得删掉 PageData pageData1 = new PageData("1", "1111", "aaa"); PageData pageData2 = new PageData("1", "zhangsan", "aaa"); PageData pageData3 = new PageData("1", "san", "1111"); PageData pageData4 = new PageData("1", "san", "aaa"); PageData pageData5 = new PageData("1", "liu", "aaa"); PageData pageData6 = new PageData("1", "liu", "aaa"); PageData pageData7 = new PageData("1", "zan", "aaa"); PageData pageData8 = new PageData("1", "zan", "aaa"); listA.add(pageData1); listB.add(pageData2); listA.add(pageData3); listB.add(pageData4); listA.add(pageData5); listB.add(pageData6); listA.add(pageData7); listB.add(pageData8); // TODO: TODO之间是测试代码,你在使用的时候记得删掉 LinkedHashSet<PageData> result = getResult(listA, listB); export(result); } catch (Exception e) { e.printStackTrace(); } } public static LinkedHashSet<PageData> getResult(List<PageData> listA, List<PageData> listB) { //生成A里面有的数据B中没有的 LinkedHashSet<PageData> result = new LinkedHashSet<PageData>(); result.addAll(listB); for (PageData a : listA) { for (PageData b : listB) { if (a.getUsername().equals(b.getUsername()) && a.getId().equals(b.getId()) && a.getPassword().equals(b.getPassword())){ result.remove(b); } } } return result; } public static HSSFWorkbook getHSSFWorkbook(String sheetName, String[] title, String[][] values, HSSFWorkbook wb){ // 第一步,创建一个HSSFWorkbook,对应一个Excel文件 if(wb == null){ wb = new HSSFWorkbook(); } // 第二步,在workbook中添加一个sheet,对应Excel文件中的sheet HSSFSheet sheet = wb.createSheet(sheetName); // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制 HSSFRow row = sheet.createRow(0); // 第四步,创建单元格,并设置值表头 设置表头居中 HSSFCellStyle style = wb.createCellStyle(); //style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式 //声明列对象 HSSFCell cell = null; //创建标题 for(int i=0;i<title.length;i++){ cell = row.createCell(i); cell.setCellValue(title[i]); cell.setCellStyle(style); } //创建内容 for(int i=0;i<values.length;i++){ row = sheet.createRow(i + 1); for(int j=0;j<values[i].length;j++){ //将内容按顺序赋给对应的列对象 row.createCell(j).setCellValue(values[i][j]); } } return wb; } public static void export(LinkedHashSet<PageData> list) throws Exception { //excel标题 String[] title = {"用户ID", "用户名称", "用户密码", "用户手机","创建时间"}; //excel文件名 String fileName = "用户信息表" + System.currentTimeMillis() + ".xls"; //sheet名 String sheetName = "用户信息表"; String [][] content = new String[list.size()][5]; int i = 0; for (PageData pageData : list) { content[i] = new String[title.length]; content[i][0] = pageData.getId().toString(); content[i][1] = pageData.getUsername(); content[i][2] = pageData.getPassword(); content[i][3] = pageData.getPassword(); content[i][4] = pageData.getPassword(); i++; } //创建HSSFWorkbook //输出路径 FileOutputStream output=new FileOutputStream("d:\\workbook.xls"); HSSFWorkbook wb = getHSSFWorkbook(sheetName, title, content, null); wb.write(output); output.flush(); } }
pom文件坐标
<dependencies> <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.0.1</version> </dependency> </dependencies>