提交 1046e09c authored 作者: taojinlong's avatar taojinlong

fix: 识别excel类型

上级 436fc108
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));
} */
}
...@@ -23,8 +23,6 @@ import java.util.stream.Collectors; ...@@ -23,8 +23,6 @@ import java.util.stream.Collectors;
**/ **/
public class ExcelXlsReader implements HSSFListener { public class ExcelXlsReader implements HSSFListener {
public ExcelReaderUtil excelReaderUtil = new ExcelReaderUtil();
private int minColums = -1; private int minColums = -1;
private POIFSFileSystem fs; private POIFSFileSystem fs;
......
...@@ -345,6 +345,7 @@ public class ExcelXlsxReader extends DefaultHandler { ...@@ -345,6 +345,7 @@ public class ExcelXlsxReader extends DefaultHandler {
{ // 日期 { // 日期
isDateFormat = true; isDateFormat = true;
} }
} }
} }
...@@ -398,8 +399,12 @@ public class ExcelXlsxReader extends DefaultHandler { ...@@ -398,8 +399,12 @@ public class ExcelXlsxReader extends DefaultHandler {
thisStr = value; thisStr = value;
} }
thisStr = thisStr.replace("_", "").trim(); thisStr = thisStr.replace("_", "").trim();
if(isDateFormat){
if(isDateFormat ){
type = "DATETIME";isDateFormat = false; type = "DATETIME";isDateFormat = false;
if(formatString != null && formatString.contains("%")){
type = getType(thisStr);
}
}else { }else {
type = getType(thisStr); type = getType(thisStr);
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论