Java处理Excel,转换为json返回
2021-05-29 19:02
标签:end actor tsp 加载 short case 表头 sub tostring 1.依赖: DTO Utils `import net.sf.json.JSONArray; import java.io.File; /** @author ergwang @date 2021-5-13 20:10 //常亮,用作第一种模板类型,如下图 /** /** /** /** 获取表格中单元格的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 } /** /** 读取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 } 大部分参考网上代码,根据实际情况有所调整,原来代码是map,导致我的key相同的情况下数据丢失,暂时这样垃圾代码吧,后面有空再优化 Java处理Excel,转换为json返回 标签:end actor tsp 加载 short case 表头 sub tostring 原文地址:https://www.cnblogs.com/ergwang/p/14766625.html
@Data public class ArgumentDTO { private String item; private String specification; private String remark; }
import org.apache.poi.ss.usermodel.*;
import java.util.Arrays;
*/
public class Excel2JsonUtils {
private static final int HEADER_VALUE_TYPE_Z = 1;
//第二种模板类型,如下图
private static final int HEADER_VALUE_TYPE_S = 2;
*/
private static Excel2JsonUtils getExcel2JSONHelper() {
return new Excel2JsonUtils();
}
*/
private boolean fileNameFileter(File file) {
boolean endsWith = false;
if (file != null) {
String fileName = file.getName();
endsWith = fileName.endsWith(".xls") || fileName.endsWith(".xlsx");
}
return endsWith;
}
*/
private Row getHeaderRow(Sheet sheet, int index) {
Row headerRow = null;
if (sheet != null) {
headerRow = sheet.getRow(index);
}
return headerRow;
}
*/
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;
}
*/
private String getHeaderCellValue(Row headerRow, int cellIndex, int type) {
Cell cell = headerRow.getCell(cellIndex);
String headerValue = null;
if (cell != null) {
//第一种模板类型
if (type == HEADER_VALUE_TYPE_Z) {
headerValue = cell.getRichStringCellValue().getString();
int l_bracket = headerValue.indexOf("(");
int r_bracket = headerValue.indexOf(")");
if (l_bracket == -1) {
l_bracket = headerValue.indexOf("(");
}
if (r_bracket == -1) {
r_bracket = headerValue.indexOf(")");
}
headerValue = headerValue.substring(l_bracket + 1, r_bracket);
} else if (type == HEADER_VALUE_TYPE_S) {
//第二种模板类型
headerValue = cell.getRichStringCellValue().getString();
}
}
return headerValue;
}
*/
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
return JSONArray.fromObject(arguments);
}
}
`