Java处理Excel,转换为json返回
2021-05-29 19:02
标签:end actor tsp 加载 short case 表头 sub tostring
1.依赖:
-
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;/**
- 获取一个实例
*/
private static Excel2JsonUtils getExcel2JSONHelper() {
return new Excel2JsonUtils();
}
/**
- 文件过滤
- @throws
- @Title: fileNameFileter
- @Description: TODO(这里用一句话描述这个方法的作用)
- @param:
- @author LiYonghui
- @date 2017年1月6日 下午4:45:42
- @return: void
*/
private boolean fileNameFileter(File file) {
boolean endsWith = false;
if (file != null) {
String fileName = file.getName();
endsWith = fileName.endsWith(".xls") || fileName.endsWith(".xlsx");
}
return endsWith;
}
/**
- 获取表头行
- @throws
- @Title: getHeaderRow
- @Description: TODO(这里用一句话描述这个方法的作用)
- @param: @param sheet
- @param: @param index
- @param: @return
- @author LiYonghui
- @date 2017年1月6日 下午5:05:24
- @return: Row
*/
private Row getHeaderRow(Sheet sheet, int index) {
Row headerRow = null;
if (sheet != null) {
headerRow = sheet.getRow(index);
}
return headerRow;
}
/**
-
获取表格中单元格的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;
}
/**
- 获取表头value
- @throws
- @Title: getHeaderCellValue
- @Description: TODO(这里用一句话描述这个方法的作用)
- @param: @param headerRow
- @param: @param cellIndex 英文表头所在的行,从0开始计算哦
- @param: @param type 表头的类型第一种 姓名(name)英文于实体类或者数据库中的变量一致
- @param: @return
- @author LiYonghui
- @date 2017年1月6日 下午6:12:21
- @return: String
*/
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;
}
/**
-
读取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
}
return JSONArray.fromObject(arguments);
}
}
`
- 获取一个实例
大部分参考网上代码,根据实际情况有所调整,原来代码是map,导致我的key相同的情况下数据丢失,暂时这样垃圾代码吧,后面有空再优化
Java处理Excel,转换为json返回
标签:end actor tsp 加载 short case 表头 sub tostring
原文地址:https://www.cnblogs.com/ergwang/p/14766625.html
文章标题:Java处理Excel,转换为json返回
文章链接:http://soscw.com/index.php/essay/89233.html