|
@@ -12,9 +12,11 @@ import java.io.InputStream;
|
|
import java.io.InputStreamReader;
|
|
import java.io.InputStreamReader;
|
|
import java.io.OutputStream;
|
|
import java.io.OutputStream;
|
|
import java.io.OutputStreamWriter;
|
|
import java.io.OutputStreamWriter;
|
|
|
|
+import java.math.BigDecimal;
|
|
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.List;
|
|
import java.util.List;
|
|
|
|
|
|
import org.apache.poi.hssf.usermodel.HSSFCell;
|
|
import org.apache.poi.hssf.usermodel.HSSFCell;
|
|
@@ -22,6 +24,7 @@ import org.apache.poi.hssf.usermodel.HSSFRow;
|
|
import org.apache.poi.hssf.usermodel.HSSFSheet;
|
|
import org.apache.poi.hssf.usermodel.HSSFSheet;
|
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
|
import org.apache.poi.ss.usermodel.CellType;
|
|
import org.apache.poi.ss.usermodel.CellType;
|
|
|
|
+import org.apache.poi.ss.usermodel.DateUtil;
|
|
import org.apache.poi.xssf.usermodel.XSSFCell;
|
|
import org.apache.poi.xssf.usermodel.XSSFCell;
|
|
import org.apache.poi.xssf.usermodel.XSSFRow;
|
|
import org.apache.poi.xssf.usermodel.XSSFRow;
|
|
import org.apache.poi.xssf.usermodel.XSSFSheet;
|
|
import org.apache.poi.xssf.usermodel.XSSFSheet;
|
|
@@ -84,7 +87,7 @@ public class ExcelUtil {
|
|
HSSFSheet sheet = wb.getSheetAt(0);
|
|
HSSFSheet sheet = wb.getSheetAt(0);
|
|
HSSFRow row;
|
|
HSSFRow row;
|
|
HSSFCell cell;
|
|
HSSFCell cell;
|
|
- Object value;
|
|
|
|
|
|
+ Object value = null;
|
|
for(int i = sheet.getFirstRowNum() , rowCount = 0; rowCount < sheet.getPhysicalNumberOfRows() ; i++ ){
|
|
for(int i = sheet.getFirstRowNum() , rowCount = 0; rowCount < sheet.getPhysicalNumberOfRows() ; i++ ){
|
|
row = sheet.getRow(i);
|
|
row = sheet.getRow(i);
|
|
colList = new ArrayList<Object>();
|
|
colList = new ArrayList<Object>();
|
|
@@ -111,7 +114,36 @@ public class ExcelUtil {
|
|
value = cell.getStringCellValue();
|
|
value = cell.getStringCellValue();
|
|
break;
|
|
break;
|
|
case NUMERIC:
|
|
case NUMERIC:
|
|
- value = cell.getNumericCellValue();
|
|
|
|
|
|
+ short format = cell.getCellStyle().getDataFormat();
|
|
|
|
+ if (DateUtil.isCellDateFormatted(cell)) {
|
|
|
|
+ SimpleDateFormat sdf = null;
|
|
|
|
+ //System.out.println("cell.getCellStyle().getDataFormat()="+cell.getCellStyle().getDataFormat());
|
|
|
|
+ if (format == 20 || format == 32) {
|
|
|
|
+ sdf = new SimpleDateFormat("HH:mm");
|
|
|
|
+ } else if (format == 14 || format == 31 || format == 57 || format == 58) {
|
|
|
|
+ // 处理自定义日期格式:m月d日(通过判断单元格的格式id解决,id的值是58)
|
|
|
|
+ sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
+ double celvalue = cell.getNumericCellValue();
|
|
|
|
+ Date date = org.apache.poi.ss.usermodel.DateUtil.getJavaDate(celvalue);
|
|
|
|
+ value = sdf.format(date);
|
|
|
|
+ }else {// 日期
|
|
|
|
+ sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
|
+ }
|
|
|
|
+ try {
|
|
|
|
+ value = sdf.format(cell.getDateCellValue());// 日期
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ try {
|
|
|
|
+ throw new Exception("exception on get date data !".concat(e.toString()));
|
|
|
|
+ } catch (Exception e1) {
|
|
|
|
+ e1.printStackTrace();
|
|
|
|
+ }
|
|
|
|
+ }finally{
|
|
|
|
+ sdf = null;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ // BigDecimal bd = new BigDecimal(cell.getNumericCellValue());
|
|
|
|
+ value = cell.toString();// 数值 这种用BigDecimal包装再获取plainString,可以防止获取到科学计数值
|
|
|
|
+ }
|
|
break;
|
|
break;
|
|
case BOOLEAN:
|
|
case BOOLEAN:
|
|
value = Boolean.valueOf(cell.getBooleanCellValue());
|
|
value = Boolean.valueOf(cell.getBooleanCellValue());
|
|
@@ -141,7 +173,7 @@ public class ExcelUtil {
|
|
XSSFSheet sheet = wb.getSheetAt(0);
|
|
XSSFSheet sheet = wb.getSheetAt(0);
|
|
XSSFRow row;
|
|
XSSFRow row;
|
|
XSSFCell cell;
|
|
XSSFCell cell;
|
|
- Object value;
|
|
|
|
|
|
+ Object value = null;
|
|
for(int i = sheet.getFirstRowNum() , rowCount = 0; rowCount < sheet.getPhysicalNumberOfRows() ; i++ ){
|
|
for(int i = sheet.getFirstRowNum() , rowCount = 0; rowCount < sheet.getPhysicalNumberOfRows() ; i++ ){
|
|
row = sheet.getRow(i);
|
|
row = sheet.getRow(i);
|
|
colList = new ArrayList<Object>();
|
|
colList = new ArrayList<Object>();
|
|
@@ -168,7 +200,36 @@ public class ExcelUtil {
|
|
value = cell.getStringCellValue();
|
|
value = cell.getStringCellValue();
|
|
break;
|
|
break;
|
|
case NUMERIC:
|
|
case NUMERIC:
|
|
- value = cell.getNumericCellValue();
|
|
|
|
|
|
+ short format = cell.getCellStyle().getDataFormat();
|
|
|
|
+ if (DateUtil.isCellDateFormatted(cell)) {
|
|
|
|
+ SimpleDateFormat sdf = null;
|
|
|
|
+ //System.out.println("cell.getCellStyle().getDataFormat()="+cell.getCellStyle().getDataFormat());
|
|
|
|
+ if (format == 20 || format == 32) {
|
|
|
|
+ sdf = new SimpleDateFormat("HH:mm");
|
|
|
|
+ } else if (format == 14 || format == 31 || format == 57 || format == 58) {
|
|
|
|
+ // 处理自定义日期格式:m月d日(通过判断单元格的格式id解决,id的值是58)
|
|
|
|
+ sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
+ double celvalue = cell.getNumericCellValue();
|
|
|
|
+ Date date = org.apache.poi.ss.usermodel.DateUtil.getJavaDate(celvalue);
|
|
|
|
+ value = sdf.format(date);
|
|
|
|
+ }else {// 日期
|
|
|
|
+ sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
|
+ }
|
|
|
|
+ try {
|
|
|
|
+ value = sdf.format(cell.getDateCellValue());// 日期
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ try {
|
|
|
|
+ throw new Exception("exception on get date data !".concat(e.toString()));
|
|
|
|
+ } catch (Exception e1) {
|
|
|
|
+ e1.printStackTrace();
|
|
|
|
+ }
|
|
|
|
+ }finally{
|
|
|
|
+ sdf = null;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ // BigDecimal bd = new BigDecimal(cell.getNumericCellValue());
|
|
|
|
+ value = cell.toString();// 数值 这种用BigDecimal包装再获取plainString,可以防止获取到科学计数值
|
|
|
|
+ }
|
|
break;
|
|
break;
|
|
case BOOLEAN:
|
|
case BOOLEAN:
|
|
value = Boolean.valueOf(cell.getBooleanCellValue());
|
|
value = Boolean.valueOf(cell.getBooleanCellValue());
|
|
@@ -180,7 +241,7 @@ public class ExcelUtil {
|
|
value = cell.toString();
|
|
value = cell.toString();
|
|
}// end switch
|
|
}// end switch
|
|
|
|
|
|
- colList.add(cell.toString());
|
|
|
|
|
|
+ colList.add(value);
|
|
}//end for j
|
|
}//end for j
|
|
rowList.add(colList);
|
|
rowList.add(colList);
|
|
}//end for i
|
|
}//end for i
|
|
@@ -324,8 +385,7 @@ public class ExcelUtil {
|
|
return rowList;
|
|
return rowList;
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+
|
|
public static DecimalFormat getDf() {
|
|
public static DecimalFormat getDf() {
|
|
return df;
|
|
return df;
|
|
}
|
|
}
|