diff --git a/build.gradle b/build.gradle index 1cebfea..6166542 100644 --- a/build.gradle +++ b/build.gradle @@ -20,8 +20,6 @@ mainClassName = 'com.taover.util.UtilString' dependencies { compile( - "org.apache.poi:poi:4.1.2", - "org.apache.poi:poi-excelant:4.1.2", "ch.ethz.ganymed:ganymed-ssh2:build210", "org.apache.velocity:velocity:1.6.4", "com.squareup.okhttp3:okhttp:3.14.1", @@ -62,7 +60,7 @@ uploadArchives { authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD) } pom.project { - version '1.1.124' + version '1.2.1' artifactId ARTIFACT_Id groupId GROUP_ID packaging TYPE diff --git a/src/main/java/com/taover/util/UtilExcel.java b/src/main/java/com/taover/util/UtilExcel.java deleted file mode 100644 index e635766..0000000 --- a/src/main/java/com/taover/util/UtilExcel.java +++ /dev/null @@ -1,576 +0,0 @@ -package com.taover.util; - -import java.io.File; -import java.io.FileOutputStream; -import java.text.DecimalFormat; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.openxml4j.util.ZipSecureFile; -import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.CellStyle; -import org.apache.poi.ss.usermodel.CellType; -import org.apache.poi.ss.usermodel.DateUtil; -import org.apache.poi.ss.usermodel.FillPatternType; -import org.apache.poi.ss.usermodel.Row; -import org.apache.poi.ss.usermodel.Sheet; -import org.apache.poi.ss.usermodel.Workbook; -import org.apache.poi.ss.usermodel.WorkbookFactory; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; - -@Deprecated -public class UtilExcel { - private final static String excel2003L =".xls"; //2003- 版本的excel - private final static String excel2007U =".xlsx"; //2007+ 版本的excel - private final static String CSV =".csv"; //csv - - private final static int maxExcelRowNum = 10000; - private final static int maxExcelColumnNum = 100; - - static { - ZipSecureFile.setMinInflateRatio(-1.0d); - } - - /** - * 描述:根据文件后缀,自适应上传文件的版本 - * @param inStr,fileName - * @return - * @throws Exception - */ - private static Workbook getWorkbook(String filePath, boolean isRead) throws Exception{ - Workbook wb = null; - File tempFile = null; - if(isRead){ - tempFile = new File(filePath); - if(!tempFile.exists()){ - throw new Exception("需要读取的文件不存在!"); - } - } - if(isRead) { - wb = WorkbookFactory.create(tempFile); - }else { - int dotIndex = filePath.lastIndexOf("."); - if(dotIndex < 0) { - throw new Exception("传入的文件没有指定扩展名"); - } - String filteTypeLower = filePath.substring(dotIndex).trim().toLowerCase(); - if(excel2003L.equals(filteTypeLower) || CSV.equals(filteTypeLower)){ - wb = new HSSFWorkbook(); //2003- - } else if (excel2007U.equals(filteTypeLower)){ - wb = new XSSFWorkbook(); //2007+ - } else { - throw new Exception("解析的文件格式有误!"); - } - } - return wb; - } - - /** - * 创建并保存excel表 - * @param sheetName - * @param data - * @param path - */ - public static File saveExcelFromListString(String sheetName, List data, String path) throws Exception{ - Workbook wb = UtilExcel.getWorkbook(path, false); - //创建Excel工作簿对象 - Sheet sheet = wb.createSheet(sheetName);//创建Excel工作表对象 - for(int i=0; i> data, String path) throws Exception{ - Workbook wb = UtilExcel.getWorkbook(path, false); - //创建Excel工作簿对象 - Sheet sheet = wb.createSheet(sheetName);//创建Excel工作表对象 - for(int i=0; i dataRow = data.get(i); - if(dataRow != null){ - for(int j=0; j sheetList, List>> dataList, String path) throws Exception{ - if(sheetList.size() != dataList.size()){ - throw new Exception("sheet size != excel size"); - } - Workbook wb = UtilExcel.getWorkbook(path, false); - //创建Excel工作簿对象 - - for (int j = 0;j< dataList.size(); j++) { - List> data = dataList.get(j); - Sheet sheet = wb.createSheet(sheetList.get(j));//创建Excel工作表对象 - for(int i=0; i dataRow = data.get(i); - if(dataRow != null){ - for(int k=0; k> data, String path, List backColorList) throws Exception{ - Workbook wb = UtilExcel.getWorkbook(path, false); - Map cellStyleMap = new HashMap(); - Sheet sheet = wb.createSheet(sheetName);//创建Excel工作表对象 - for(int i=0; i dataRow = data.get(i); - Short backColor = backColorList.get(i); - CellStyle style = cellStyleMap.get(backColor); - if(style == null){ - style = wb.createCellStyle(); - style.setFillPattern(FillPatternType.SOLID_FOREGROUND); - cellStyleMap.put(backColor, style); - } - if(backColor != null){ - style.setFillForegroundColor(backColor.shortValue()); - } - if(dataRow != null){ - for(int j=0; j> readExcel(String filepath) throws Exception{ - File file = new File(filepath); - if(!file.exists()){ - throw new Exception("Excel["+filepath+"]文件不存在"); - } - Workbook wb = UtilExcel.getWorkbook(filepath, true); - return readExcelBySheetIndex(wb, wb.getActiveSheetIndex()); - } - - /** - * 读取excel表--当前激活的工作表 - * @param path - */ - public static List> readExcel(String filepath, boolean hasLimit) throws Exception{ - File file = new File(filepath); - if(!file.exists()){ - throw new Exception("Excel["+filepath+"]文件不存在"); - } - Workbook wb = UtilExcel.getWorkbook(filepath, true); - return readExcelBySheetIndex(wb, wb.getActiveSheetIndex(), hasLimit); - } - - /** - * 读取 - * @param filepath - * @return - * @throws Exception - */ - public static List> readExcelExcludeHideLine(String filepath) throws Exception{ - File file = new File(filepath); - if(!file.exists()){ - throw new Exception("Excel["+filepath+"]文件不存在"); - } - Workbook wb = UtilExcel.getWorkbook(filepath, true); - return readExcelBySheetIndexExcludeHideLine(filepath, wb.getActiveSheetIndex()); - } - - /** - * 读取excel表--所有工作表 - * @param path - */ - public static List> readExcelAllSheet(String filepath) throws Exception{ - File file = new File(filepath); - List> result = new ArrayList>(); - if(!file.exists()){ - throw new Exception("Excel["+filepath+"]文件不存在"); - } - Workbook wb = UtilExcel.getWorkbook(filepath, true); - int sheetNumber = wb.getNumberOfSheets(); - - for(int sheetIndex=0; sheetIndex>> readExcelAllSheetMap(String filepath) throws Exception{ - File file = new File(filepath); - HashMap>> map = new HashMap>>(); - if(!file.exists()){ - throw new Exception("Excel["+filepath+"]文件不存在"); - } - Workbook wb = UtilExcel.getWorkbook(filepath, true); - int sheetNumber = wb.getNumberOfSheets(); - - for(int sheetIndex=0; sheetIndex> readExcelBySheetIndex(String filepath, int sheetIndex) throws Exception{ - File file = new File(filepath); - if(!file.exists()){ - throw new Exception("Excel["+filepath+"]文件不存在"); - } - Workbook wb = UtilExcel.getWorkbook(filepath, true); - Sheet sheet = wb.getSheetAt(sheetIndex); - return readExcelBySheet(sheet, UtilExcel.maxExcelRowNum, false); - } - - private static List> readExcelBySheetIndex(Workbook wb, int sheetIndex) throws Exception{ - return readExcelBySheetIndex(wb, sheetIndex, true); - } - - private static List> readExcelBySheetIndex(Workbook wb, int sheetIndex, boolean hasRowLimit) throws Exception{ - Sheet sheet = wb.getSheetAt(sheetIndex); - if(hasRowLimit){ - return readExcelBySheet(sheet, UtilExcel.maxExcelRowNum, false); - }else { - return readExcelBySheet(sheet, Integer.MAX_VALUE, false); - } - } - - /** - * 读取excel表--当前激活的工作表 - * @param path - */ - private static List> readExcelBySheet(Sheet sheet, int rowLimit, boolean excludeRowZeroHeight) throws Exception{ - List> result = new ArrayList>(); - int start = sheet.getFirstRowNum(); - int end = sheet.getLastRowNum(); - if(end > rowLimit){ - end = rowLimit; - } - DecimalFormat df = new DecimalFormat("0.####"); - for(int i=start; i dataRow = new ArrayList(); - int lastCellNum = row.getLastCellNum(); - if(lastCellNum > UtilExcel.maxExcelColumnNum){ - lastCellNum = UtilExcel.maxExcelColumnNum; - } - for(int j=0; j> readExcelBySheetIndexExcludeHideLine(String filepath, int sheetIndex) throws Exception{ - File file = new File(filepath); - if(!file.exists()){ - throw new Exception("Excel文件["+filepath+"]不存在"); - } - Workbook wb = UtilExcel.getWorkbook(filepath, true); - Sheet sheet = wb.getSheetAt(sheetIndex); - return readExcelBySheet(sheet, UtilExcel.maxExcelRowNum, true); - } - - public static void main(String args[]){ - //String filepath = "C:\\Users\\root\\Desktop\\千丁-6.27.xlsx"; - //String filepath = "C:\\Users\\gaoming\\Desktop\\cccc.xls"; - DecimalFormat df = new DecimalFormat("0.####"); - - System.out.println(df.format(3.333113F)); - System.out.println(df.format(3.3)); - System.out.println(df.format(3.3300)); - - - String filepath = "C:\\Users\\EDZ\\Desktop\\詹姆士0623(3)(1).xlsx"; - List> data = null; - - try { - long start = System.currentTimeMillis(); - System.out.println(start); - Map>> map = UtilExcel.readExcelAllSheetMap(filepath); - long end = System.currentTimeMillis(); - System.out.println(end); - System.out.println((end-start)/1000); - - - //System.out.println(map); - data = map.get("0"); - System.out.println(data); - for (int i = 0; i < data.size(); i++) { - System.out.println(data.get(i).get(1)); - } -// System.out.println(data.size()); -// System.out.println(UtilExcel.readExcelAllSheetMap(filepath)); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } -// List styleList = new ArrayList(); -// for(int i=0; i headerList = new ArrayList(); -// headerList.add("shhe1"); -// headerList.add("shhe2"); -// List>> dataList = new ArrayList>>(); -// List> list1 = new ArrayList>(); -// List list11 = new ArrayList(); -// list11.add("hahaha"); -// list11.add("hahaha"); -// list11.add("hahaha"); -// list1.add(list11); -// -// List> list2 = new ArrayList>(); -// List list22 = new ArrayList(); -// list22.add("hahaha2"); -// list22.add("hahaha2"); -// list22.add("hahaha2"); -// list2.add(list22); -// list2.add(list22); -// -// dataList.add(list1); -// dataList.add(list2); -// -// UtilExcel.saveExcelContailSheet(headerList, dataList, "C:\\Users\\gaoming\\Desktop\\qwer.xls"); -// } catch (Exception e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } - } -} diff --git a/src/test/java/TempExcel.java b/src/test/java/TempExcel.java deleted file mode 100644 index 1fde7ad..0000000 --- a/src/test/java/TempExcel.java +++ /dev/null @@ -1,259 +0,0 @@ -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); - } -} -- libgit2 0.21.2