Commit f71045df94aee0f43db02153906310ad31a4389b
1 parent
15acd796
Exists in
master
upgrade version
Showing
3 changed files
with
1 additions
and
838 deletions
Show diff stats
build.gradle
@@ -20,8 +20,6 @@ mainClassName = 'com.taover.util.UtilString' | @@ -20,8 +20,6 @@ mainClassName = 'com.taover.util.UtilString' | ||
20 | 20 | ||
21 | dependencies { | 21 | dependencies { |
22 | compile( | 22 | compile( |
23 | - "org.apache.poi:poi:4.1.2", | ||
24 | - "org.apache.poi:poi-excelant:4.1.2", | ||
25 | "ch.ethz.ganymed:ganymed-ssh2:build210", | 23 | "ch.ethz.ganymed:ganymed-ssh2:build210", |
26 | "org.apache.velocity:velocity:1.6.4", | 24 | "org.apache.velocity:velocity:1.6.4", |
27 | "com.squareup.okhttp3:okhttp:3.14.1", | 25 | "com.squareup.okhttp3:okhttp:3.14.1", |
@@ -62,7 +60,7 @@ uploadArchives { | @@ -62,7 +60,7 @@ uploadArchives { | ||
62 | authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD) | 60 | authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD) |
63 | } | 61 | } |
64 | pom.project { | 62 | pom.project { |
65 | - version '1.1.124' | 63 | + version '1.2.1' |
66 | artifactId ARTIFACT_Id | 64 | artifactId ARTIFACT_Id |
67 | groupId GROUP_ID | 65 | groupId GROUP_ID |
68 | packaging TYPE | 66 | packaging TYPE |
src/main/java/com/taover/util/UtilExcel.java
@@ -1,576 +0,0 @@ | @@ -1,576 +0,0 @@ | ||
1 | -package com.taover.util; | ||
2 | - | ||
3 | -import java.io.File; | ||
4 | -import java.io.FileOutputStream; | ||
5 | -import java.text.DecimalFormat; | ||
6 | -import java.text.SimpleDateFormat; | ||
7 | -import java.util.ArrayList; | ||
8 | -import java.util.Date; | ||
9 | -import java.util.HashMap; | ||
10 | -import java.util.List; | ||
11 | -import java.util.Map; | ||
12 | - | ||
13 | -import org.apache.poi.hssf.usermodel.HSSFWorkbook; | ||
14 | -import org.apache.poi.openxml4j.util.ZipSecureFile; | ||
15 | -import org.apache.poi.ss.usermodel.Cell; | ||
16 | -import org.apache.poi.ss.usermodel.CellStyle; | ||
17 | -import org.apache.poi.ss.usermodel.CellType; | ||
18 | -import org.apache.poi.ss.usermodel.DateUtil; | ||
19 | -import org.apache.poi.ss.usermodel.FillPatternType; | ||
20 | -import org.apache.poi.ss.usermodel.Row; | ||
21 | -import org.apache.poi.ss.usermodel.Sheet; | ||
22 | -import org.apache.poi.ss.usermodel.Workbook; | ||
23 | -import org.apache.poi.ss.usermodel.WorkbookFactory; | ||
24 | -import org.apache.poi.xssf.usermodel.XSSFWorkbook; | ||
25 | - | ||
26 | -@Deprecated | ||
27 | -public class UtilExcel { | ||
28 | - private final static String excel2003L =".xls"; //2003- 版本的excel | ||
29 | - private final static String excel2007U =".xlsx"; //2007+ 版本的excel | ||
30 | - private final static String CSV =".csv"; //csv | ||
31 | - | ||
32 | - private final static int maxExcelRowNum = 10000; | ||
33 | - private final static int maxExcelColumnNum = 100; | ||
34 | - | ||
35 | - static { | ||
36 | - ZipSecureFile.setMinInflateRatio(-1.0d); | ||
37 | - } | ||
38 | - | ||
39 | - /** | ||
40 | - * 描述:根据文件后缀,自适应上传文件的版本 | ||
41 | - * @param inStr,fileName | ||
42 | - * @return | ||
43 | - * @throws Exception | ||
44 | - */ | ||
45 | - private static Workbook getWorkbook(String filePath, boolean isRead) throws Exception{ | ||
46 | - Workbook wb = null; | ||
47 | - File tempFile = null; | ||
48 | - if(isRead){ | ||
49 | - tempFile = new File(filePath); | ||
50 | - if(!tempFile.exists()){ | ||
51 | - throw new Exception("需要读取的文件不存在!"); | ||
52 | - } | ||
53 | - } | ||
54 | - if(isRead) { | ||
55 | - wb = WorkbookFactory.create(tempFile); | ||
56 | - }else { | ||
57 | - int dotIndex = filePath.lastIndexOf("."); | ||
58 | - if(dotIndex < 0) { | ||
59 | - throw new Exception("传入的文件没有指定扩展名"); | ||
60 | - } | ||
61 | - String filteTypeLower = filePath.substring(dotIndex).trim().toLowerCase(); | ||
62 | - if(excel2003L.equals(filteTypeLower) || CSV.equals(filteTypeLower)){ | ||
63 | - wb = new HSSFWorkbook(); //2003- | ||
64 | - } else if (excel2007U.equals(filteTypeLower)){ | ||
65 | - wb = new XSSFWorkbook(); //2007+ | ||
66 | - } else { | ||
67 | - throw new Exception("解析的文件格式有误!"); | ||
68 | - } | ||
69 | - } | ||
70 | - return wb; | ||
71 | - } | ||
72 | - | ||
73 | - /** | ||
74 | - * 创建并保存excel表 | ||
75 | - * @param sheetName | ||
76 | - * @param data | ||
77 | - * @param path | ||
78 | - */ | ||
79 | - public static File saveExcelFromListString(String sheetName, List<String[]> data, String path) throws Exception{ | ||
80 | - Workbook wb = UtilExcel.getWorkbook(path, false); | ||
81 | - //创建Excel工作簿对象 | ||
82 | - Sheet sheet = wb.createSheet(sheetName);//创建Excel工作表对象 | ||
83 | - for(int i=0; i<data.size(); ++i){ | ||
84 | - Row row = sheet.createRow(i); //创建Excel工作表的行 | ||
85 | - String[] dataRow = data.get(i); | ||
86 | - if(dataRow != null){ | ||
87 | - for(int j=0; j<dataRow.length; ++j){ | ||
88 | - Cell cell = row.createCell(j); | ||
89 | - String dataCell = dataRow[j]; | ||
90 | - if(dataCell != null){ | ||
91 | - cell.setCellValue(dataCell); | ||
92 | - } | ||
93 | - } | ||
94 | - } | ||
95 | - } | ||
96 | - try { | ||
97 | - FileOutputStream fileOut; | ||
98 | - File tempFile = new File(path); | ||
99 | - if(!tempFile.exists()){ | ||
100 | - File parentFile = tempFile.getParentFile(); | ||
101 | - if(!parentFile.exists()){ | ||
102 | - parentFile.mkdirs(); | ||
103 | - } | ||
104 | - if(!tempFile.createNewFile()){ | ||
105 | - return null; | ||
106 | - } | ||
107 | - } | ||
108 | - fileOut = new FileOutputStream(tempFile); | ||
109 | - wb.write(fileOut); | ||
110 | - wb.close(); | ||
111 | - fileOut.close(); | ||
112 | - | ||
113 | - return tempFile; | ||
114 | - } catch (Exception e) { | ||
115 | - // TODO Auto-generated catch block | ||
116 | - e.printStackTrace(); | ||
117 | - } | ||
118 | - return null; | ||
119 | - } | ||
120 | - | ||
121 | - /** | ||
122 | - * 创建并保存excel表 | ||
123 | - * @param sheetName | ||
124 | - * @param data | ||
125 | - * @param path | ||
126 | - */ | ||
127 | - public static void saveExcel(String sheetName, List<List<Object>> data, String path) throws Exception{ | ||
128 | - Workbook wb = UtilExcel.getWorkbook(path, false); | ||
129 | - //创建Excel工作簿对象 | ||
130 | - Sheet sheet = wb.createSheet(sheetName);//创建Excel工作表对象 | ||
131 | - for(int i=0; i<data.size(); ++i){ | ||
132 | - Row row = sheet.createRow(i); //创建Excel工作表的行 | ||
133 | - List<Object> dataRow = data.get(i); | ||
134 | - if(dataRow != null){ | ||
135 | - for(int j=0; j<dataRow.size(); ++j){ | ||
136 | - Cell cell = row.createCell(j); | ||
137 | - Object dataCell = dataRow.get(j); | ||
138 | - setCellValue(cell, dataCell); | ||
139 | - } | ||
140 | - } | ||
141 | - } | ||
142 | - try { | ||
143 | - FileOutputStream fileOut; | ||
144 | - File tempFile = new File(path); | ||
145 | - if(!tempFile.exists()){ | ||
146 | - File parentFile = tempFile.getParentFile(); | ||
147 | - if(!parentFile.exists()){ | ||
148 | - parentFile.mkdirs(); | ||
149 | - } | ||
150 | - if(!tempFile.createNewFile()){ | ||
151 | - return; | ||
152 | - } | ||
153 | - } | ||
154 | - fileOut = new FileOutputStream(tempFile); | ||
155 | - wb.write(fileOut); | ||
156 | - wb.close(); | ||
157 | - fileOut.close(); | ||
158 | - } catch (Exception e) { | ||
159 | - // TODO Auto-generated catch block | ||
160 | - e.printStackTrace(); | ||
161 | - } | ||
162 | - } | ||
163 | - | ||
164 | - private static void setCellValue(Cell cell, Object data) { | ||
165 | - if(data != null){ | ||
166 | - if(ClassUtil.isBasicType(data.getClass())){ | ||
167 | - cell.setCellValue(Double.valueOf(data.toString())); | ||
168 | - }else if(data.getClass().getSimpleName().equals("Date")){ | ||
169 | - cell.setCellValue((Date)data); | ||
170 | - }else{ | ||
171 | - cell.setCellValue(data.toString()); | ||
172 | - } | ||
173 | - } | ||
174 | - } | ||
175 | - | ||
176 | - /** | ||
177 | - * 创建并保存excel表 sheet | ||
178 | - * @param sheetName | ||
179 | - * @param data | ||
180 | - * @param path | ||
181 | - */ | ||
182 | - public static void saveExcelContailSheet(List<String> sheetList, List<List<List<Object>>> dataList, String path) throws Exception{ | ||
183 | - if(sheetList.size() != dataList.size()){ | ||
184 | - throw new Exception("sheet size != excel size"); | ||
185 | - } | ||
186 | - Workbook wb = UtilExcel.getWorkbook(path, false); | ||
187 | - //创建Excel工作簿对象 | ||
188 | - | ||
189 | - for (int j = 0;j< dataList.size(); j++) { | ||
190 | - List<List<Object>> data = dataList.get(j); | ||
191 | - Sheet sheet = wb.createSheet(sheetList.get(j));//创建Excel工作表对象 | ||
192 | - for(int i=0; i<data.size(); ++i){ | ||
193 | - Row row = sheet.createRow(i); //创建Excel工作表的行 | ||
194 | - List<Object> dataRow = data.get(i); | ||
195 | - if(dataRow != null){ | ||
196 | - for(int k=0; k<dataRow.size(); ++k){ | ||
197 | - Cell cell = row.createCell(k); | ||
198 | - Object dataCell = dataRow.get(k); | ||
199 | - setCellValue(cell, dataCell); | ||
200 | - } | ||
201 | - } | ||
202 | - } | ||
203 | - } | ||
204 | - | ||
205 | - try { | ||
206 | - FileOutputStream fileOut; | ||
207 | - File tempFile = new File(path); | ||
208 | - if(!tempFile.exists()){ | ||
209 | - File parentFile = tempFile.getParentFile(); | ||
210 | - if(!parentFile.exists()){ | ||
211 | - parentFile.mkdirs(); | ||
212 | - } | ||
213 | - if(!tempFile.createNewFile()){ | ||
214 | - return; | ||
215 | - } | ||
216 | - } | ||
217 | - fileOut = new FileOutputStream(tempFile); | ||
218 | - wb.write(fileOut); | ||
219 | - wb.close(); | ||
220 | - fileOut.close(); | ||
221 | - } catch (Exception e) { | ||
222 | - // TODO Auto-generated catch block | ||
223 | - e.printStackTrace(); | ||
224 | - } | ||
225 | - } | ||
226 | - | ||
227 | - /** | ||
228 | - * 创建并保存excel表 | ||
229 | - * @param sheetName | ||
230 | - * @param data | ||
231 | - * @param path | ||
232 | - */ | ||
233 | - public static void saveExcel(String sheetName, List<List<Object>> data, String path, List<Short> backColorList) throws Exception{ | ||
234 | - Workbook wb = UtilExcel.getWorkbook(path, false); | ||
235 | - Map<Short, CellStyle> cellStyleMap = new HashMap<Short, CellStyle>(); | ||
236 | - Sheet sheet = wb.createSheet(sheetName);//创建Excel工作表对象 | ||
237 | - for(int i=0; i<data.size(); ++i){ | ||
238 | - Row row = sheet.createRow(i); //创建Excel工作表的行 | ||
239 | - List<Object> dataRow = data.get(i); | ||
240 | - Short backColor = backColorList.get(i); | ||
241 | - CellStyle style = cellStyleMap.get(backColor); | ||
242 | - if(style == null){ | ||
243 | - style = wb.createCellStyle(); | ||
244 | - style.setFillPattern(FillPatternType.SOLID_FOREGROUND); | ||
245 | - cellStyleMap.put(backColor, style); | ||
246 | - } | ||
247 | - if(backColor != null){ | ||
248 | - style.setFillForegroundColor(backColor.shortValue()); | ||
249 | - } | ||
250 | - if(dataRow != null){ | ||
251 | - for(int j=0; j<dataRow.size(); ++j){ | ||
252 | - Cell cell = row.createCell(j); | ||
253 | - Object dataCell = dataRow.get(j); | ||
254 | - setCellValue(cell, dataCell); | ||
255 | - if(backColor != null){ | ||
256 | - cell.setCellStyle(style); | ||
257 | - } | ||
258 | - } | ||
259 | - } | ||
260 | - } | ||
261 | - try { | ||
262 | - FileOutputStream fileOut; | ||
263 | - File tempFile = new File(path); | ||
264 | - if(!tempFile.exists()){ | ||
265 | - File parentFile = tempFile.getParentFile(); | ||
266 | - if(!parentFile.exists()){ | ||
267 | - parentFile.mkdirs(); | ||
268 | - } | ||
269 | - if(!tempFile.createNewFile()){ | ||
270 | - return; | ||
271 | - } | ||
272 | - } | ||
273 | - fileOut = new FileOutputStream(tempFile); | ||
274 | - wb.write(fileOut); | ||
275 | - wb.close(); | ||
276 | - fileOut.close(); | ||
277 | - } catch (Exception e) { | ||
278 | - // TODO Auto-generated catch block | ||
279 | - e.printStackTrace(); | ||
280 | - } | ||
281 | - } | ||
282 | - | ||
283 | - /** | ||
284 | - * 读取excel表--当前激活的工作表 | ||
285 | - * @param path | ||
286 | - */ | ||
287 | - public static List<List<Object>> readExcel(String filepath) throws Exception{ | ||
288 | - File file = new File(filepath); | ||
289 | - if(!file.exists()){ | ||
290 | - throw new Exception("Excel["+filepath+"]文件不存在"); | ||
291 | - } | ||
292 | - Workbook wb = UtilExcel.getWorkbook(filepath, true); | ||
293 | - return readExcelBySheetIndex(wb, wb.getActiveSheetIndex()); | ||
294 | - } | ||
295 | - | ||
296 | - /** | ||
297 | - * 读取excel表--当前激活的工作表 | ||
298 | - * @param path | ||
299 | - */ | ||
300 | - public static List<List<Object>> readExcel(String filepath, boolean hasLimit) throws Exception{ | ||
301 | - File file = new File(filepath); | ||
302 | - if(!file.exists()){ | ||
303 | - throw new Exception("Excel["+filepath+"]文件不存在"); | ||
304 | - } | ||
305 | - Workbook wb = UtilExcel.getWorkbook(filepath, true); | ||
306 | - return readExcelBySheetIndex(wb, wb.getActiveSheetIndex(), hasLimit); | ||
307 | - } | ||
308 | - | ||
309 | - /** | ||
310 | - * 读取 | ||
311 | - * @param filepath | ||
312 | - * @return | ||
313 | - * @throws Exception | ||
314 | - */ | ||
315 | - public static List<List<Object>> readExcelExcludeHideLine(String filepath) throws Exception{ | ||
316 | - File file = new File(filepath); | ||
317 | - if(!file.exists()){ | ||
318 | - throw new Exception("Excel["+filepath+"]文件不存在"); | ||
319 | - } | ||
320 | - Workbook wb = UtilExcel.getWorkbook(filepath, true); | ||
321 | - return readExcelBySheetIndexExcludeHideLine(filepath, wb.getActiveSheetIndex()); | ||
322 | - } | ||
323 | - | ||
324 | - /** | ||
325 | - * 读取excel表--所有工作表 | ||
326 | - * @param path | ||
327 | - */ | ||
328 | - public static List<List<Object>> readExcelAllSheet(String filepath) throws Exception{ | ||
329 | - File file = new File(filepath); | ||
330 | - List<List<Object>> result = new ArrayList<List<Object>>(); | ||
331 | - if(!file.exists()){ | ||
332 | - throw new Exception("Excel["+filepath+"]文件不存在"); | ||
333 | - } | ||
334 | - Workbook wb = UtilExcel.getWorkbook(filepath, true); | ||
335 | - int sheetNumber = wb.getNumberOfSheets(); | ||
336 | - | ||
337 | - for(int sheetIndex=0; sheetIndex<sheetNumber; ++sheetIndex){ | ||
338 | - result.addAll(readExcelBySheetIndex(filepath, sheetIndex)); | ||
339 | - } | ||
340 | - | ||
341 | - return result; | ||
342 | - } | ||
343 | - | ||
344 | - | ||
345 | - /** | ||
346 | - * 读取excel表--所有工作表 Map封装 | ||
347 | - * @param path | ||
348 | - */ | ||
349 | - public static Map<String,List<List<Object>>> readExcelAllSheetMap(String filepath) throws Exception{ | ||
350 | - File file = new File(filepath); | ||
351 | - HashMap<String, List<List<Object>>> map = new HashMap<String,List<List<Object>>>(); | ||
352 | - if(!file.exists()){ | ||
353 | - throw new Exception("Excel["+filepath+"]文件不存在"); | ||
354 | - } | ||
355 | - Workbook wb = UtilExcel.getWorkbook(filepath, true); | ||
356 | - int sheetNumber = wb.getNumberOfSheets(); | ||
357 | - | ||
358 | - for(int sheetIndex=0; sheetIndex<sheetNumber; ++sheetIndex){ | ||
359 | - map.put(sheetIndex+"",(readExcelBySheetIndexExcludeHideLine(filepath, sheetIndex))); | ||
360 | - } | ||
361 | - | ||
362 | - return map; | ||
363 | - } | ||
364 | - | ||
365 | - | ||
366 | - | ||
367 | - /** | ||
368 | - * 读取excel表--当前激活的工作表 | ||
369 | - * @param path | ||
370 | - */ | ||
371 | - public static List<List<Object>> readExcelBySheetIndex(String filepath, int sheetIndex) throws Exception{ | ||
372 | - File file = new File(filepath); | ||
373 | - if(!file.exists()){ | ||
374 | - throw new Exception("Excel["+filepath+"]文件不存在"); | ||
375 | - } | ||
376 | - Workbook wb = UtilExcel.getWorkbook(filepath, true); | ||
377 | - Sheet sheet = wb.getSheetAt(sheetIndex); | ||
378 | - return readExcelBySheet(sheet, UtilExcel.maxExcelRowNum, false); | ||
379 | - } | ||
380 | - | ||
381 | - private static List<List<Object>> readExcelBySheetIndex(Workbook wb, int sheetIndex) throws Exception{ | ||
382 | - return readExcelBySheetIndex(wb, sheetIndex, true); | ||
383 | - } | ||
384 | - | ||
385 | - private static List<List<Object>> readExcelBySheetIndex(Workbook wb, int sheetIndex, boolean hasRowLimit) throws Exception{ | ||
386 | - Sheet sheet = wb.getSheetAt(sheetIndex); | ||
387 | - if(hasRowLimit){ | ||
388 | - return readExcelBySheet(sheet, UtilExcel.maxExcelRowNum, false); | ||
389 | - }else { | ||
390 | - return readExcelBySheet(sheet, Integer.MAX_VALUE, false); | ||
391 | - } | ||
392 | - } | ||
393 | - | ||
394 | - /** | ||
395 | - * 读取excel表--当前激活的工作表 | ||
396 | - * @param path | ||
397 | - */ | ||
398 | - private static List<List<Object>> readExcelBySheet(Sheet sheet, int rowLimit, boolean excludeRowZeroHeight) throws Exception{ | ||
399 | - List<List<Object>> result = new ArrayList<List<Object>>(); | ||
400 | - int start = sheet.getFirstRowNum(); | ||
401 | - int end = sheet.getLastRowNum(); | ||
402 | - if(end > rowLimit){ | ||
403 | - end = rowLimit; | ||
404 | - } | ||
405 | - DecimalFormat df = new DecimalFormat("0.####"); | ||
406 | - for(int i=start; i<end+1; ++i){ | ||
407 | - Row row = sheet.getRow(i); | ||
408 | - if(row == null){ | ||
409 | - continue; | ||
410 | - } | ||
411 | - //去除隐藏行 | ||
412 | - if(excludeRowZeroHeight && row.getZeroHeight()){ | ||
413 | - continue; | ||
414 | - } | ||
415 | - List<Object> dataRow = new ArrayList<Object>(); | ||
416 | - int lastCellNum = row.getLastCellNum(); | ||
417 | - if(lastCellNum > UtilExcel.maxExcelColumnNum){ | ||
418 | - lastCellNum = UtilExcel.maxExcelColumnNum; | ||
419 | - } | ||
420 | - for(int j=0; j<lastCellNum; ++j){ | ||
421 | - try { | ||
422 | - dataRow.add(getCellValue(row.getCell(j), df)); | ||
423 | - }catch(Exception e) { | ||
424 | - dataRow.add(""); | ||
425 | - e.printStackTrace(); | ||
426 | - } | ||
427 | - } | ||
428 | - result.add(dataRow); | ||
429 | - } | ||
430 | - return result; | ||
431 | - } | ||
432 | - | ||
433 | - private static Object getCellValue(Cell cell, DecimalFormat df) { | ||
434 | - if(cell == null) { | ||
435 | - return ""; | ||
436 | - } | ||
437 | - CellType currCellType = cell.getCellTypeEnum(); | ||
438 | - | ||
439 | - if(currCellType.compareTo(CellType.STRING) == 0){ | ||
440 | - return UtilString.trimCodePage(cell.getRichStringCellValue().getString()); | ||
441 | - }else if(currCellType.compareTo(CellType.NUMERIC) == 0){ | ||
442 | - | ||
443 | - /** | ||
444 | - * yyyy-MM-dd----- 14 | ||
445 | - yyyy年m月d日--- 31 | ||
446 | - yyyy年m月------- 57 | ||
447 | - m月d日 ---------- 58 | ||
448 | - HH:mm----------- 20 | ||
449 | - h时mm分 ------- 32 | ||
450 | - yyyy-MM-dd HH:hh:ss 22 | ||
451 | - */ | ||
452 | - short format = cell.getCellStyle().getDataFormat(); | ||
453 | - if (DateUtil.isCellDateFormatted(cell)) { | ||
454 | - SimpleDateFormat sdf = null; | ||
455 | - if(format == 14 || format == 31 || format == 57 || format == 58 ){ | ||
456 | - //日期 | ||
457 | - sdf = new SimpleDateFormat("yyyy-MM-dd"); | ||
458 | - }else if (format == 20 || format == 32) { | ||
459 | - //时间 | ||
460 | - sdf = new SimpleDateFormat("HH:mm"); | ||
461 | - }else { | ||
462 | - sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | ||
463 | - } | ||
464 | - double value = cell.getNumericCellValue(); | ||
465 | - Date date = org.apache.poi.ss.usermodel.DateUtil.getJavaDate(value); | ||
466 | - return sdf.format(date); | ||
467 | - } else { | ||
468 | - return df.format(cell.getNumericCellValue()); | ||
469 | - } | ||
470 | - | ||
471 | - }else if(currCellType.compareTo(CellType.BOOLEAN) == 0){ | ||
472 | - return cell.getBooleanCellValue(); | ||
473 | - }else if(currCellType.compareTo(CellType.FORMULA) == 0){ | ||
474 | - return getFormulatValue(cell, df); | ||
475 | - } | ||
476 | - return ""; | ||
477 | - } | ||
478 | - | ||
479 | - private static Object getFormulatValue(Cell cell, DecimalFormat df) { | ||
480 | - CellType formulatResultType = cell.getCachedFormulaResultTypeEnum(); | ||
481 | - | ||
482 | - if(formulatResultType.compareTo(CellType.STRING) == 0){ | ||
483 | - return UtilString.trimCodePage(cell.getRichStringCellValue().getString()); | ||
484 | - }else if(formulatResultType.compareTo(CellType.NUMERIC) == 0){ | ||
485 | - return df.format(cell.getNumericCellValue()); | ||
486 | - }else if(formulatResultType.compareTo(CellType.BOOLEAN) == 0){ | ||
487 | - return cell.getBooleanCellValue(); | ||
488 | - }else if(formulatResultType.compareTo(CellType.FORMULA) == 0){ | ||
489 | - return ""; | ||
490 | - } | ||
491 | - return ""; | ||
492 | - } | ||
493 | - | ||
494 | - public static List<List<Object>> readExcelBySheetIndexExcludeHideLine(String filepath, int sheetIndex) throws Exception{ | ||
495 | - File file = new File(filepath); | ||
496 | - if(!file.exists()){ | ||
497 | - throw new Exception("Excel文件["+filepath+"]不存在"); | ||
498 | - } | ||
499 | - Workbook wb = UtilExcel.getWorkbook(filepath, true); | ||
500 | - Sheet sheet = wb.getSheetAt(sheetIndex); | ||
501 | - return readExcelBySheet(sheet, UtilExcel.maxExcelRowNum, true); | ||
502 | - } | ||
503 | - | ||
504 | - public static void main(String args[]){ | ||
505 | - //String filepath = "C:\\Users\\root\\Desktop\\千丁-6.27.xlsx"; | ||
506 | - //String filepath = "C:\\Users\\gaoming\\Desktop\\cccc.xls"; | ||
507 | - DecimalFormat df = new DecimalFormat("0.####"); | ||
508 | - | ||
509 | - System.out.println(df.format(3.333113F)); | ||
510 | - System.out.println(df.format(3.3)); | ||
511 | - System.out.println(df.format(3.3300)); | ||
512 | - | ||
513 | - | ||
514 | - String filepath = "C:\\Users\\EDZ\\Desktop\\詹姆士0623(3)(1).xlsx"; | ||
515 | - List<List<Object>> data = null; | ||
516 | - | ||
517 | - try { | ||
518 | - long start = System.currentTimeMillis(); | ||
519 | - System.out.println(start); | ||
520 | - Map<String, List<List<Object>>> map = UtilExcel.readExcelAllSheetMap(filepath); | ||
521 | - long end = System.currentTimeMillis(); | ||
522 | - System.out.println(end); | ||
523 | - System.out.println((end-start)/1000); | ||
524 | - | ||
525 | - | ||
526 | - //System.out.println(map); | ||
527 | - data = map.get("0"); | ||
528 | - System.out.println(data); | ||
529 | - for (int i = 0; i < data.size(); i++) { | ||
530 | - System.out.println(data.get(i).get(1)); | ||
531 | - } | ||
532 | -// System.out.println(data.size()); | ||
533 | -// System.out.println(UtilExcel.readExcelAllSheetMap(filepath)); | ||
534 | - } catch (Exception e) { | ||
535 | - // TODO Auto-generated catch block | ||
536 | - e.printStackTrace(); | ||
537 | - } | ||
538 | -// List<Short> styleList = new ArrayList<Short>(); | ||
539 | -// for(int i=0; i<data.size(); ++i){ | ||
540 | -// if(i == 1)styleList.add(Short.valueOf(HSSFColor.RED.index)); | ||
541 | -// else styleList.add(null); | ||
542 | -// for(int j=0; j<data.get(i).size(); ++j){ | ||
543 | -// System.out.print(data.get(i).get(j).toString()+" : "); | ||
544 | -// } | ||
545 | -// System.out.println(""); | ||
546 | -// } | ||
547 | -// try { | ||
548 | -// List<String> headerList = new ArrayList<String>(); | ||
549 | -// headerList.add("shhe1"); | ||
550 | -// headerList.add("shhe2"); | ||
551 | -// List<List<List<Object>>> dataList = new ArrayList<List<List<Object>>>(); | ||
552 | -// List<List<Object>> list1 = new ArrayList<List<Object>>(); | ||
553 | -// List<Object> list11 = new ArrayList<Object>(); | ||
554 | -// list11.add("hahaha"); | ||
555 | -// list11.add("hahaha"); | ||
556 | -// list11.add("hahaha"); | ||
557 | -// list1.add(list11); | ||
558 | -// | ||
559 | -// List<List<Object>> list2 = new ArrayList<List<Object>>(); | ||
560 | -// List<Object> list22 = new ArrayList<Object>(); | ||
561 | -// list22.add("hahaha2"); | ||
562 | -// list22.add("hahaha2"); | ||
563 | -// list22.add("hahaha2"); | ||
564 | -// list2.add(list22); | ||
565 | -// list2.add(list22); | ||
566 | -// | ||
567 | -// dataList.add(list1); | ||
568 | -// dataList.add(list2); | ||
569 | -// | ||
570 | -// UtilExcel.saveExcelContailSheet(headerList, dataList, "C:\\Users\\gaoming\\Desktop\\qwer.xls"); | ||
571 | -// } catch (Exception e) { | ||
572 | -// // TODO Auto-generated catch block | ||
573 | -// e.printStackTrace(); | ||
574 | -// } | ||
575 | - } | ||
576 | -} |
src/test/java/TempExcel.java
@@ -1,259 +0,0 @@ | @@ -1,259 +0,0 @@ | ||
1 | -import java.io.File; | ||
2 | -import java.util.ArrayList; | ||
3 | -import java.util.Collections; | ||
4 | -import java.util.Date; | ||
5 | -import java.util.HashMap; | ||
6 | -import java.util.Iterator; | ||
7 | -import java.util.List; | ||
8 | -import java.util.Map; | ||
9 | - | ||
10 | -import com.taover.util.UtilExcel; | ||
11 | - | ||
12 | -public class TempExcel { | ||
13 | - public static void main(String[] args){ | ||
14 | - //checkExcelError(); | ||
15 | - saveExcel(); | ||
16 | - } | ||
17 | - | ||
18 | - public static void saveExcel() { | ||
19 | - List<List<Object>> data = new ArrayList<List<Object>>(); | ||
20 | - data.add(Collections.singletonList(123)); | ||
21 | - data.add(Collections.singletonList(123.222)); | ||
22 | - data.add(Collections.singletonList(1232223234234234L)); | ||
23 | - data.add(Collections.singletonList("123")); | ||
24 | - data.add(Collections.singletonList("1232223234234234")); | ||
25 | - data.add(Collections.singletonList(new Date())); | ||
26 | - try { | ||
27 | - UtilExcel.saveExcel("data", data, "C:\\Users\\Administrator\\Desktop\\1234.xlsx"); | ||
28 | - } catch (Exception e) { | ||
29 | - e.printStackTrace(); | ||
30 | - } | ||
31 | - } | ||
32 | - | ||
33 | - public static void checkExcelError() { | ||
34 | - List<List<Object>> data = null; | ||
35 | - try { | ||
36 | - data = UtilExcel.readExcelAllSheet("C:\\Users\\Administrator\\Desktop\\1234.xls"); | ||
37 | - } catch (Exception e) { | ||
38 | - e.printStackTrace(); | ||
39 | - } | ||
40 | - System.out.println("end"+data.get(1).get(10)); | ||
41 | - //dealExcel(); | ||
42 | - //readExcel(); | ||
43 | - } | ||
44 | - | ||
45 | - private static void readExcel() { | ||
46 | - File file = new File("C:\\Users\\Administrator\\Desktop\\异常Excel\\1_2020-03-08-14h55m00s-面包仓-订单回传数据(2)(1).xlsx"); | ||
47 | - try { | ||
48 | - Map<String, List<List<Object>>> readExcelAllSheetMap = UtilExcel.readExcelAllSheetMap(file.getAbsolutePath()); | ||
49 | - System.out.println("12"); | ||
50 | - } catch (Exception e) { | ||
51 | - e.printStackTrace(); | ||
52 | - } | ||
53 | - } | ||
54 | - | ||
55 | - public static final String SEPARATE_CONSIGNEE_MOBILE = "__"; | ||
56 | - public static final int EXCEL_TIANMAO_CONSIGNEE_INDEX = 14; | ||
57 | - public static final int EXCEL_TIANMAO_MOBILE_INDEX = 18; | ||
58 | - public static final int EXCEL_TIANMAO_ORDERDATE_INDEX = 20; | ||
59 | - public static final int EXCEL_TIANMAO_GOODSNUMBER_INDEX = 26; | ||
60 | - public static final int EXCEL_JD_CONSIGNEE_INDEX = 14; | ||
61 | - public static final int EXCEL_JD_MOBILE_INDEX = 16; | ||
62 | - public static final int EXCEL_JD_ORDERDATE_INDEX = 24; | ||
63 | - public static final int EXCEL_JD_GOODSNUMBER_INDEX = 3; | ||
64 | - | ||
65 | - public static void dealExcel(){ | ||
66 | - try { | ||
67 | - List<List<Object>> tianmaoData = UtilExcel.readExcel("D:\\tempexcel\\tianmao.xlsx"); | ||
68 | - List<List<Object>> jdData = UtilExcel.readExcel("D:\\tempexcel\\jd.xls"); | ||
69 | - tianmaoData.remove(0); | ||
70 | - jdData.remove(0); | ||
71 | - | ||
72 | - //按下单人及下单手机号分类 | ||
73 | - Map<String, List<List<Object>>> separateData = new HashMap<String, List<List<Object>>>(); | ||
74 | - for(int i=0; i<tianmaoData.size(); ++i){ | ||
75 | - List<Object> tempData = tianmaoData.get(i); | ||
76 | - injectMap(separateData, getNameAndMobileByTianmao(tempData), tempData); | ||
77 | - } | ||
78 | - for(int i=0; i<jdData.size(); ++i){ | ||
79 | - List<Object> tempData = jdData.get(i); | ||
80 | - injectMap(separateData, getNameAndMobileByJd(tempData), tempData); | ||
81 | - } | ||
82 | - | ||
83 | - //分析下单分类 | ||
84 | - List<SeparateAnalysisInfo> analysisData = new ArrayList<SeparateAnalysisInfo>(); | ||
85 | - Iterator<String> keyIter = separateData.keySet().iterator(); | ||
86 | - while(keyIter.hasNext()){ | ||
87 | - String keyName = keyIter.next(); | ||
88 | - List<List<Object>> keyData = separateData.get(keyName); | ||
89 | - if(keyData.size() <= 1){ | ||
90 | - continue; | ||
91 | - } | ||
92 | - | ||
93 | - String[] keyNameSep = keyName.split(TempExcel.SEPARATE_CONSIGNEE_MOBILE); | ||
94 | - if(keyNameSep.length == 4){ | ||
95 | - SeparateAnalysisInfo anaInfo = new SeparateAnalysisInfo(keyNameSep[0], keyNameSep[1], keyData, Integer.valueOf(keyNameSep[2]), Integer.valueOf(keyNameSep[3])); | ||
96 | - if(anaInfo.getDescList().size() > 1){ | ||
97 | - analysisData.add(anaInfo); | ||
98 | - } | ||
99 | - } | ||
100 | - } | ||
101 | - | ||
102 | - //打印信息,保存信息 | ||
103 | - List<List<Object>> resultInfo = new ArrayList<List<Object>>(); | ||
104 | - List<Object> blankRow = new ArrayList<Object>(); | ||
105 | - for(int i=0; i<analysisData.size(); ++i){ | ||
106 | - SeparateAnalysisInfo item = analysisData.get(i); | ||
107 | - | ||
108 | - //添加空白间距行 | ||
109 | - resultInfo.add(blankRow); | ||
110 | - resultInfo.add(blankRow); | ||
111 | - | ||
112 | - //用户信息列 | ||
113 | - List<Object> userInfo = new ArrayList<Object>(); | ||
114 | - userInfo.add("收货人:"+item.getConsignee()); | ||
115 | - userInfo.add("电话号:"+item.getMobile()); | ||
116 | - resultInfo.add(userInfo); | ||
117 | - | ||
118 | - //下单信息列 | ||
119 | - List<Object> descInfo = new ArrayList<Object>(); | ||
120 | - descInfo.add("下单简述"); | ||
121 | - for(int j=0; j<item.getDescList().size(); ++j){ | ||
122 | - descInfo.add(item.getDescList().get(j)); | ||
123 | - } | ||
124 | - resultInfo.add(descInfo); | ||
125 | - | ||
126 | - //订单详情 | ||
127 | - resultInfo.addAll(item.getOrderData()); | ||
128 | - } | ||
129 | - UtilExcel.saveExcel("处理结果", resultInfo, "D:\\tempexcel\\resultinfo.xlsx"); | ||
130 | - } catch (Exception e) { | ||
131 | - e.printStackTrace(); | ||
132 | - } | ||
133 | - } | ||
134 | - | ||
135 | - public static void injectMap(Map<String, List<List<Object>>> separateData, String keyName, List<Object> keyValue){ | ||
136 | - if(separateData.containsKey(keyName)){ | ||
137 | - separateData.get(keyName).add(keyValue); | ||
138 | - }else{ | ||
139 | - List<List<Object>> tempData = new ArrayList<List<Object>>(); | ||
140 | - tempData.add(keyValue); | ||
141 | - separateData.put(keyName, tempData); | ||
142 | - } | ||
143 | - } | ||
144 | - | ||
145 | - public static String getNameAndMobileByTianmao(List<Object> data){ | ||
146 | - String name = data.get(EXCEL_TIANMAO_CONSIGNEE_INDEX).toString(); | ||
147 | - String mobile = data.get(EXCEL_TIANMAO_MOBILE_INDEX).toString(); | ||
148 | - return name+SEPARATE_CONSIGNEE_MOBILE+mobile+SEPARATE_CONSIGNEE_MOBILE+EXCEL_TIANMAO_ORDERDATE_INDEX+SEPARATE_CONSIGNEE_MOBILE+EXCEL_TIANMAO_GOODSNUMBER_INDEX; | ||
149 | - } | ||
150 | - | ||
151 | - public static String getNameAndMobileByJd(List<Object> data){ | ||
152 | - String name = data.get(EXCEL_JD_CONSIGNEE_INDEX).toString(); | ||
153 | - String mobile = data.get(EXCEL_JD_MOBILE_INDEX).toString(); | ||
154 | - return name+SEPARATE_CONSIGNEE_MOBILE+mobile+SEPARATE_CONSIGNEE_MOBILE+EXCEL_TIANMAO_ORDERDATE_INDEX+SEPARATE_CONSIGNEE_MOBILE+EXCEL_TIANMAO_GOODSNUMBER_INDEX; | ||
155 | - } | ||
156 | -} | ||
157 | - | ||
158 | -class SeparateAnalysisInfo{ | ||
159 | - private String consignee; | ||
160 | - private String mobile; | ||
161 | - private List<String> descList; | ||
162 | - private List<List<Object>> orderData; | ||
163 | - | ||
164 | - public SeparateAnalysisInfo(String consignee, String mobile, List<List<Object>> data, int excelOrderDateIndex, int excelGoodsNumberIndex){ | ||
165 | - this.consignee = consignee; | ||
166 | - this.mobile = mobile; | ||
167 | - this.orderData = data; | ||
168 | - | ||
169 | - for(int i=0; i<data.size(); ++i){ | ||
170 | - List<Object> dataItem = data.get(i); | ||
171 | - if(dataItem.get(excelOrderDateIndex) == null){ | ||
172 | - System.out.println("没有下单日期信息:"+this.consignee+"__"+this.mobile); | ||
173 | - continue; | ||
174 | - } | ||
175 | - if(dataItem.get(excelGoodsNumberIndex) == null){ | ||
176 | - System.out.println("没有商品数量信息:"+this.consignee+"__"+this.mobile); | ||
177 | - continue; | ||
178 | - } | ||
179 | - | ||
180 | - String orderDate = dataItem.get(excelOrderDateIndex).toString(); | ||
181 | - if(orderDate.contains("-")){ | ||
182 | - orderDate = orderDate.substring(0, 10); | ||
183 | - }else{ | ||
184 | - String[] dateInfo = orderDate.split(" "); | ||
185 | - if(dateInfo.length > 0){ | ||
186 | - orderDate = dateInfo[0].replace("/", "-"); | ||
187 | - } | ||
188 | - } | ||
189 | - String goodsNumber = dataItem.get(excelGoodsNumberIndex).toString(); | ||
190 | - this.addDescListItem(orderDate, goodsNumber); | ||
191 | - } | ||
192 | - } | ||
193 | - | ||
194 | - public String getConsignee() { | ||
195 | - return consignee; | ||
196 | - } | ||
197 | - public void setConsignee(String consignee) { | ||
198 | - this.consignee = consignee; | ||
199 | - } | ||
200 | - public String getMobile() { | ||
201 | - return mobile; | ||
202 | - } | ||
203 | - public void setMobile(String mobile) { | ||
204 | - this.mobile = mobile; | ||
205 | - } | ||
206 | - public List<String> getDescList() { | ||
207 | - return descList; | ||
208 | - } | ||
209 | - public void setDescList(List<String> descList) { | ||
210 | - this.descList = descList; | ||
211 | - } | ||
212 | - | ||
213 | - public void addDescListItem(String orderDate, String goodsNumber){ | ||
214 | - if(this.descList == null){ | ||
215 | - this.descList = new ArrayList<String>(); | ||
216 | - } | ||
217 | - String separateStr = "__"; | ||
218 | - | ||
219 | - //检查是否有重复日期的情况 | ||
220 | - boolean existsDate = false; | ||
221 | - for(int i=0; i<this.descList.size(); ++i){ | ||
222 | - String tempDesc = this.descList.get(i); | ||
223 | - if(tempDesc.startsWith(orderDate)){ | ||
224 | - existsDate = true; | ||
225 | - String[] tempData = tempDesc.split(separateStr); | ||
226 | - if(tempData.length > 1){ | ||
227 | - String[] tempDataGoods = tempData[1].split("件"); | ||
228 | - if(tempDataGoods.length > 0){ | ||
229 | - try{ | ||
230 | - int totalNumber = Integer.valueOf(tempDataGoods[0]).intValue()+Integer.valueOf(goodsNumber).intValue(); | ||
231 | - this.descList.set(i, orderDate+separateStr+totalNumber+"件"); | ||
232 | - }catch(Exception e){ | ||
233 | - e.printStackTrace(); | ||
234 | - } | ||
235 | - } | ||
236 | - } | ||
237 | - | ||
238 | - break; | ||
239 | - } | ||
240 | - } | ||
241 | - if(!existsDate){ | ||
242 | - this.descList.add(orderDate+separateStr+goodsNumber+"件"); | ||
243 | - } | ||
244 | - } | ||
245 | - | ||
246 | - public List<List<Object>> getOrderData() { | ||
247 | - return orderData; | ||
248 | - } | ||
249 | - public void setOrderData(List<List<Object>> orderData) { | ||
250 | - this.orderData = orderData; | ||
251 | - } | ||
252 | - | ||
253 | - public void addOrderDataItem(List<Object> orderData){ | ||
254 | - if(this.orderData == null){ | ||
255 | - this.orderData = new ArrayList<List<Object>>(); | ||
256 | - } | ||
257 | - this.orderData.add(orderData); | ||
258 | - } | ||
259 | -} |