1
0
mirror of https://github.com/chatopera/cosin.git synced 2025-08-01 16:38:02 +08:00

Fix ExcelImportUtils

This commit is contained in:
dengchao@xgtl 2020-04-17 09:59:21 +08:00
parent ce30bca698
commit 3b039cce3c

View File

@ -21,7 +21,6 @@ import com.chatopera.cc.basic.MainUtils;
import com.chatopera.cc.model.MetadataTable; import com.chatopera.cc.model.MetadataTable;
import com.chatopera.cc.model.TableProperties; import com.chatopera.cc.model.TableProperties;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDataFormat; import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFDateUtil; import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
@ -40,29 +39,29 @@ import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
public class ExcelImportUtils{ public class ExcelImportUtils {
private DecimalFormat format = new DecimalFormat("###"); private final DecimalFormat format = new DecimalFormat("###");
protected DSDataEvent event ; protected DSDataEvent event;
public ExcelImportUtils(DSDataEvent event){ public ExcelImportUtils(DSDataEvent event) {
this.event = event ; this.event = event;
} }
public MetadataTable processExcel(final DSDataEvent event , String tableTitle){ public MetadataTable processExcel(final DSDataEvent event, String tableTitle) {
MetadataTable metaDataTable = new MetadataTable(); MetadataTable metaDataTable = new MetadataTable();
InputStream is = null; InputStream is = null;
boolean findId = false ; boolean findId = false;
try { try {
metaDataTable.setTablename(event.getTablename()); metaDataTable.setTablename(event.getTablename());
metaDataTable.setOrgi(this.event.getOrgi()); metaDataTable.setOrgi(this.event.getOrgi());
metaDataTable.setId(MainUtils.md5(event.getTablename())); metaDataTable.setId(MainUtils.md5(event.getTablename()));
metaDataTable.setTabledirid("0"); metaDataTable.setTabledirid("0");
metaDataTable.setCreater(event.getDSData().getUser().getId()); metaDataTable.setCreater(event.getDSData().getUser().getId());
metaDataTable.setCreatername(event.getDSData().getUser().getUsername()); metaDataTable.setCreatername(event.getDSData().getUser().getUsername());
metaDataTable.setName(tableTitle); metaDataTable.setName(tableTitle);
metaDataTable.setUpdatetime(new Date()); metaDataTable.setUpdatetime(new Date());
metaDataTable.setCreatetime(new Date()); metaDataTable.setCreatetime(new Date());
metaDataTable.setTableproperty(new ArrayList<TableProperties>()); metaDataTable.setTableproperty(new ArrayList<TableProperties>());
try { try {
is = new FileInputStream(event.getDSData().getFile()); is = new FileInputStream(event.getDSData().getFile());
} catch (FileNotFoundException ex) { } catch (FileNotFoundException ex) {
@ -84,320 +83,370 @@ public class ExcelImportUtils{
int totalRows = sheet.getPhysicalNumberOfRows(); int totalRows = sheet.getPhysicalNumberOfRows();
int colNum = titleRow.getPhysicalNumberOfCells(); int colNum = titleRow.getPhysicalNumberOfCells();
/** /*
* 需要检查Mapping 是否存在 * 需要检查Mapping 是否存在
*/ */
if(totalRows > 1) { if (totalRows > 1) {
Row row = sheet.getRow(0) ; Row row = sheet.getRow(0);
if(row!=null){ if (row != null) {
for(int col=0 ; col<colNum ; col++){ for (int col = 0; col < colNum; col++) {
Cell title = titleRow.getCell(col) ; Cell title = titleRow.getCell(col);
String titleValue = getValue(title) ; String titleValue = getValue(title);
if(!StringUtils.isBlank(titleValue)) { if (!StringUtils.isBlank(titleValue)) {
if(titleValue.equalsIgnoreCase("id")) { if (titleValue.equalsIgnoreCase("id")) {
findId = true ; findId = true;
} }
TableProperties tp = initProperties("f"+ MainUtils.genIDByKey(titleValue+"String") , titleValue, "String", event.getOrgi() , event.getTablename() , false) ; TableProperties tp = initProperties("f" + MainUtils.genIDByKey(titleValue + "String"), titleValue, "String", event.getOrgi(), event.getTablename(), false);
tp.setViewtype("list,add,edit,detail"); tp.setViewtype("list,add,edit,detail");
metaDataTable.getTableproperty().add(tp) ; metaDataTable.getTableproperty().add(tp);
} }
} }
} }
} }
if(findId == false) { if (findId == false) {
metaDataTable.getTableproperty().add(initProperties("id", "主键", "String", event.getOrgi() , event.getTablename() , true)) ; metaDataTable.getTableproperty().add(initProperties("id", "主键", "String", event.getOrgi(), event.getTablename(), true));
} }
metaDataTable.getTableproperty().add(initProperties("orgi", "租户ID", "String", event.getOrgi() , event.getTablename() , true)) ; metaDataTable.getTableproperty().add(initProperties("orgi", "租户ID", "String", event.getOrgi(), event.getTablename(), true));
metaDataTable.getTableproperty().add(initProperties("creater", "创建人", "String", event.getOrgi() , event.getTablename() , true)) ; metaDataTable.getTableproperty().add(initProperties("creater", "创建人", "String", event.getOrgi(), event.getTablename(), true));
metaDataTable.getTableproperty().add(initProperties("createtime", "创建时间", "Datetime", event.getOrgi() , event.getTablename() , true)) ; metaDataTable.getTableproperty().add(initProperties("createtime", "创建时间", "Datetime", event.getOrgi(), event.getTablename(), true));
metaDataTable.getTableproperty().add(initProperties("validresult", "数据状态", "String", event.getOrgi() , event.getTablename() , true)) ; metaDataTable.getTableproperty().add(initProperties("validresult", "数据状态", "String", event.getOrgi(), event.getTablename(), true));
metaDataTable.getTableproperty().add(initProperties("validmessage", "数据状态", "String", event.getOrgi() , event.getTablename() , true)) ; metaDataTable.getTableproperty().add(initProperties("validmessage", "数据状态", "String", event.getOrgi(), event.getTablename(), true));
metaDataTable.getTableproperty().add(initProperties("assuser", "分配执行人", "String", event.getOrgi() , event.getTablename() , true)) ; metaDataTable.getTableproperty().add(initProperties("assuser", "分配执行人", "String", event.getOrgi(), event.getTablename(), true));
metaDataTable.getTableproperty().add(initProperties(Constants.CSKEFU_SYSTEM_DIS_AI, "分配AI", "String", event.getOrgi() , event.getTablename() , true)) ; metaDataTable.getTableproperty().add(initProperties(Constants.CSKEFU_SYSTEM_DIS_AI, "分配AI", "String", event.getOrgi(), event.getTablename(), true));
metaDataTable.getTableproperty().add(initProperties(Constants.CSKEFU_SYSTEM_DIS_AGENT, "分配用户", "String", event.getOrgi() , event.getTablename() , true)) ; metaDataTable.getTableproperty().add(initProperties(Constants.CSKEFU_SYSTEM_DIS_AGENT, "分配用户", "String", event.getOrgi(), event.getTablename(), true));
metaDataTable.getTableproperty().add(initProperties(Constants.CSKEFU_SYSTEM_DIS_ORGAN, "分配部门", "String", event.getOrgi() , event.getTablename() , true)) ; metaDataTable.getTableproperty().add(initProperties(Constants.CSKEFU_SYSTEM_DIS_ORGAN, "分配部门", "String", event.getOrgi(), event.getTablename(), true));
metaDataTable.getTableproperty().add(initProperties(Constants.CSKEFU_SYSTEM_DIS_TIME, "分配时间", "Datetime", event.getOrgi() , event.getTablename() , true)) ; metaDataTable.getTableproperty().add(initProperties(Constants.CSKEFU_SYSTEM_DIS_TIME, "分配时间", "Datetime", event.getOrgi(), event.getTablename(), true));
metaDataTable.getTableproperty().add(initProperties("status", "状态", "String", event.getOrgi() , event.getTablename() , true)) ; metaDataTable.getTableproperty().add(initProperties("status", "状态", "String", event.getOrgi(), event.getTablename(), true));
/**
* 机器人/人工
*/
metaDataTable.getTableproperty().add(initProperties("process", "处理状态", "String", event.getOrgi() , event.getTablename() , true)) ;
metaDataTable.getTableproperty().add(initProperties("processtime", "处理时间", "Datetime", event.getOrgi() , event.getTablename() , true)) ;
metaDataTable.getTableproperty().add(initProperties("processmemo", "处理备注", "String", event.getOrgi() , event.getTablename() , true)) ;
metaDataTable.getTableproperty().add(initProperties("metaid", "元数据", "String", event.getOrgi() , event.getTablename() , true)) ;
metaDataTable.getTableproperty().add(initProperties("actid", "活动ID", "String", event.getOrgi() , event.getTablename() , true)) ;
metaDataTable.getTableproperty().add(initProperties("batid", "批次ID", "String", event.getOrgi() , event.getTablename() , true)) ;
metaDataTable.getTableproperty().add(initProperties("taskid", "任务ID", "String", event.getOrgi() , event.getTablename() , true)) ;
metaDataTable.getTableproperty().add(initProperties("filterid", "任务ID", "String", event.getOrgi() , event.getTablename() , true)) ;
metaDataTable.getTableproperty().add(initProperties("cusid", "客户ID", "String", event.getOrgi() , event.getTablename() , true)) ;
metaDataTable.getTableproperty().add(initProperties("calloutfilid", "筛选记录ID", "String", event.getOrgi() , event.getTablename() , true)) ;
metaDataTable.getTableproperty().add(initProperties("execid", "导入记录ID", "String", event.getOrgi() , event.getTablename() , true)) ;
metaDataTable.getTableproperty().add(initProperties("callstatus", "拨打状态", "String", event.getOrgi() , event.getTablename() , true)) ;
metaDataTable.getTableproperty().add(initProperties("workstatus", "业务状态", "String", event.getOrgi() , event.getTablename() , true)) ;
metaDataTable.getTableproperty().add(initProperties("apstatus", "是否预约", "String", event.getOrgi() , event.getTablename() , true)) ;
metaDataTable.getTableproperty().add(initProperties("aptime", "预约时间", "Date", event.getOrgi() , event.getTablename() , true)) ;
metaDataTable.getTableproperty().add(initProperties("apmemo", "预约备注", "String", event.getOrgi() , event.getTablename() , true)) ;
metaDataTable.getTableproperty().add(initProperties("calltime", "拨打时间", "Date", event.getOrgi() , event.getTablename() , true)) ;
metaDataTable.getTableproperty().add(initProperties("firstcalltimes", "首次拨打次数", "Date", event.getOrgi() , event.getTablename() , true)) ;
metaDataTable.getTableproperty().add(initProperties("firstcallstatus", "首次拨打结果", "String", event.getOrgi() , event.getTablename() , true)) ;
metaDataTable.getTableproperty().add(initProperties("calltimes", "拨打次数", "Long", event.getOrgi() , event.getTablename() , true)) ;
metaDataTable.getTableproperty().add(initProperties("succcall", "拨打成功次数", "Long", event.getOrgi() , event.getTablename() , true)) ;
metaDataTable.getTableproperty().add(initProperties("faildcall", "拨打失败次数", "Long", event.getOrgi() , event.getTablename() , true)) ;
/** /**
* 映射 Mapping , 已修正增加了一个手动映射的步骤上传数据结构以后允许手动映射 * 机器人/人工
*/ */
//ESTools.mapping(metaDataTable, MainContext.SYSTEM_INDEX); metaDataTable.getTableproperty().add(initProperties("process", "处理状态", "String", event.getOrgi(), event.getTablename(), true));
} catch (Exception e) { metaDataTable.getTableproperty().add(initProperties("processtime", "处理时间", "Datetime", event.getOrgi(), event.getTablename(), true));
e.printStackTrace(); metaDataTable.getTableproperty().add(initProperties("processmemo", "处理备注", "String", event.getOrgi(), event.getTablename(), true));
}finally{
if(is!=null){
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(event.getDSData().getFile()!=null && event.getDSData().getFile().exists()) {
event.getDSData().getFile().delete() ;
}
}
return metaDataTable;
}
private TableProperties initProperties(String name ,String title, String type ,String orgi ,String tableName , boolean sysfield) { metaDataTable.getTableproperty().add(initProperties("metaid", "元数据", "String", event.getOrgi(), event.getTablename(), true));
TableProperties tablePorperties = new TableProperties(name, type, 255 , tableName) ; metaDataTable.getTableproperty().add(initProperties("actid", "活动ID", "String", event.getOrgi(), event.getTablename(), true));
tablePorperties.setOrgi(orgi) ; metaDataTable.getTableproperty().add(initProperties("batid", "批次ID", "String", event.getOrgi(), event.getTablename(), true));
metaDataTable.getTableproperty().add(initProperties("taskid", "任务ID", "String", event.getOrgi(), event.getTablename(), true));
metaDataTable.getTableproperty().add(initProperties("filterid", "任务ID", "String", event.getOrgi(), event.getTablename(), true));
metaDataTable.getTableproperty().add(initProperties("cusid", "客户ID", "String", event.getOrgi(), event.getTablename(), true));
metaDataTable.getTableproperty().add(initProperties("calloutfilid", "筛选记录ID", "String", event.getOrgi(), event.getTablename(), true));
tablePorperties.setDatatypecode(0); metaDataTable.getTableproperty().add(initProperties("execid", "导入记录ID", "String", event.getOrgi(), event.getTablename(), true));
tablePorperties.setLength(255);
tablePorperties.setDatatypename(type);
tablePorperties.setName(title);
tablePorperties.setSysfield(sysfield); metaDataTable.getTableproperty().add(initProperties("callstatus", "拨打状态", "String", event.getOrgi(), event.getTablename(), true));
return tablePorperties; metaDataTable.getTableproperty().add(initProperties("workstatus", "业务状态", "String", event.getOrgi(), event.getTablename(), true));
}
private boolean isExcel2007(String fileName) { metaDataTable.getTableproperty().add(initProperties("apstatus", "是否预约", "String", event.getOrgi(), event.getTablename(), true));
metaDataTable.getTableproperty().add(initProperties("aptime", "预约时间", "Date", event.getOrgi(), event.getTablename(), true));
metaDataTable.getTableproperty().add(initProperties("apmemo", "预约备注", "String", event.getOrgi(), event.getTablename(), true));
metaDataTable.getTableproperty().add(initProperties("calltime", "拨打时间", "Date", event.getOrgi(), event.getTablename(), true));
metaDataTable.getTableproperty().add(initProperties("firstcalltimes", "首次拨打次数", "Date", event.getOrgi(), event.getTablename(), true));
metaDataTable.getTableproperty().add(initProperties("firstcallstatus", "首次拨打结果", "String", event.getOrgi(), event.getTablename(), true));
metaDataTable.getTableproperty().add(initProperties("calltimes", "拨打次数", "Long", event.getOrgi(), event.getTablename(), true));
metaDataTable.getTableproperty().add(initProperties("succcall", "拨打成功次数", "Long", event.getOrgi(), event.getTablename(), true));
metaDataTable.getTableproperty().add(initProperties("faildcall", "拨打失败次数", "Long", event.getOrgi(), event.getTablename(), true));
/**
* 映射 Mapping , 已修正增加了一个手动映射的步骤上传数据结构以后允许手动映射
*/
//ESTools.mapping(metaDataTable, MainContext.SYSTEM_INDEX);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (event.getDSData().getFile() != null && event.getDSData().getFile().exists()) {
event.getDSData().getFile().delete();
}
}
return metaDataTable;
}
private TableProperties initProperties(String name, String title, String type, String orgi, String tableName, boolean sysfield) {
TableProperties tablePorperties = new TableProperties(name, type, 255, tableName);
tablePorperties.setOrgi(orgi);
tablePorperties.setDatatypecode(0);
tablePorperties.setLength(255);
tablePorperties.setDatatypename(type);
tablePorperties.setName(title);
tablePorperties.setSysfield(sysfield);
return tablePorperties;
}
private boolean isExcel2007(String fileName) {
return fileName.matches("^.+\\.(?i)(xlsx)$"); return fileName.matches("^.+\\.(?i)(xlsx)$");
} }
@SuppressWarnings("deprecation")
private String getValue(Cell cell){
String strCell = "";
if(cell!=null){
short dt = cell.getCellStyle().getDataFormat() ;
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_STRING:
strCell = cell.getStringCellValue();
break;
case HSSFCell.CELL_TYPE_BOOLEAN:
strCell = String.valueOf(cell.getBooleanCellValue());
break;
case HSSFCell.CELL_TYPE_BLANK:
strCell = "";
break;
case HSSFCell.CELL_TYPE_NUMERIC:
if (HSSFDateUtil.isCellDateFormatted(cell)) {
SimpleDateFormat sdf = null;
if (cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("h:mm")) {
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
} else {// 日期
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}
strCell = sdf.format(cell.getDateCellValue());
} else if (cell.getCellStyle().getDataFormat() == 58) {
// 处理自定义日期格式m月d日(通过判断单元格的格式id解决id的值是58)
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
double value = cell.getNumericCellValue();
strCell = sdf.format(org.apache.poi.ss.usermodel.DateUtil.getJavaDate(value));
}else{
if (HSSFDateUtil.isCellDateFormatted(cell)) { @SuppressWarnings("deprecation")
SimpleDateFormat sdf = null; private String getValue(Cell cell) {
if (cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("h:mm")) { String strCell = "";
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); if (cell != null) {
} else {// 日期 short dt = cell.getCellStyle().getDataFormat();
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); switch (cell.getCellType()) {
} case STRING:
strCell = sdf.format(cell.getDateCellValue()); strCell = cell.getStringCellValue();
}else{ break;
boolean isNumber = isNumberFormat(dt) ; case BOOLEAN:
if(isNumber){ strCell = String.valueOf(cell.getBooleanCellValue());
DecimalFormat numberFormat = getNumberFormat(cell.getCellStyle().getDataFormatString()) ; break;
if(numberFormat!=null){ case BLANK:
strCell = String.valueOf(numberFormat.format(cell.getNumericCellValue())); strCell = "";
}else{ break;
strCell = String.valueOf(cell.getNumericCellValue()); case NUMERIC:
} if (HSSFDateUtil.isCellDateFormatted(cell)) {
}else{ SimpleDateFormat sdf = null;
strCell = String.valueOf(format.format(cell.getNumericCellValue())) ; if (cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("h:mm")) {
} sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
} } else {// 日期
} sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
break; }
case HSSFCell.CELL_TYPE_FORMULA: { strCell = sdf.format(cell.getDateCellValue());
// 判断当前的cell是否为Date } else if (cell.getCellStyle().getDataFormat() == 58) {
boolean isNumber = isNumberFormat(dt) ; // 处理自定义日期格式m月d日(通过判断单元格的格式id解决id的值是58)
try{ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if(isNumber){ double value = cell.getNumericCellValue();
strCell = String.valueOf(cell.getNumericCellValue()); strCell = sdf.format(org.apache.poi.ss.usermodel.DateUtil.getJavaDate(value));
}else{ } else {
strCell = "";
} if (HSSFDateUtil.isCellDateFormatted(cell)) {
}catch(Exception ex){ SimpleDateFormat sdf = null;
ex.printStackTrace(); if (cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("h:mm")) {
strCell = cell.getRichStringCellValue().getString(); sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
} } else {// 日期
break; sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
} }
default: strCell = sdf.format(cell.getDateCellValue());
strCell = ""; } else {
break; boolean isNumber = isNumberFormat(dt);
} if (isNumber) {
if (strCell.equals("") || strCell == null) { DecimalFormat numberFormat = getNumberFormat(cell.getCellStyle().getDataFormatString());
return ""; if (numberFormat != null) {
} strCell = String.valueOf(numberFormat.format(cell.getNumericCellValue()));
} } else {
strCell = String.valueOf(cell.getNumericCellValue());
}
} else {
strCell = String.valueOf(format.format(cell.getNumericCellValue()));
}
}
}
break;
case FORMULA: {
// 判断当前的cell是否为Date
boolean isNumber = isNumberFormat(dt);
try {
if (isNumber) {
strCell = String.valueOf(cell.getNumericCellValue());
} else {
strCell = "";
}
} catch (Exception ex) {
ex.printStackTrace();
strCell = cell.getRichStringCellValue().getString();
}
break;
}
default:
strCell = "";
break;
}
if (strCell.equals("")) {
return "";
}
}
return strCell; return strCell;
} }
@SuppressWarnings({ "deprecation", "unused" }) @SuppressWarnings({"deprecation", "unused"})
private String getDataType(Cell cell){ private String getDataType(Cell cell) {
String dataType = "string"; String dataType = "string";
if(cell!=null){ if (cell != null) {
short dt = cell.getCellStyle().getDataFormat() ; short dt = cell.getCellStyle().getDataFormat();
switch (cell.getCellType()) { switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_STRING: case STRING:
dataType = "string"; dataType = "string";
break; break;
case HSSFCell.CELL_TYPE_BOOLEAN: case BOOLEAN:
dataType = "number"; dataType = "number";
break; break;
case HSSFCell.CELL_TYPE_BLANK: case BLANK:
if (HSSFDateUtil.isCellDateFormatted(cell)) { if (HSSFDateUtil.isCellDateFormatted(cell)) {
if (cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("h:mm")) { if (cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("h:mm")) {
dataType = "datetime" ; dataType = "datetime";
} else {// 日期 } else {// 日期
dataType = "datetime" ; dataType = "datetime";
} }
} else if (cell.getCellStyle().getDataFormat() == 58){ } else if (cell.getCellStyle().getDataFormat() == 58) {
dataType = "datetime" ; dataType = "datetime";
}else{ } else {
boolean isNumber = isNumberFormat(dt) ; boolean isNumber = isNumberFormat(dt);
if(isNumber){ if (isNumber) {
dataType = "number"; dataType = "number";
}else{ } else {
dataType = "string"; dataType = "string";
} }
} }
break; break;
case HSSFCell.CELL_TYPE_NUMERIC: case NUMERIC:
if (HSSFDateUtil.isCellDateFormatted(cell)) { if (HSSFDateUtil.isCellDateFormatted(cell)) {
if (cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("h:mm")) { if (cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("h:mm")) {
dataType = "datetime" ; dataType = "datetime";
} else {// 日期 } else {// 日期
dataType = "datetime" ; dataType = "datetime";
} }
} else if (cell.getCellStyle().getDataFormat() == 58){ } else if (cell.getCellStyle().getDataFormat() == 58) {
dataType = "datetime" ; dataType = "datetime";
}else{ } else {
if (HSSFDateUtil.isCellDateFormatted(cell)) { if (HSSFDateUtil.isCellDateFormatted(cell)) {
if (cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("h:mm")) { if (cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("h:mm")) {
dataType = "datetime" ; dataType = "datetime";
} else {// 日期 } else {// 日期
dataType = "datetime" ; dataType = "datetime";
} }
}else{ } else {
boolean isNumber = isNumberFormat(dt) ; boolean isNumber = isNumberFormat(dt);
if(isNumber){ if (isNumber) {
dataType = "number"; dataType = "number";
}else{ } else {
dataType = "string"; dataType = "string";
} }
} }
} }
break; break;
case HSSFCell.CELL_TYPE_FORMULA: { case FORMULA: {
// 判断当前的cell是否为Date // 判断当前的cell是否为Date
boolean isNumber = isNumberFormat(dt) ; boolean isNumber = isNumberFormat(dt);
if(isNumber){ if (isNumber) {
dataType = "number"; dataType = "number";
}else{ } else {
dataType = "string"; dataType = "string";
} }
break; break;
} }
default: default:
dataType = "string"; dataType = "string";
break; break;
} }
} }
return dataType; return dataType;
} }
private DecimalFormat getNumberFormat(String dataformat){ private DecimalFormat getNumberFormat(String dataformat) {
DecimalFormat numberFormat = null ; DecimalFormat numberFormat = null;
int index = dataformat.indexOf("_") > 0 ? dataformat.indexOf("_") : dataformat.indexOf(";") ; int index = dataformat.indexOf("_") > 0 ? dataformat.indexOf("_") : dataformat.indexOf(";");
if(index > 0){ if (index > 0) {
String format = dataformat.substring( 0 , index) ; String format = dataformat.substring(0, index);
if(format.matches("[\\d.]{1,}")){ if (format.matches("[\\d.]{1,}")) {
numberFormat = new DecimalFormat(format); numberFormat = new DecimalFormat(format);
} }
} }
return numberFormat ; return numberFormat;
} }
private boolean isNumberFormat(short dataType){ private boolean isNumberFormat(short dataType) {
boolean number = false ; boolean number = false;
switch(dataType){ switch (dataType) {
case 180 : number = true ; break; case 180:
case 181 : number = true ; break; number = true;
case 182 : number = true ; break; break;
case 178 : number = true ; break; case 181:
case 177 : number = true ; break; number = true;
case 176 : number = true ; break; break;
case 183 : number = true ; break; case 182:
case 185 : number = true ; break; number = true;
case 186 : number = true ; break; break;
case 179 : number = true ; break; case 178:
case 187 : number = true ; break; number = true;
case 7 : number = true ; break; break;
case 8 : number = true ; break; case 177:
case 44 : number = true ; break; number = true;
case 10 : number = true ; break; break;
case 12 : number = true ; break; case 176:
case 13 : number = true ; break; number = true;
case 188 : number = true ; break; break;
case 189 : number = true ; break; case 183:
case 190 : number = true ; break; number = true;
case 191 : number = true ; break; break;
case 192 : number = true ; break; case 185:
case 193 : number = true ; break; number = true;
case 194 : number = true ; break; break;
case 11 : number = true ; break; case 186:
number = true;
break;
case 179:
number = true;
break;
case 187:
number = true;
break;
case 7:
number = true;
break;
case 8:
number = true;
break;
case 44:
number = true;
break;
case 10:
number = true;
break;
case 12:
number = true;
break;
case 13:
number = true;
break;
case 188:
number = true;
break;
case 189:
number = true;
break;
case 190:
number = true;
break;
case 191:
number = true;
break;
case 192:
number = true;
break;
case 193:
number = true;
break;
case 194:
number = true;
break;
case 11:
number = true;
break;
} }
return number ; return number;
} }
} }