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;
@ -41,7 +40,7 @@ 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) {
@ -84,7 +83,7 @@ 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) {
@ -155,7 +154,6 @@ public class ExcelImportUtils{
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("succcall", "拨打成功次数", "Long", event.getOrgi(), event.getTablename(), true));
metaDataTable.getTableproperty().add(initProperties("faildcall", "拨打失败次数", "Long", event.getOrgi(), event.getTablename(), true)); metaDataTable.getTableproperty().add(initProperties("faildcall", "拨打失败次数", "Long", event.getOrgi(), event.getTablename(), true));
@ -196,22 +194,23 @@ public class ExcelImportUtils{
private boolean isExcel2007(String fileName) { private boolean isExcel2007(String fileName) {
return fileName.matches("^.+\\.(?i)(xlsx)$"); 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 HSSFCell.CELL_TYPE_STRING: case STRING:
strCell = cell.getStringCellValue(); strCell = cell.getStringCellValue();
break; break;
case HSSFCell.CELL_TYPE_BOOLEAN: case BOOLEAN:
strCell = String.valueOf(cell.getBooleanCellValue()); strCell = String.valueOf(cell.getBooleanCellValue());
break; break;
case HSSFCell.CELL_TYPE_BLANK: case BLANK:
strCell = ""; strCell = "";
break; break;
case HSSFCell.CELL_TYPE_NUMERIC: case 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")) {
@ -250,7 +249,7 @@ public class ExcelImportUtils{
} }
} }
break; break;
case HSSFCell.CELL_TYPE_FORMULA: { case FORMULA: {
// 判断当前的cell是否为Date // 判断当前的cell是否为Date
boolean isNumber = isNumberFormat(dt); boolean isNumber = isNumberFormat(dt);
try { try {
@ -269,7 +268,7 @@ public class ExcelImportUtils{
strCell = ""; strCell = "";
break; break;
} }
if (strCell.equals("") || strCell == null) { if (strCell.equals("")) {
return ""; return "";
} }
} }
@ -282,13 +281,13 @@ public class ExcelImportUtils{
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";
@ -307,7 +306,7 @@ public class ExcelImportUtils{
} }
} }
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";
@ -334,7 +333,7 @@ public class ExcelImportUtils{
} }
} }
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) {
@ -369,31 +368,81 @@ public class ExcelImportUtils{
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;