Commit 3064bf89 authored by 史志龙's avatar 史志龙

Merge branch 'dev-szl' into 'dev'

导入公里总结报告 -shizhilong

See merge request !39
parents fbabc476 18d38095
package org.jeecg.modules.utils;
import java.io.InputStream;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
/**
* @author admin
*/
public class ExcelAnalysisUtils {
/**
* @Description:获取IO流中的数据,组装成List<List<Object>>对象
*/
public static List<List<Object>> getListByExcel(InputStream in) throws Exception {
List<List<Object>> list;
//创建Excel工作薄
Workbook work = new XSSFWorkbook(in);
Sheet sheet; //页数
Row row; //行数
Cell cell; //列数
list = new ArrayList<>();
//遍历Excel中所有的sheet
for (int i = 0; i < work.getNumberOfSheets(); i++) {
sheet = work.getSheetAt(i);
if (sheet == null) {
continue;
}
//遍历当前sheet中的所有行
for (int j = sheet.getFirstRowNum(); j <= sheet.getLastRowNum(); j++) {
row = sheet.getRow(j);
if (row == null) {
continue;
}
//遍历所有的列
List<Object> li = new ArrayList<>();
for (int y = row.getFirstCellNum(); y < row.getLastCellNum(); y++) {
cell = row.getCell(y);
li.add(getValue(cell));
}
list.add(li);
}
}
return list;
}
/**
* 对表格中数值进行格式化 解决excel类型问题,获得数值
*/
public static String getValue(Cell cell) {
String value = "";
if(null == cell) {
return value;
}
switch(cell.getCellType()) {
//数值型
case NUMERIC:
if(DateUtil.isCellDateFormatted(cell)) {
//如果是date类型则 ,获取该cell的date值
Date date = DateUtil.getJavaDate(cell.getNumericCellValue());
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
value = format.format(date);
}
else {// 纯数字
BigDecimal big = BigDecimal.valueOf(cell.getNumericCellValue());
String s = "0";
value = big.toString();
//解决1234.0 去掉后面的.0
if(null != value && !"".equals(value.trim())) {
String[] item = value.split("[.]");
if(1 < item.length && s.equals(item[1])) {
value = item[0];
}
}
}
break;
//字符串类型
case STRING:
value = cell.getStringCellValue();
break;
// 公式类型
case FORMULA:
//读公式计算值
value = String.valueOf(cell.getNumericCellValue());
String nan = "NaN";
if(nan.equals(value)) {// 如果获取的数据值为非法值,则转换为获取字符串
value = cell.getStringCellValue();
}
break;
// 布尔类型
case BOOLEAN:
value = " " + cell.getBooleanCellValue();
break;
default:
value = cell.getStringCellValue();
}
String ss = "null";
if(ss.endsWith(value.trim())) {
value = "";
}
return value;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment