fix: 识别excel类型

This commit is contained in:
taojinlong 2021-10-19 17:50:27 +08:00
parent 436fc108a0
commit 1046e09c98
3 changed files with 6 additions and 81 deletions

View File

@ -1,78 +0,0 @@
package io.dataease.commons.utils;
import com.google.gson.Gson;
import io.dataease.datasource.dto.TableFiled;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.List;
public class ExcelReaderUtil {
//excel2003扩展名
public static final String EXCEL03_EXTENSION = ".xls";
//excel2007扩展名
public static final String EXCEL07_EXTENSION = ".xlsx";
public static void sendRows(String filePath, String sheetName, int sheetIndex, int curRow, List<String> cellList) {
StringBuffer oneLineSb = new StringBuffer();
oneLineSb.append(filePath);
oneLineSb.append("--");
oneLineSb.append("sheet" + sheetIndex);
oneLineSb.append("::" + sheetName);//加上sheet名
oneLineSb.append("--");
oneLineSb.append("row" + curRow);
oneLineSb.append("::");
// map.put(cellList.get(9),cellList.get(0)) ;
for (String cell : cellList) {
oneLineSb.append(cell.trim());
oneLineSb.append("|");
}
String oneLine = oneLineSb.toString();
if (oneLine.endsWith("|")) {
oneLine = oneLine.substring(0, oneLine.lastIndexOf("|"));
}// 去除最后一个分隔符
System.out.println(oneLine);
}
/**
* 读取excel文件路径
* @param fileName 文件路径
* @throws Exception
*/
public static void readExcel(String fileName, InputStream inputStream) throws Exception {
if (fileName.endsWith(EXCEL03_EXTENSION)) { //处理excel2003文件
ExcelXlsReader excelXls=new ExcelXlsReader();
excelXls.process(inputStream);
System.out.println(excelXls.totalSheets.size());
System.out.println(excelXls.totalSheets.get(0).getExcelLable());
for (TableFiled field : excelXls.totalSheets.get(0).getFields()) {
System.out.println(new Gson().toJson(field));
}
System.out.println(excelXls.totalSheets.get(0).getData().get(0));
System.out.println(excelXls.totalSheets.get(0).getData().get(1));
System.out.println(excelXls.totalSheets.get(0).getData().get(2));
} else if (fileName.endsWith(EXCEL07_EXTENSION)) {//处理excel2007文件
ExcelXlsxReader excelXlsxReader = new ExcelXlsxReader();
excelXlsxReader.process(inputStream);
System.out.println(excelXlsxReader.totalSheets.get(0).getFields().size());
for (TableFiled field : excelXlsxReader.totalSheets.get(0).getFields()) {
System.out.println(new Gson().toJson(field));
}
System.out.println(excelXlsxReader.totalSheets.get(0).getData().get(0));
} else {
throw new Exception("文件格式错误fileName的扩展名只能是xls或xlsx。");
}
}
/* public static void main(String[] args) throws Exception {
String file ="修改日期为mm-dd-yyyy.xlsx";
ExcelReaderUtil.readExcel(file, new FileInputStream("/Users/taojinlong/Desktop/" + file));
} */
}

View File

@ -23,8 +23,6 @@ import java.util.stream.Collectors;
**/
public class ExcelXlsReader implements HSSFListener {
public ExcelReaderUtil excelReaderUtil = new ExcelReaderUtil();
private int minColums = -1;
private POIFSFileSystem fs;

View File

@ -345,6 +345,7 @@ public class ExcelXlsxReader extends DefaultHandler {
{ // 日期
isDateFormat = true;
}
}
}
@ -398,8 +399,12 @@ public class ExcelXlsxReader extends DefaultHandler {
thisStr = value;
}
thisStr = thisStr.replace("_", "").trim();
if(isDateFormat){
if(isDateFormat ){
type = "DATETIME";isDateFormat = false;
if(formatString != null && formatString.contains("%")){
type = getType(thisStr);
}
}else {
type = getType(thisStr);
}