public class ExcelImport {
/**
* 消息模板的表头
*/
public static String[] TITLES = {"用户ID","消息标题","消息内容"};
public static List<String[]> getExcelData(MultipartFile file) {
List<String[]> list = new ArrayList<String[]>();
try {
POIFSFileSystem pois = new POIFSFileSystem(());
// 新建WorkBook
HSSFWorkbook wb = new HSSFWorkbook(pois);
// 获取Sheet(工作薄)总个数
int sheetNumber = ();
for (int i = 0; i < sheetNumber; i++) {
// 获取Sheet(工作薄)
HSSFSheet sheet = (i);
// 开始行数
int firstRow = ();
// 结束行数
int lastRow = ();
// 判断该Sheet(工作薄)是否为空
boolean isEmpty = false;
if (firstRow == lastRow) {
isEmpty = true;
}
if (!isEmpty) {
for (int j = firstRow + 1; j <= lastRow; j++) {
// 获取一行
HSSFRow row = (j);
// 开始列数
int firstCell = ();
// 结束列数
int lastCell = ();
// 判断该行是否为空
String[] value = new String[lastCell];
if (firstCell != lastCell) {
for (int k = firstCell; k < lastCell; k++) {
// 获取一个单元格
HSSFCell cell = (k);
Object str = null;
// 获取单元格,值的类型
int cellType = ();
if (cellType == 0) {
df = new DecimalFormat("########");
str = (());
} else if (cellType == 1) {
str = ();
} else if (cellType == 2) {
} else if (cellType == 4) {
str = ();
}
value[k] = (String) str;
}
}
// 每一行循环完对应的就是一个用户故事的所有属性全部拿到
(value);
}
}
}
} catch (IOException e) {
();
}
return list;
}
/**
*
* @param file
* @param startRow 开始行 0开始
* @param endRow 结束行 0开始 不包含
* @param startCell 开始列 0开始
* @param endCell 结束列 0开始 不包含
* @param sheetAt 第一个sheet 0开始
* @return
*/
public static List<String[]> getExcelData(MultipartFile file, Integer startRow, Integer endRow, Integer startCell, Integer endCell, int sheetAt) {
List<String[]> list = new ArrayList<String[]>();
try {
Workbook wb = (());//适配针对excel 2003 和 excel 2007
// 获取Sheet(工作薄)
Sheet sheet = (sheetAt);
// 开始行数
int firstRow = ();
if(startRow != null){
firstRow = startRow;
}
// 结束行数
int lastRow = ()+1;
if(endRow != null){
lastRow = endRow;
}
// 判断该Sheet(工作薄)是否为空
boolean isEmpty = false;
if (firstRow == lastRow) {
isEmpty = true;
}
if (!isEmpty) {
for (int j = firstRow; j < lastRow; j++) {
// 获取一行
// XSSFRow row = (j);
Row row=(j);
if(row == null) {
throw new Exception("第" + (j + 1) + "行为空");
}
// 开始列数
int firstCell = ();
if(startCell != null){
firstCell = startCell;
}
// 结束列数
int coloumNum=(0).getPhysicalNumberOfCells();
if(endCell != null){
coloumNum = endCell;
}
int lastCell = ();
// 判断该行是否为空
String[] value = new String[coloumNum];
if (firstCell != lastCell) {
for (int k = firstCell; k < coloumNum; k++) {
// 获取一个单元格
Cell cell = (k);
if(cell==null){
value[k] = "";
continue;
}
(Cell.CELL_TYPE_STRING);
value[k] = ();
}
}
// 每一行循环完对应的就是一个用户故事的所有属性全部拿到
(value);
}
}
} catch (IOException e) {
try {
throw new Exception("非法模板{表头和模板表头不一致}") ;
} catch (Exception e1) {
//();
("非法模板{表头和模板表头不一致");
}
}catch (Exception e){
try {
throw new Exception("模板不符合要求,请下载模板");
} catch (Exception e1) {
//();
("模板不符合要求,请下载模板");
}
}
return list;
}
private static boolean isValidTitle(Row row) {
// 开始列数
int firstCell = ();
int lastCell = ();
// 判断该行是否为空
if (firstCell != lastCell) {
for (int i = firstCell; i < lastCell; i++) {
// 获取一个单元格
Cell cell = (i);
if(cell == null){
return false;
}
Object str = null;
// 获取单元格,值的类型
int cellType = ();
if (cellType == 1) {
str = ();
}
if(!(TITLES[i], ().trim())) {
return false;
}
}
return true;
} else {
return false;
}
}
}