修复默认车牌与手机号返回错误
This commit is contained in:
parent
8b134da54b
commit
816eb5d96a
|
@ -32,18 +32,24 @@ import com.auxiliary.tool.date.Time;
|
|||
import com.opencsv.CSVReader;
|
||||
|
||||
/**
|
||||
* <p><b>文件名:</b>TableFileReadUtil.java</p>
|
||||
* <p><b>用途:</b>
|
||||
* 将存储在文件中的词语,以字符串的形式读取,并将值存储至{@link TableData}类中,可调用类中的方法,对
|
||||
* <p>
|
||||
* <b>文件名:</b>TableFileReadUtil.java
|
||||
* </p>
|
||||
* <p>
|
||||
* <b>用途:</b> 将存储在文件中的词语,以字符串的形式读取,并将值存储至{@link TableData}类中,可调用类中的方法,对
|
||||
* 读取的词语进行返回。文件支持表格文件(xls/xlsx/csv格式)和文本文件(doc/docx/txt格式)。
|
||||
* </p>
|
||||
* <p>
|
||||
* <b>注意:文件内,首行(首段)的内容为定制列表的标准,若其后的内容获取到的词语个数超出第一行获取到的
|
||||
* 词语个数,则将抛出{@link IllegalDataException}异常。
|
||||
* </b>
|
||||
* 词语个数,则将抛出{@link IllegalDataException}异常。 </b>
|
||||
* </p>
|
||||
* <p><b>编码时间:</b>2020年3月29日 下午2:36:46</p>
|
||||
* <p><b>修改时间:</b>2020年12月25日下午6:40:07</p>
|
||||
* <p>
|
||||
* <b>编码时间:</b>2020年3月29日 下午2:36:46
|
||||
* </p>
|
||||
* <p>
|
||||
* <b>修改时间:</b>2020年12月25日下午6:40:07
|
||||
* </p>
|
||||
*
|
||||
* @author 彭宇琦
|
||||
* @version Ver1.0
|
||||
* @since JDK 1.8
|
||||
|
@ -230,11 +236,10 @@ public class TableFileReadUtil {
|
|||
|
||||
try (Workbook excel = excelOptional.orElseThrow(() -> new UnsupportedFileException("Excel文件读取类未构造"))) {
|
||||
// 读取excel中的内容,若未存储读取的sheet名称,则读取第一个sheet
|
||||
Optional<Sheet> sheetOptional = Optional
|
||||
Sheet sheet = Optional
|
||||
.ofNullable(Optional.ofNullable(sheetName).orElse("").isEmpty() ? excel.getSheetAt(0)
|
||||
: excel.getSheet(sheetName));
|
||||
// 判断获取的sheet是否为null,为Null则同样获取第一个sheet
|
||||
Sheet sheet = sheetOptional.orElseThrow(() -> new UnsupportedFileException(String.format("“%s”工作表不存在", sheetName)));
|
||||
: excel.getSheet(sheetName))
|
||||
.orElseThrow(() -> new UnsupportedFileException(String.format("“%s”工作表不存在", sheetName)));
|
||||
|
||||
// 获取第一行内容
|
||||
Optional<Row> row = Optional.ofNullable(sheet.getRow(0));
|
||||
|
@ -278,9 +283,13 @@ public class TableFileReadUtil {
|
|||
*/
|
||||
private static List<String> readExcelLineData(Optional<Row> rowOption) {
|
||||
List<String> dataList = new ArrayList<>();
|
||||
rowOption.ifPresent(row -> row.cellIterator()
|
||||
.forEachRemaining(cell -> dataList.add(Optional.ofNullable(getCellContent(cell)).orElse(""))));
|
||||
|
||||
rowOption.ifPresent(row -> {
|
||||
IntStream.range(0, row.getLastCellNum())
|
||||
.mapToObj(row::getCell)
|
||||
.map(TableFileReadUtil::getCellContent)
|
||||
.forEach(dataList::add);
|
||||
});
|
||||
|
||||
return dataList;
|
||||
}
|
||||
|
||||
|
@ -290,40 +299,43 @@ public class TableFileReadUtil {
|
|||
* @param cell 单元格类对象
|
||||
* @return 单元格中的文本
|
||||
*/
|
||||
private static String getCellContent(Cell cell) {
|
||||
// 判断单元格中的内容的格式
|
||||
if (CellType.NUMERIC == cell.getCellTypeEnum()) {
|
||||
// 数值类型
|
||||
// 判断单元格内的数据是否为日期
|
||||
if (DateUtil.isCellDateFormatted(cell)) {
|
||||
// 将单元格内容转换为Date后,在time中进行存储
|
||||
Time time = new Time(cell.getDateCellValue());
|
||||
// 根据存储的时间格式,对时间进行转换,输出格式化后的时间
|
||||
return time.getFormatTime();
|
||||
private static String getCellContent(Cell cellObj) {
|
||||
return Optional.ofNullable(cellObj).map(cell -> {
|
||||
// 判断单元格中的内容的格式
|
||||
if (CellType.NUMERIC == cell.getCellTypeEnum()) {
|
||||
// 数值类型
|
||||
// 判断单元格内的数据是否为日期
|
||||
if (DateUtil.isCellDateFormatted(cell)) {
|
||||
// 将单元格内容转换为Date后,在time中进行存储
|
||||
Time time = new Time(cell.getDateCellValue());
|
||||
// 根据存储的时间格式,对时间进行转换,输出格式化后的时间
|
||||
return time.getFormatTime();
|
||||
} else {
|
||||
// 若非日期格式,则强转为字符串格式,之后输出
|
||||
cell.setCellType(CellType.STRING);
|
||||
return cell.getStringCellValue();
|
||||
}
|
||||
} else if (CellType.FORMULA == cell.getCellTypeEnum()) {
|
||||
// 公式类型
|
||||
// 公式得到的值可能是一个字符串,也可能是一个数字,此时则需要进行区分(转换错误会抛出异常)
|
||||
try {
|
||||
return cell.getRichStringCellValue().getString();
|
||||
} catch (IllegalStateException e) {
|
||||
return String.valueOf(cell.getNumericCellValue());
|
||||
}
|
||||
} else {
|
||||
// 若非日期格式,则强转为字符串格式,之后输出
|
||||
cell.setCellType(CellType.STRING);
|
||||
// 其他类型,按照字符串进行读取
|
||||
return cell.getStringCellValue();
|
||||
}
|
||||
} else if (CellType.FORMULA == cell.getCellTypeEnum()) {
|
||||
// 公式类型
|
||||
// 公式得到的值可能是一个字符串,也可能是一个数字,此时则需要进行区分(转换错误会抛出异常)
|
||||
try {
|
||||
return cell.getRichStringCellValue().getString();
|
||||
} catch (IllegalStateException e) {
|
||||
return String.valueOf(cell.getNumericCellValue());
|
||||
}
|
||||
} else {
|
||||
// 其他类型,按照字符串进行读取
|
||||
return cell.getStringCellValue();
|
||||
}
|
||||
//若单元格对象为空,则返回空串
|
||||
}).orElse("");
|
||||
}
|
||||
|
||||
/**
|
||||
* 该方法用于读取并处理旧版(后缀为“.doc”)word文件,可通过切分规则对文本每一行的内容进行切分
|
||||
*
|
||||
* @param file 文件
|
||||
* @param regex 切分规则
|
||||
* @param regex 切分规则
|
||||
* @param isFirstTitle 首行是否为标题行
|
||||
* @return 数据表类对象
|
||||
* @throws UnsupportedFileException 文件未传入或读取异常时抛出的异常
|
||||
|
@ -368,12 +380,14 @@ public class TableFileReadUtil {
|
|||
.mapToObj(wordFileRange::getParagraph)
|
||||
// 读取段落的内容,对内容进行封装
|
||||
.map(pa -> Optional.ofNullable(pa.text()))
|
||||
//去除换行符,并过滤掉空行
|
||||
.map(textOptional -> textOptional.map(text -> text.replaceAll("\\r", "")).filter(text -> !text.isEmpty()))
|
||||
// 去除换行符,并过滤掉空行
|
||||
.map(textOptional -> textOptional.map(text -> text.replaceAll("\\r", ""))
|
||||
.filter(text -> !text.isEmpty()))
|
||||
// 过滤掉无内容的段落
|
||||
.filter(text -> text.isPresent())
|
||||
// 切分字符串并转换为词语集合
|
||||
.map(textOptional -> Arrays.asList(textOptional.orElse("").split(Optional.ofNullable(regex).orElse(""))))
|
||||
.map(textOptional -> Arrays
|
||||
.asList(textOptional.orElse("").split(Optional.ofNullable(regex).orElse(""))))
|
||||
// 按行存储至列表对象中
|
||||
.forEach(wordTable::addRow);
|
||||
|
||||
|
@ -388,7 +402,7 @@ public class TableFileReadUtil {
|
|||
* 该方法用于读取并处理新版(后缀为“.docx”)word文件,可通过切分规则对文本每一行的内容进行切分
|
||||
*
|
||||
* @param file 文件
|
||||
* @param regex 切分规则
|
||||
* @param regex 切分规则
|
||||
* @param isFirstTitle 首行是否为标题行
|
||||
* @return 数据表类对象
|
||||
* @throws UnsupportedFileException 文件未传入或读取异常时抛出的异常
|
||||
|
@ -415,11 +429,11 @@ public class TableFileReadUtil {
|
|||
.asList(Optional.ofNullable(paragraphList.get(0).getText()).filter(text -> !text.isEmpty())
|
||||
.orElseThrow(() -> new UnsupportedFileException("首段文本为空,无法进行拉取")).split(regex));
|
||||
// 判断首行是否为标题行,若为标题行,则读取标题并进行存储;若不是,则存储默认的标题,并存储初始读取行的下标
|
||||
int startIndex = 0;
|
||||
int startIndex = 0;
|
||||
if (isFirstTitle) {
|
||||
// 存储第一行数据
|
||||
wordTable.addTitle(firstRowTextList);
|
||||
//paragraphList.remove(0);//直接移除会抛出异常
|
||||
// paragraphList.remove(0);//直接移除会抛出异常
|
||||
// 设置行起始读取下标为第2行
|
||||
startIndex = 1;
|
||||
} else {
|
||||
|
|
Loading…
Reference in New Issue