maven需要的依赖:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
package com.da.test;
import java.io.FileInputStream;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
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;
import com.da.util.PoiUtil;
public class ExcelPoi {
public static void main(String[] args) {
String fileToBeRead = "C:\\aaa.xlsx";
Workbook workbook;
try {
if (fileToBeRead.indexOf(".xlsx") > -1) {
workbook = new XSSFWorkbook(new FileInputStream(fileToBeRead));
} else {
workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead));
}
// HSSFWorkbook workbook = new HSSFWorkbook(new
// FileInputStream(fileToBeRead)); //2003 创建对Excel工作簿文件的引用
// XSSFWorkbook workbook = new XSSFWorkbook(new
// FileInputStream(fileToBeRead)); //2007,2010 创建对Excel工作簿文件的引用
Sheet sheet = workbook.getSheet("Sheet1"); // 创建对工作表的引用
int rows = sheet.getPhysicalNumberOfRows();// 获取表格的
int columns = 0;
for (int r = 0; r < rows; r++) { // 循环遍历表格的行
if (r == 0) {
// 在第一行标题行计算出列宽度,因为数据行中可能会有空值
columns = sheet.getRow(r).getLastCellNum();
continue;
}
// String value = "";
StringBuilder sb = new StringBuilder();
Row row = sheet.getRow(r); // 获取单元格中指定的行对象
if (row != null) {
// int cells = row.getPhysicalNumberOfCells();// 获取一行中的单元格数
// int cells = row.getLastCellNum();// 获取一行中最后单元格的编号(从1开始)
for (short c = 0; c < columns; c++) { // 循环遍历行中的单元格
Cell cell = row.getCell((short) c);
if (cell != null) {
// value += getCellValue(cell) + ",";
sb.append(PoiUtil.getCellValue(cell)).append(" ");
}
}
}
// String[] str = value.split(",");
System.out.println(sb.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
工具类:
package com.da.util;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
public class PoiUtil {
// 得到单元格的字符串内容
public static String getCellValue(Cell cell) {
DecimalFormat df = new DecimalFormat("#");
if (cell == null)
return "";
switch (cell.getCellType()) {
case Cell.CELL_TYPE_NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(cell.getDateCellValue()).toString();
// return
// sdf.format(DateUtil.getJavaDate(cell.getNumericCellValue())).toString();
}
return df.format(cell.getNumericCellValue());
case Cell.CELL_TYPE_STRING:
// System.out.println(cell.getStringCellValue());
return cell.getStringCellValue();
case Cell.CELL_TYPE_FORMULA:
return cell.getCellFormula();
case Cell.CELL_TYPE_BLANK:
return "";
case Cell.CELL_TYPE_BOOLEAN:
return cell.getBooleanCellValue() + "";
case Cell.CELL_TYPE_ERROR:
return cell.getErrorCellValue() + "";
}
return "";
}
}