资源简介

excel通用解析和参数验证demo,里面包含两个接口方法,将excel(xlsx,和xls)文件,转为List对象,或者List 对象。 让开发者可以将精力放在解析对象上,而非row和cell的傻瓜式处理上

资源截图

代码片段和文件信息

package zxy.test.poi;

import java.io.File;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.ss.usermodel.Cell;
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.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import com.alibaba.fastjson.JSON;

/**
 * @author xinyzhang
 * 
 * @createTime 2018年9月28日-下午5:42:30
 *
 * @tag
 */
public class ExcelReader {
private static String ELEMENT_PROCESS = “process“;
private static String ELEMENT_NAME = “name“;
private static String ELEMENT_DATA = “data“;
private static String FILE_base_PATH = “/fmt/“;
private static String IGNONE_START_LINE = “ignone_start_line“;
private static String IGNONE_END_LINE = “ignone_end_line“;


public static  List readExcelToInstance(String filePath String modelFile String elementName String sheetName
Class c) throws Throwable {
List ts = new ArrayList();
Listject>> maps = readExcel(filePath modelFile elementName sheetName);
ts = (List) JSON.parseArray(JSON.toJSONString(maps) c);
return ts;
}

public static Listject>> readExcel(String filePath String modelFile String elementName
String sheetName) throws Throwable {

File excelFile = validate(filePath modelFile elementName);

Element opinionElement = getElementConfig(modelFile elementName);

// 自动适配xls或者xlsx
Workbook workbook = WorkbookFactory.create(excelFile);
Sheet sheet = null;
if (sheetName != null) {
sheet = workbook.getSheet(sheetName);
} else {
sheet = workbook.getSheetAt(0);
}

Listject>> maps = getBodyData(opinionElement sheet);

return maps;
}

private static File validate(String filePath String element String exeConfig) throws Throwable {
if (filePath == null || filePath.isEmpty() || element == null || element.isEmpty() || exeConfig == null
|| exeConfig.isEmpty()) {
throw new Throwable(“入参不能为空“);
}
if (!(filePath.endsWith(“.xls“) || filePath.endsWith(“.xlsx“))) {
throw new Throwable(“待解析文件格式,不为xls或者xlsx格式!“);
}
File file = new File(filePath);
if (!file.exists()) {
throw new Throwable(“未找到待解析文件:“ + filePath);
}
return file;
}

@SuppressWarnings(“unchecked“)
private static Element getElementConfig(String modelFile String elementName) throws Throwable {
// 获取模板文件,并找到模板文件中适用于本次解析的元素树
InputStream inputStream = ExcelReader.class.getResourceAsStream(FILE_base_PATH + modelFile);
if (inputStream == null) {
throw new Throwable(“未找到模板文件:“ + modelFile);
}
SAXReader reader = new SAXReader();
Document document = reader.read(inputStream);
Element rootElement = doc

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1078  2018-09-29 15:24  test\.classpath

     文件        556  2018-09-25 17:34  test\.project

     文件        119  2018-09-25 17:34  test\.settings\org.eclipse.core.resources.prefs

     文件        243  2018-09-25 17:34  test\.settings\org.eclipse.jdt.core.prefs

     文件         90  2018-09-25 17:34  test\.settings\org.eclipse.m2e.core.prefs

     文件       1735  2018-09-30 11:33  test\pom.xml

     文件       7400  2018-09-30 10:05  test\src\main\java\zxy\test\poi\ExcelReader.java

     文件       1025  2018-09-30 10:14  test\src\main\java\zxy\test\poi\test.java

     文件        833  2018-09-30 10:05  test\src\main\java\zxy\test\validate\App.java

     文件        166  2018-09-30 10:05  test\src\main\java\zxy\test\validate\dto\baseParseDto.java

     文件       4781  2018-09-30 10:05  test\src\main\java\zxy\test\validate\dto\CreateBindParseDto.java

     文件       1465  2018-09-30 10:05  test\src\main\java\zxy\test\validate\dto\Person.java

     文件        894  2018-09-30 10:05  test\src\main\java\zxy\test\validate\dto\resultRespEnum.java

     文件        901  2018-09-30 10:05  test\src\main\java\zxy\test\validate\dto\ResultValidate.java

     文件        301  2018-09-30 10:05  test\src\main\java\zxy\test\validate\service\Handle.java

     文件        905  2018-09-30 10:05  test\src\main\java\zxy\test\validate\util\Valite.java

     文件      32256  2018-09-30 10:08  test\src\main\resource\CreateBindImport.xls

     文件       1200  2018-09-29 18:19  test\src\main\resource\fmt\createBind.xml

     文件        674  2018-09-25 17:34  test\src\test\java\zxy\test\AppTest.java

     文件      32256  2018-09-30 10:08  test\target\classes\CreateBindImport.xls

     文件       1200  2018-09-29 18:19  test\target\classes\fmt\createBind.xml

     文件        111  2018-09-30 11:33  test\target\classes\meta-INF\MANIFEST.MF

     文件        199  2018-09-30 11:33  test\target\classes\meta-INF\maven\zxy\test\pom.properties

     文件       1735  2018-09-30 11:33  test\target\classes\meta-INF\maven\zxy\test\pom.xml

     文件        520  2018-09-30 11:33  test\target\classes\zxy\test\poi\ExcelReader$ParseSort.class

     文件       8663  2018-09-30 11:33  test\target\classes\zxy\test\poi\ExcelReader.class

     文件       1641  2018-09-30 11:33  test\target\classes\zxy\test\poi\test.class

     文件       1463  2018-09-30 11:33  test\target\classes\zxy\test\validate\App.class

     文件        305  2018-09-30 11:33  test\target\classes\zxy\test\validate\dto\baseParseDto.class

     文件       3943  2018-09-30 11:33  test\target\classes\zxy\test\validate\dto\CreateBindParseDto.class

............此处省略44个文件信息

评论

共有 条评论