程序主体:
点击(此处)折叠或打开
- /*json头模板*/
- public static final int HEADER_VALUE_TYPE_O = 1;
-
- /*实例*/
- public static ExcelToJson getExcelToJson() {
- return new ExcelToJson();
- }
-
- /*读取excel*/
- public JSONArray readExcel(File file, int headerIndex, int headType) {
- List<Map<String, Object>> lists = new ArrayList<Map<String, Object>>();
- if (!fileNameFileter(file)) {
- return null;
- } else {
- try {
- WorkbookFactory factory = new WorkbookFactory();
- Workbook workbook = factory.create(file);
- Sheet sheet = workbook.getSheetAt(0);
- Row headerRow = getHeaderRow(sheet, headerIndex);
- FormulaEvaluator formulaEvaluator = workbook.getCreationHelper().createFormulaEvaluator();
- for (int r = headerIndex + 1; r < sheet.getLastRowNum() + 1; r++) {
- Row dataRow = sheet.getRow(r);
- Map<String, Object> map = new HashMap<String, Object>();
- for (int h = 0; h < dataRow.getLastCellNum(); h++) {
- String key = getHeaderCellValue(headerRow, h, headType);
- Object value = getCellValue(dataRow, h, formulaEvaluator);
- if (!key.equals("") && !key.equals("null") && key != null) {
- map.put(key, value);
- }
- }
- lists.add(map);
-
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- JSONArray jsonArray = JSONArray.fromObject(lists);
- return jsonArray;
- }
-
- /*文件过滤,只有表格才可以处理*/
- public boolean fileNameFileter(File file) {
- boolean endsWith = false;
- if (file != null) {
- String fileName = file.getName();
- endsWith = fileName.endsWith(".xls") || fileName.endsWith(".xlsx");
- }
- return endsWith;
- }
-
- /*获取表的行*/
- public Row getHeaderRow(Sheet sheet, int index) {
- Row headerRow = null;
- if (sheet != null) {
- headerRow = sheet.getRow(index);
- }
- return headerRow;
- }
-
- /*获取表头的value*/
- public String getHeaderCellValue(Row headerRow, int cellIndex, int type) {
- Cell cell = headerRow.getCell(cellIndex);
- String headerValue = null;
- if (cell != null) {
- if (HEADER_VALUE_TYPE_O == type) {
- headerValue = cell.getRichStringCellValue().getString();
- }
- }
- return headerValue;
- }
-
- /*获取单元格的值*/
- public Object getCellValue(Row row, int cellIndex, FormulaEvaluator formulaEvaluator) {
- Cell cell = row.getCell(cellIndex);
- if (cell != null) {
- switch (cell.getCellType()) {
- //String
- case Cell.CELL_TYPE_STRING:
- return cell.getRichStringCellValue().getString();
-
- //Number
- case Cell.CELL_TYPE_NUMERIC:
- if (DateUtil.isCellDateFormatted(cell)) {
- return cell.getDateCellValue().getTime();
- } else {
- return cell.getNumericCellValue();
- }
-
- //boolean
- case Cell.CELL_TYPE_BOOLEAN:
- return cell.getBooleanCellValue();
-
- //公式
- case Cell.CELL_TYPE_FORMULA:
- return formulaEvaluator.evaluate(cell).getNumberValue();
- default:
- return null;
- }
- }
- return null;
- }
测试方法:
点击(此处)折叠或打开
- /*测试入口*/
- public static void main(String[] args) {
- File file = new File("C:\\a.xls");
- ExcelToJson excelToJson = getExcelToJson();
- JSONArray jsonArray = excelToJson.readExcel(file, 0, 1);
- System.out.println(jsonArray.toString());
- }
点击(此处)折叠或打开
- <!--POI-->
- <dependency>
- <groupId>org.apache.poi</groupId>
- <artifactId>poi</artifactId>
- <version>3.15</version>
- </dependency>
-
- <dependency>
- <groupId>org.apache.poi</groupId>
- <artifactId>poi-ooxml</artifactId>
- <version>3.15</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/net.sourceforge.jexcelapi/jxl -->
- <dependency>
- <groupId>net.sourceforge.jexcelapi</groupId>
- <artifactId>jxl</artifactId>
- <version>2.6.12</version>
- </dependency>
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30046312/viewspace-2150637/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30046312/viewspace-2150637/