标签:end actor tsp 加载 short case 表头 sub tostring
1.依赖:
<dependencies> <dependency> <groupId>com.github.jsqlparser</groupId> <artifactId>jsqlparser</artifactId> <version>3.2</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version> </dependency> <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> <classifier>jdk15</classifier> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.18</version> </dependency> </dependencies>
DTO
@Data public class ArgumentDTO { private String item; private String specification; private String remark; }
Utils
`import net.sf.json.JSONArray;
import org.apache.poi.ss.usermodel.*;
import java.io.File;
import java.util.Arrays;
/**
@author ergwang
@date 2021-5-13 20:10
*/
public class Excel2JsonUtils {
//常亮,用作第一种模板类型,如下图
private static final int HEADER_VALUE_TYPE_Z = 1;
//第二种模板类型,如下图
private static final int HEADER_VALUE_TYPE_S = 2;
/**
/**
/**
/**
获取表格中单元格的value
@throws
@Title: getCellValue
@Description: TODO(这里用一句话描述这个方法的作用)
@param: @param row
@param: @param cellIndex
@param: @param formula
@param: @return
@author LiYonghui
@date 2017年1月6日 下午5:40:28
@return: Object
*/
private Object getCellValue(Row row, int cellIndex, FormulaEvaluator formula) {
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 formula.evaluate(cell).getNumberValue();
default:
return null;
}
}
return null;
}
/**
/**
读取excel表格
@throws
@Title: readExcle
@Description: TODO(这里用一句话描述这个方法的作用)
@param: @param file
@param: @param headerIndex
@param: @param headType 表头的类型第一种 姓名(name)英文于实体类或者数据库中的变量一致
@author LiYonghui
@date 2017年1月6日 下午6:13:27
@return: void
*/
public JSONArray readExcle(File file, int headerIndex) {
ArgumentDTO[] arguments = null;
if (!fileNameFileter(file)) {
return null;
} else {
try {
//加载excel表格
Workbook wb = WorkbookFactory.create(file);
//读取第一个sheet页
Sheet sheet = wb.getSheetAt(0);
//读取数据
FormulaEvaluator formula = wb.getCreationHelper().createFormulaEvaluator();
short cellNum = sheet.getRow(0).getLastCellNum();
arguments = new ArgumentDTO[cellNum];
// 行
for (int i = headerIndex; i < sheet.getLastRowNum(); i++) {
// 获取行
Row dataRow = sheet.getRow(i + 1);
// 遍历一行的每个单元(我这里只有三个参数)
for (int j = 0; j < dataRow.getLastCellNum(); j++) {
String value = dataRow.getCell(j).getRichStringCellValue().getString();
if (j == 0) {
if (arguments[i] == null) {
arguments[i] = new ArgumentDTO();
}
arguments[i].setItem(value);
}
if (j == 1) {
arguments[i].setSpecification(value);
}
if (j == 2) {
arguments[i].setRemark(value);
}
}
}
System.out.println(Arrays.toString(arguments));
} catch (Exception e) {
e.printStackTrace();
}
}
return JSONArray.fromObject(arguments);
}
}
`
大部分参考网上代码,根据实际情况有所调整,原来代码是map,导致我的key相同的情况下数据丢失,暂时这样垃圾代码吧,后面有空再优化
标签:end actor tsp 加载 short case 表头 sub tostring
原文地址:https://www.cnblogs.com/ergwang/p/14766625.html