import java.io.File; import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import com.taover.util.UtilExcel; public class TempExcel { public static void main(String[] args){ //checkExcelError(); saveExcel(); } public static void saveExcel() { List> data = new ArrayList>(); data.add(Collections.singletonList(123)); data.add(Collections.singletonList(123.222)); data.add(Collections.singletonList(1232223234234234L)); data.add(Collections.singletonList("123")); data.add(Collections.singletonList("1232223234234234")); data.add(Collections.singletonList(new Date())); try { UtilExcel.saveExcel("data", data, "C:\\Users\\Administrator\\Desktop\\1234.xlsx"); } catch (Exception e) { e.printStackTrace(); } } public static void checkExcelError() { List> data = null; try { data = UtilExcel.readExcelAllSheet("C:\\Users\\Administrator\\Desktop\\1234.xls"); } catch (Exception e) { e.printStackTrace(); } System.out.println("end"+data.get(1).get(10)); //dealExcel(); //readExcel(); } private static void readExcel() { File file = new File("C:\\Users\\Administrator\\Desktop\\异常Excel\\1_2020-03-08-14h55m00s-面包仓-订单回传数据(2)(1).xlsx"); try { Map>> readExcelAllSheetMap = UtilExcel.readExcelAllSheetMap(file.getAbsolutePath()); System.out.println("12"); } catch (Exception e) { e.printStackTrace(); } } public static final String SEPARATE_CONSIGNEE_MOBILE = "__"; public static final int EXCEL_TIANMAO_CONSIGNEE_INDEX = 14; public static final int EXCEL_TIANMAO_MOBILE_INDEX = 18; public static final int EXCEL_TIANMAO_ORDERDATE_INDEX = 20; public static final int EXCEL_TIANMAO_GOODSNUMBER_INDEX = 26; public static final int EXCEL_JD_CONSIGNEE_INDEX = 14; public static final int EXCEL_JD_MOBILE_INDEX = 16; public static final int EXCEL_JD_ORDERDATE_INDEX = 24; public static final int EXCEL_JD_GOODSNUMBER_INDEX = 3; public static void dealExcel(){ try { List> tianmaoData = UtilExcel.readExcel("D:\\tempexcel\\tianmao.xlsx"); List> jdData = UtilExcel.readExcel("D:\\tempexcel\\jd.xls"); tianmaoData.remove(0); jdData.remove(0); //按下单人及下单手机号分类 Map>> separateData = new HashMap>>(); for(int i=0; i tempData = tianmaoData.get(i); injectMap(separateData, getNameAndMobileByTianmao(tempData), tempData); } for(int i=0; i tempData = jdData.get(i); injectMap(separateData, getNameAndMobileByJd(tempData), tempData); } //分析下单分类 List analysisData = new ArrayList(); Iterator keyIter = separateData.keySet().iterator(); while(keyIter.hasNext()){ String keyName = keyIter.next(); List> keyData = separateData.get(keyName); if(keyData.size() <= 1){ continue; } String[] keyNameSep = keyName.split(TempExcel.SEPARATE_CONSIGNEE_MOBILE); if(keyNameSep.length == 4){ SeparateAnalysisInfo anaInfo = new SeparateAnalysisInfo(keyNameSep[0], keyNameSep[1], keyData, Integer.valueOf(keyNameSep[2]), Integer.valueOf(keyNameSep[3])); if(anaInfo.getDescList().size() > 1){ analysisData.add(anaInfo); } } } //打印信息,保存信息 List> resultInfo = new ArrayList>(); List blankRow = new ArrayList(); for(int i=0; i userInfo = new ArrayList(); userInfo.add("收货人:"+item.getConsignee()); userInfo.add("电话号:"+item.getMobile()); resultInfo.add(userInfo); //下单信息列 List descInfo = new ArrayList(); descInfo.add("下单简述"); for(int j=0; j>> separateData, String keyName, List keyValue){ if(separateData.containsKey(keyName)){ separateData.get(keyName).add(keyValue); }else{ List> tempData = new ArrayList>(); tempData.add(keyValue); separateData.put(keyName, tempData); } } public static String getNameAndMobileByTianmao(List data){ String name = data.get(EXCEL_TIANMAO_CONSIGNEE_INDEX).toString(); String mobile = data.get(EXCEL_TIANMAO_MOBILE_INDEX).toString(); return name+SEPARATE_CONSIGNEE_MOBILE+mobile+SEPARATE_CONSIGNEE_MOBILE+EXCEL_TIANMAO_ORDERDATE_INDEX+SEPARATE_CONSIGNEE_MOBILE+EXCEL_TIANMAO_GOODSNUMBER_INDEX; } public static String getNameAndMobileByJd(List data){ String name = data.get(EXCEL_JD_CONSIGNEE_INDEX).toString(); String mobile = data.get(EXCEL_JD_MOBILE_INDEX).toString(); return name+SEPARATE_CONSIGNEE_MOBILE+mobile+SEPARATE_CONSIGNEE_MOBILE+EXCEL_TIANMAO_ORDERDATE_INDEX+SEPARATE_CONSIGNEE_MOBILE+EXCEL_TIANMAO_GOODSNUMBER_INDEX; } } class SeparateAnalysisInfo{ private String consignee; private String mobile; private List descList; private List> orderData; public SeparateAnalysisInfo(String consignee, String mobile, List> data, int excelOrderDateIndex, int excelGoodsNumberIndex){ this.consignee = consignee; this.mobile = mobile; this.orderData = data; for(int i=0; i dataItem = data.get(i); if(dataItem.get(excelOrderDateIndex) == null){ System.out.println("没有下单日期信息:"+this.consignee+"__"+this.mobile); continue; } if(dataItem.get(excelGoodsNumberIndex) == null){ System.out.println("没有商品数量信息:"+this.consignee+"__"+this.mobile); continue; } String orderDate = dataItem.get(excelOrderDateIndex).toString(); if(orderDate.contains("-")){ orderDate = orderDate.substring(0, 10); }else{ String[] dateInfo = orderDate.split(" "); if(dateInfo.length > 0){ orderDate = dateInfo[0].replace("/", "-"); } } String goodsNumber = dataItem.get(excelGoodsNumberIndex).toString(); this.addDescListItem(orderDate, goodsNumber); } } public String getConsignee() { return consignee; } public void setConsignee(String consignee) { this.consignee = consignee; } public String getMobile() { return mobile; } public void setMobile(String mobile) { this.mobile = mobile; } public List getDescList() { return descList; } public void setDescList(List descList) { this.descList = descList; } public void addDescListItem(String orderDate, String goodsNumber){ if(this.descList == null){ this.descList = new ArrayList(); } String separateStr = "__"; //检查是否有重复日期的情况 boolean existsDate = false; for(int i=0; i 1){ String[] tempDataGoods = tempData[1].split("件"); if(tempDataGoods.length > 0){ try{ int totalNumber = Integer.valueOf(tempDataGoods[0]).intValue()+Integer.valueOf(goodsNumber).intValue(); this.descList.set(i, orderDate+separateStr+totalNumber+"件"); }catch(Exception e){ e.printStackTrace(); } } } break; } } if(!existsDate){ this.descList.add(orderDate+separateStr+goodsNumber+"件"); } } public List> getOrderData() { return orderData; } public void setOrderData(List> orderData) { this.orderData = orderData; } public void addOrderDataItem(List orderData){ if(this.orderData == null){ this.orderData = new ArrayList>(); } this.orderData.add(orderData); } }