Commit a4f5d61287d4ab9e55c1f03ca47b078b5de511cb
1 parent
299ab778
Exists in
master
part utilExcel
Showing
1 changed file
with
100 additions
and
4 deletions
Show diff stats
src/main/java/com/taover/util/UtilExcel.java
@@ -11,7 +11,6 @@ import java.util.List; | @@ -11,7 +11,6 @@ import java.util.List; | ||
11 | import java.util.Map; | 11 | import java.util.Map; |
12 | 12 | ||
13 | import org.apache.poi.hssf.usermodel.HSSFWorkbook; | 13 | import org.apache.poi.hssf.usermodel.HSSFWorkbook; |
14 | -import org.apache.poi.hssf.util.HSSFColor; | ||
15 | import org.apache.poi.ss.usermodel.Cell; | 14 | import org.apache.poi.ss.usermodel.Cell; |
16 | import org.apache.poi.ss.usermodel.CellStyle; | 15 | import org.apache.poi.ss.usermodel.CellStyle; |
17 | import org.apache.poi.ss.usermodel.CellType; | 16 | import org.apache.poi.ss.usermodel.CellType; |
@@ -25,7 +24,7 @@ public class UtilExcel { | @@ -25,7 +24,7 @@ public class UtilExcel { | ||
25 | private final static String excel2007U =".xlsx"; //2007+ 版本的excel | 24 | private final static String excel2007U =".xlsx"; //2007+ 版本的excel |
26 | private final static String CSV =".csv"; //csv | 25 | private final static String CSV =".csv"; //csv |
27 | 26 | ||
28 | - private final static int maxExcelRowNum = 5000; | 27 | + private final static int maxExcelRowNum = 10000; |
29 | private final static int maxExcelColumnNum = 50; | 28 | private final static int maxExcelColumnNum = 50; |
30 | 29 | ||
31 | /** | 30 | /** |
@@ -245,6 +244,20 @@ public class UtilExcel { | @@ -245,6 +244,20 @@ public class UtilExcel { | ||
245 | } | 244 | } |
246 | 245 | ||
247 | /** | 246 | /** |
247 | + * 读取excel表--当前激活的工作表 | ||
248 | + * @param path | ||
249 | + */ | ||
250 | + public static List<List<Object>> readExcel(String filepath, int rowLimit) throws Exception{ | ||
251 | + File file = new File(filepath); | ||
252 | + List<List<Object>> result = new ArrayList<List<Object>>(); | ||
253 | + if(!file.exists()){ | ||
254 | + return result; | ||
255 | + } | ||
256 | + Workbook wb = UtilExcel.getWorkbook(filepath, true); | ||
257 | + return readExcelBySheetIndex(filepath, wb.getActiveSheetIndex()); | ||
258 | + } | ||
259 | + | ||
260 | + /** | ||
248 | * 读取 | 261 | * 读取 |
249 | * @param filepath | 262 | * @param filepath |
250 | * @return | 263 | * @return |
@@ -297,8 +310,43 @@ public class UtilExcel { | @@ -297,8 +310,43 @@ public class UtilExcel { | ||
297 | int start = sheet.getFirstRowNum(); | 310 | int start = sheet.getFirstRowNum(); |
298 | int end = sheet.getLastRowNum(); | 311 | int end = sheet.getLastRowNum(); |
299 | if(end > UtilExcel.maxExcelRowNum){ | 312 | if(end > UtilExcel.maxExcelRowNum){ |
300 | - end = UtilExcel.maxExcelRowNum; | 313 | + throw new Exception("目前系统只支持读取10000行以内记录,您当前Excel行数过大"); |
314 | + } | ||
315 | + for(int i=start; i<end+1; ++i){ | ||
316 | + Row row = sheet.getRow(i); | ||
317 | + if(row == null){ | ||
318 | + continue; | ||
319 | + } | ||
320 | + List<Object> dataRow = new ArrayList<Object>(); | ||
321 | + int lastCellNum = row.getLastCellNum(); | ||
322 | + if(lastCellNum > UtilExcel.maxExcelColumnNum){ | ||
323 | + lastCellNum = UtilExcel.maxExcelColumnNum; | ||
324 | + } | ||
325 | + for(int j=0; j<lastCellNum; ++j){ | ||
326 | + try { | ||
327 | + dataRow.add(getCellValue(row.getCell(j), df)); | ||
328 | + }catch(Exception e) { | ||
329 | + dataRow.add(""); | ||
330 | + e.printStackTrace(); | ||
331 | + } | ||
332 | + } | ||
333 | + result.add(dataRow); | ||
334 | + } | ||
335 | + return result; | ||
336 | + } | ||
337 | + | ||
338 | + /** | ||
339 | + * 读取excel表--当前激活的工作表 | ||
340 | + * @param path | ||
341 | + */ | ||
342 | + public static List<List<Object>> readExcelBySheet(Sheet sheet, int rowLimit) throws Exception{ | ||
343 | + List<List<Object>> result = new ArrayList<List<Object>>(); | ||
344 | + int start = sheet.getFirstRowNum(); | ||
345 | + int end = sheet.getLastRowNum(); | ||
346 | + if(end > rowLimit){ | ||
347 | + end = rowLimit; | ||
301 | } | 348 | } |
349 | + DecimalFormat df = new DecimalFormat("0"); | ||
302 | for(int i=start; i<end+1; ++i){ | 350 | for(int i=start; i<end+1; ++i){ |
303 | Row row = sheet.getRow(i); | 351 | Row row = sheet.getRow(i); |
304 | if(row == null){ | 352 | if(row == null){ |
@@ -368,7 +416,7 @@ public class UtilExcel { | @@ -368,7 +416,7 @@ public class UtilExcel { | ||
368 | int start = sheet.getFirstRowNum(); | 416 | int start = sheet.getFirstRowNum(); |
369 | int end = sheet.getLastRowNum(); | 417 | int end = sheet.getLastRowNum(); |
370 | if(end > UtilExcel.maxExcelRowNum){ | 418 | if(end > UtilExcel.maxExcelRowNum){ |
371 | - end = UtilExcel.maxExcelRowNum; | 419 | + throw new Exception("目前系统只支持读取10000行以内记录,您当前Excel行数过大"); |
372 | } | 420 | } |
373 | for(int i=start; i<end+1; ++i){ | 421 | for(int i=start; i<end+1; ++i){ |
374 | Row row = sheet.getRow(i); | 422 | Row row = sheet.getRow(i); |
@@ -411,6 +459,54 @@ public class UtilExcel { | @@ -411,6 +459,54 @@ public class UtilExcel { | ||
411 | return result; | 459 | return result; |
412 | } | 460 | } |
413 | 461 | ||
462 | + public static List<List<Object>> readExcelBySheetExcludeHideLine(Sheet sheet, int rowLimit) throws Exception{ | ||
463 | + List<List<Object>> result = new ArrayList<List<Object>>(); | ||
464 | + DecimalFormat df = new DecimalFormat("0"); | ||
465 | + int start = sheet.getFirstRowNum(); | ||
466 | + int end = sheet.getLastRowNum(); | ||
467 | + if(end > rowLimit){ | ||
468 | + end = rowLimit; | ||
469 | + } | ||
470 | + for(int i=start; i<end+1; ++i){ | ||
471 | + Row row = sheet.getRow(i); | ||
472 | + if(row == null){ | ||
473 | + continue; | ||
474 | + } | ||
475 | + //去除隐藏行 | ||
476 | + if(row.getZeroHeight()){ | ||
477 | + continue; | ||
478 | + } | ||
479 | + List<Object> dataRow = new ArrayList<Object>(); | ||
480 | + int lastCellNum = row.getLastCellNum(); | ||
481 | + if(lastCellNum > UtilExcel.maxExcelColumnNum){ | ||
482 | + lastCellNum = UtilExcel.maxExcelColumnNum; | ||
483 | + } | ||
484 | + for(int j=0; j<lastCellNum; ++j){ | ||
485 | + Cell cell = row.getCell(j); | ||
486 | + if(cell != null){ | ||
487 | + CellType currCellType = cell.getCellTypeEnum(); | ||
488 | + | ||
489 | + if(currCellType.compareTo(CellType.STRING) == 0){ | ||
490 | + dataRow.add(UtilString.trimCodePage(cell.getRichStringCellValue().getString())); | ||
491 | + }else if(currCellType.compareTo(CellType.NUMERIC) == 0){ | ||
492 | + dataRow.add(df.format(cell.getNumericCellValue())); | ||
493 | + }else if(currCellType.compareTo(CellType.BOOLEAN) == 0){ | ||
494 | + dataRow.add(cell.getBooleanCellValue()); | ||
495 | + }else if(currCellType.compareTo(CellType.FORMULA) == 0 | ||
496 | + || currCellType.compareTo(CellType.BLANK) == 0 | ||
497 | + || currCellType.compareTo(CellType.ERROR) == 0){ | ||
498 | + dataRow.add(""); | ||
499 | + } | ||
500 | + | ||
501 | + }else{ | ||
502 | + dataRow.add(""); | ||
503 | + } | ||
504 | + } | ||
505 | + result.add(dataRow); | ||
506 | + } | ||
507 | + return result; | ||
508 | + } | ||
509 | + | ||
414 | public static void main(String args[]){ | 510 | public static void main(String args[]){ |
415 | //String filepath = "C:\\Users\\root\\Desktop\\千丁-6.27.xlsx"; | 511 | //String filepath = "C:\\Users\\root\\Desktop\\千丁-6.27.xlsx"; |
416 | String filepath = "C:\\Users\\EDZ\\Desktop\\榴莲1 (5).xlsx"; | 512 | String filepath = "C:\\Users\\EDZ\\Desktop\\榴莲1 (5).xlsx"; |