/**
* 解析excel
*
* @throws InvalidFormatException
* @throws IOException
*/
public void analysisExcel() throws InvalidFormatException, IOException {
String path = "D:\\xxx.xls";
InputStream ins = null;
Workbook book = null;
ins = new FileInputStream(path);
// 将文件中的内容都加载到WorkBook中
book = WorkbookFactory.create(ins);
ins.close();
// 用于存放读出的数据
List<String[]> lineList = new LinkedList<String[]>();
String[] arrs = {};
// 这里的0代表excel中的sheet1
Sheet sheet = book.getSheetAt(0);
// 迭代出每行的数据
Iterator<Row> rit = sheet.iterator();
boolean flag = false;
while (rit.hasNext()) {
flag = false;
Row row = rit.next();// 获取每行数据
int rownum = row.getRowNum();
Cell cell = null;
int length = row.getLastCellNum();
arrs = new String[length];
for (int i = 0; i <= length; i++) {
cell = row.getCell(i);
if (cell != null) {
String cellVal = getCellVal(cell);
if (StringUtils.isNotEmpty(cellVal)) {
if (!flag) {
flag = true;
}
arrs[i] = cellVal;
}
}
}
if (flag) {
lineList.add(arrs);
}
}
for (String[] strs : lineList) {
for (int i = 0; i < strs.length; i++) {
System.out.println(strs[i]);
}
}
}
private static String getCellVal(Cell cell) {
String str = "";
// 根据单元格中数据的类型进行分析
switch (cell.getCellType()) {
case Cell.CELL_TYPE_BLANK:
str = "";
break;
case Cell.CELL_TYPE_ERROR:
str = Byte.toString(cell.getErrorCellValue());
break;
case Cell.CELL_TYPE_STRING:
str = cell.getRichStringCellValue().getString();
break;
case Cell.CELL_TYPE_NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
str = StringUtils.parseDateToString(cell.getDateCellValue());
} else {
str = String.valueOf(cell.getNumericCellValue());
if (str.indexOf("E") != -1) {
str = Long.toString((long) cell.getNumericCellValue());
}
}
break;
case Cell.CELL_TYPE_BOOLEAN:
str = Boolean.toString(cell.getBooleanCellValue());
break;
case Cell.CELL_TYPE_FORMULA:
str = cell.getCellFormula();
break;
default:
str = "";
}
return str;
}