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

@ -1,403 +1,452 @@
/* /*
* Copyright (C) 2017 优客服-多渠道客服系统 * Copyright (C) 2017 优客服-多渠道客服系统
* Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com> * Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com>
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
* You may obtain a copy of the License at * You may obtain a copy of the License at
* *
* http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
* *
* Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
package com.chatopera.cc.util.dsdata; package com.chatopera.cc.util.dsdata;
import com.chatopera.cc.basic.Constants; import com.chatopera.cc.basic.Constants;
import com.chatopera.cc.basic.MainUtils; 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; import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileInputStream;
import java.io.FileInputStream; import java.io.FileNotFoundException;
import java.io.FileNotFoundException; import java.io.IOException;
import java.io.IOException; import java.io.InputStream;
import java.io.InputStream; import java.text.DecimalFormat;
import java.text.DecimalFormat; import java.text.SimpleDateFormat;
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 final DecimalFormat format = new DecimalFormat("###");
private 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) { ex.printStackTrace();
ex.printStackTrace(); }
} boolean isExcel2003 = true;
boolean isExcel2003 = true; if (isExcel2007(event.getDSData().getFile().getName())) {
if (isExcel2007(event.getDSData().getFile().getName())) { isExcel2003 = false;
isExcel2003 = false; }
}
Workbook wb = null;
Workbook wb = null; try {
try { wb = isExcel2003 ? new HSSFWorkbook(is) : new XSSFWorkbook(is);
wb = isExcel2003 ? new HSSFWorkbook(is) : new XSSFWorkbook(is); } catch (IOException ex) {
} catch (IOException ex) { ex.printStackTrace();
ex.printStackTrace(); }
} Sheet sheet = wb.getSheetAt(0);
Sheet sheet = wb.getSheetAt(0); Row titleRow = sheet.getRow(0);
Row titleRow = sheet.getRow(0); 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("process", "处理状态", "String", event.getOrgi() , event.getTablename() , true)) ; metaDataTable.getTableproperty().add(initProperties("processtime", "处理时间", "Datetime", 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("processmemo", "处理备注", "String", event.getOrgi() , event.getTablename() , true)) ;
metaDataTable.getTableproperty().add(initProperties("metaid", "元数据", "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("actid", "活动ID", "String", event.getOrgi() , event.getTablename() , true)) ; metaDataTable.getTableproperty().add(initProperties("batid", "批次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("taskid", "任务ID", "String", event.getOrgi() , event.getTablename() , true)) ; metaDataTable.getTableproperty().add(initProperties("filterid", "任务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("cusid", "客户ID", "String", event.getOrgi() , event.getTablename() , true)) ; metaDataTable.getTableproperty().add(initProperties("calloutfilid", "筛选记录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("execid", "导入记录ID", "String", event.getOrgi() , event.getTablename() , true)) ;
metaDataTable.getTableproperty().add(initProperties("callstatus", "拨打状态", "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("workstatus", "业务状态", "String", event.getOrgi() , event.getTablename() , true)) ;
metaDataTable.getTableproperty().add(initProperties("apstatus", "是否预约", "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("aptime", "预约时间", "Date", event.getOrgi() , event.getTablename() , true)) ; metaDataTable.getTableproperty().add(initProperties("apmemo", "预约备注", "String", 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("calltime", "拨打时间", "Date", event.getOrgi() , event.getTablename() , true)) ; metaDataTable.getTableproperty().add(initProperties("firstcalltimes", "首次拨打次数", "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("firstcallstatus", "首次拨打结果", "String", event.getOrgi() , event.getTablename() , true)) ;
metaDataTable.getTableproperty().add(initProperties("calltimes", "拨打次数", "Long", 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));
metaDataTable.getTableproperty().add(initProperties("succcall", "拨打成功次数", "Long", event.getOrgi() , event.getTablename() , true)) ;
metaDataTable.getTableproperty().add(initProperties("faildcall", "拨打失败次数", "Long", event.getOrgi() , event.getTablename() , true)) ; /**
* 映射 Mapping , 已修正增加了一个手动映射的步骤上传数据结构以后允许手动映射
/** */
* 映射 Mapping , 已修正增加了一个手动映射的步骤上传数据结构以后允许手动映射 //ESTools.mapping(metaDataTable, MainContext.SYSTEM_INDEX);
*/ } catch (Exception e) {
//ESTools.mapping(metaDataTable, MainContext.SYSTEM_INDEX); e.printStackTrace();
} catch (Exception e) { } finally {
e.printStackTrace(); if (is != null) {
}finally{ try {
if(is!=null){ is.close();
try { } catch (IOException e) {
is.close(); e.printStackTrace();
} catch (IOException e) { }
e.printStackTrace(); }
} if (event.getDSData().getFile() != null && event.getDSData().getFile().exists()) {
} event.getDSData().getFile().delete();
if(event.getDSData().getFile()!=null && event.getDSData().getFile().exists()) { }
event.getDSData().getFile().delete() ; }
} return metaDataTable;
} }
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);
private TableProperties initProperties(String name ,String title, String type ,String orgi ,String tableName , boolean sysfield) { tablePorperties.setOrgi(orgi);
TableProperties tablePorperties = new TableProperties(name, type, 255 , tableName) ;
tablePorperties.setOrgi(orgi) ; tablePorperties.setDatatypecode(0);
tablePorperties.setLength(255);
tablePorperties.setDatatypecode(0); tablePorperties.setDatatypename(type);
tablePorperties.setLength(255); tablePorperties.setName(title);
tablePorperties.setDatatypename(type);
tablePorperties.setName(title); tablePorperties.setSysfield(sysfield);
return tablePorperties;
tablePorperties.setSysfield(sysfield); }
return tablePorperties;
} private boolean isExcel2007(String fileName) {
return fileName.matches("^.+\\.(?i)(xlsx)$");
private boolean isExcel2007(String fileName) { }
return fileName.matches("^.+\\.(?i)(xlsx)$");
} @SuppressWarnings("deprecation")
@SuppressWarnings("deprecation") private String getValue(Cell cell) {
private String getValue(Cell cell){ String strCell = "";
String strCell = ""; if (cell != null) {
if(cell!=null){ short dt = cell.getCellStyle().getDataFormat();
short dt = cell.getCellStyle().getDataFormat() ; switch (cell.getCellType()) {
switch (cell.getCellType()) { case STRING:
case HSSFCell.CELL_TYPE_STRING: strCell = cell.getStringCellValue();
strCell = cell.getStringCellValue(); break;
break; case BOOLEAN:
case HSSFCell.CELL_TYPE_BOOLEAN: strCell = String.valueOf(cell.getBooleanCellValue());
strCell = String.valueOf(cell.getBooleanCellValue()); break;
break; case BLANK:
case HSSFCell.CELL_TYPE_BLANK: strCell = "";
strCell = ""; break;
break; case NUMERIC:
case HSSFCell.CELL_TYPE_NUMERIC: if (HSSFDateUtil.isCellDateFormatted(cell)) {
if (HSSFDateUtil.isCellDateFormatted(cell)) { SimpleDateFormat sdf = null;
SimpleDateFormat sdf = null; if (cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("h:mm")) {
if (cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("h:mm")) { sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); } else {// 日期
} else {// 日期 sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); }
} strCell = sdf.format(cell.getDateCellValue());
strCell = sdf.format(cell.getDateCellValue()); } else if (cell.getCellStyle().getDataFormat() == 58) {
} else if (cell.getCellStyle().getDataFormat() == 58) { // 处理自定义日期格式m月d日(通过判断单元格的格式id解决id的值是58)
// 处理自定义日期格式m月d日(通过判断单元格的格式id解决id的值是58) SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); double value = cell.getNumericCellValue();
double value = cell.getNumericCellValue(); strCell = sdf.format(org.apache.poi.ss.usermodel.DateUtil.getJavaDate(value));
strCell = sdf.format(org.apache.poi.ss.usermodel.DateUtil.getJavaDate(value)); } else {
}else{
if (HSSFDateUtil.isCellDateFormatted(cell)) {
if (HSSFDateUtil.isCellDateFormatted(cell)) { SimpleDateFormat sdf = null;
SimpleDateFormat sdf = null; if (cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("h:mm")) {
if (cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("h:mm")) { sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); } else {// 日期
} else {// 日期 sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); }
} strCell = sdf.format(cell.getDateCellValue());
strCell = sdf.format(cell.getDateCellValue()); } else {
}else{ boolean isNumber = isNumberFormat(dt);
boolean isNumber = isNumberFormat(dt) ; if (isNumber) {
if(isNumber){ DecimalFormat numberFormat = getNumberFormat(cell.getCellStyle().getDataFormatString());
DecimalFormat numberFormat = getNumberFormat(cell.getCellStyle().getDataFormatString()) ; if (numberFormat != null) {
if(numberFormat!=null){ strCell = String.valueOf(numberFormat.format(cell.getNumericCellValue()));
strCell = String.valueOf(numberFormat.format(cell.getNumericCellValue())); } else {
}else{ strCell = String.valueOf(cell.getNumericCellValue());
strCell = String.valueOf(cell.getNumericCellValue()); }
} } else {
}else{ strCell = String.valueOf(format.format(cell.getNumericCellValue()));
strCell = String.valueOf(format.format(cell.getNumericCellValue())) ; }
} }
} }
} break;
break; case FORMULA: {
case HSSFCell.CELL_TYPE_FORMULA: { // 判断当前的cell是否为Date
// 判断当前的cell是否为Date boolean isNumber = isNumberFormat(dt);
boolean isNumber = isNumberFormat(dt) ; try {
try{ if (isNumber) {
if(isNumber){ strCell = String.valueOf(cell.getNumericCellValue());
strCell = String.valueOf(cell.getNumericCellValue()); } else {
}else{ strCell = "";
strCell = ""; }
} } catch (Exception ex) {
}catch(Exception ex){ ex.printStackTrace();
ex.printStackTrace(); strCell = cell.getRichStringCellValue().getString();
strCell = cell.getRichStringCellValue().getString(); }
} break;
break; }
} default:
default: strCell = "";
strCell = ""; break;
break; }
} if (strCell.equals("")) {
if (strCell.equals("") || strCell == null) { return "";
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 STRING:
case HSSFCell.CELL_TYPE_STRING: dataType = "string";
dataType = "string"; break;
break; case BOOLEAN:
case HSSFCell.CELL_TYPE_BOOLEAN: dataType = "number";
dataType = "number"; break;
break; case BLANK:
case HSSFCell.CELL_TYPE_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 NUMERIC:
case HSSFCell.CELL_TYPE_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 FORMULA: {
case HSSFCell.CELL_TYPE_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:
case 180 : number = true ; break; number = true;
case 181 : number = true ; break; break;
case 182 : number = true ; break; case 181:
case 178 : number = true ; break; number = true;
case 177 : number = true ; break; break;
case 176 : number = true ; break; case 182:
case 183 : number = true ; break; number = true;
case 185 : number = true ; break; break;
case 186 : number = true ; break; case 178:
case 179 : number = true ; break; number = true;
case 187 : number = true ; break; break;
case 7 : number = true ; break; case 177:
case 8 : number = true ; break; number = true;
case 44 : number = true ; break; break;
case 10 : number = true ; break; case 176:
case 12 : number = true ; break; number = true;
case 13 : number = true ; break; break;
case 188 : number = true ; break; case 183:
case 189 : number = true ; break; number = true;
case 190 : number = true ; break; break;
case 191 : number = true ; break; case 185:
case 192 : number = true ; break; number = true;
case 193 : number = true ; break; break;
case 194 : number = true ; break; case 186:
case 11 : number = true ; break; number = true;
break;
} case 179:
return number ; 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;
}
}