简易POI读取execl表格
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* describe:
*
* @author lichangkai
* @date 2018/12/12
*/
public class ReadExcelServiceTest {
/**
* 导入的Sheet列数
*/
private static final int COLUMS = 6;
public static void main(String[] args) throws IOException {
Workbook workbook = new HSSFWorkbook(new FileInputStream("G:\\test.xls"));
// 创建对工作表的引用(第一个表)
Sheet sheet = workbook.getSheetAt(0);
// 当前sheet的列数与与模板列数不符(简单判断是否为正确的表)
if (COLUMS != sheet.getRow(0).getLastCellNum()) {
// 抛出指定异常
System.out.println("导入的表格列数与模板不同哦!");
}
/*获取表格的行数
getPhysicalNumberOfRows()方法获取到的行数是去除了空白行的,
不方便后面的逐行读取数据*/
int rows = sheet.getLastRowNum() + 1;
// 字符数组集合
List<String[]> strArrList = new ArrayList<>();
// 循环表格的行(从第二行开始,第一行是表头)
for (int r = 1; r < rows; r++) {
// 获取单元格中指定的行对象
Row row = sheet.getRow(r);
// 行不为空
if (null != row) {
// 创建一个字符数组接收查到的数据
String[] userExamStrArr = new String[COLUMS];
// 循环行中的单元格
for (int c = 0; c < COLUMS; c++) {
Cell cell = row.getCell(c);
try {
// 将表格的所有数据均按字符串处理(不这样处理,toString方法会在数字后面加小数点)
cell.setCellType(CellType.STRING);
userExamStrArr[c] = cell.toString();
} catch (NullPointerException e) {
// 单元格数据为空时
userExamStrArr[c] = "";
}
}
strArrList.add(userExamStrArr);
}
}
for(String[] strings : strArrList){
for(String string :strings){
System.out.print(string+"\t\t");
}
System.out.println();
}
}
}
简易的的poi读取excel表格:
使用getLastRowNum() + 1的方式获取表格的行数,不会因为空白行的存在影响后期的逐行读取,getPhysicalNumberOfRows()获取到的行数为去除空白行的行数;
并将所有单元格数据均按字符型数据处理,省去不同类型用不同获取值方法的麻烦,单元格为空的部分设为空字符串。