poi sheet.getLastRowNum sheet.getRow() NULL 空
public List<String> getDatasInSheet(int sheetNumber,int colnum,int datanum,int colNums){
List<String> result = new ArrayList<String>();
//获得指定的sheet
HSSFSheet sheet = workbook.getSheetAt(sheetNumber);
//获得sheet总行数
int rowCount = sheet.getLastRowNum();
if(rowCount < 1){
return result;
}
//遍历行row
HSSFRow row=null;
String pList="";
for (short rowIndex = (short)(datanum-1); rowIndex < rowCount; rowIndex++) {
//获得行对象
row = sheet.getRow(rowIndex);
int nullLen=0;
if(null != row){
pList="";
//获得本行中单元格的个数
int cellCount = colnum-1+colNums;//row.getLastCellNum();
//遍历列cell
HSSFCell cell=null;
String cellValue="";
for (int cellIndex = colnum-1; cellIndex < cellCount; cellIndex++) {
cell= row.getCell(cellIndex);
cellValue=this.getCellString(cell);
if(cellValue ==null|| "".equals(cellValue.trim())){
nullLen++;
cellValue="^^";
}
pList+=cellValue+",";
}
}else{
return result;
}
if(nullLen<colNums){
if(result.size()>5000){
//效率问题 太大list溢出
break;
}
result.add(pList);
}else{
//本行记录全部为空值 报异常
break;
}
}
return result;
}
private String getCellString(HSSFCell cell) {
// TODO Auto-generated method stub
String result = null;
if(cell==null){
return "";
}
// cell.setCellType(HSSFCell.CELL_TYPE_STRING);
int cellType = cell.getCellType();
switch (cellType) {
case HSSFCell.CELL_TYPE_STRING:
result = cell.getStringCellValue();
break;
case HSSFCell.CELL_TYPE_NUMERIC:
if (HSSFDateUtil.isCellDateFormatted(cell)){
result=sdf.format(cell.getDateCellValue());
}else{
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
result=cell.getStringCellValue();
}
break;
case HSSFCell.CELL_TYPE_FORMULA:
result = String.valueOf(cell.getNumericCellValue());
break;
case HSSFCell.CELL_TYPE_BOOLEAN:
result = String.valueOf(cell.getBooleanCellValue());
break;
case HSSFCell.CELL_TYPE_BLANK:
result = "";
break;
case HSSFCell.CELL_TYPE_ERROR:
result = "";
break;
default:
System.out.println("枚举了所有类型");
break;
}
return result;
}
Excel
1 xxxxx系统故障月报
2
3部门: xxxxx 月份: 2012-08
4系统名称 故障类型 故障照片 使用人 使用时间 故障等级 备份 其他
5营销系统 无法登陆 阿杰 2114-56-65 2 达到 达到
6营销系统 无法登陆 阿杰 2114-56-65 2 达到 达到试试试试死死死死死死死死死死死死
sheet.getRow(4) 总为NULL 怎么解决
List<String> result = new ArrayList<String>();
//获得指定的sheet
HSSFSheet sheet = workbook.getSheetAt(sheetNumber);
//获得sheet总行数
int rowCount = sheet.getLastRowNum();
if(rowCount < 1){
return result;
}
//遍历行row
HSSFRow row=null;
String pList="";
for (short rowIndex = (short)(datanum-1); rowIndex < rowCount; rowIndex++) {
//获得行对象
row = sheet.getRow(rowIndex);
int nullLen=0;
if(null != row){
pList="";
//获得本行中单元格的个数
int cellCount = colnum-1+colNums;//row.getLastCellNum();
//遍历列cell
HSSFCell cell=null;
String cellValue="";
for (int cellIndex = colnum-1; cellIndex < cellCount; cellIndex++) {
cell= row.getCell(cellIndex);
cellValue=this.getCellString(cell);
if(cellValue ==null|| "".equals(cellValue.trim())){
nullLen++;
cellValue="^^";
}
pList+=cellValue+",";
}
}else{
return result;
}
if(nullLen<colNums){
if(result.size()>5000){
//效率问题 太大list溢出
break;
}
result.add(pList);
}else{
//本行记录全部为空值 报异常
break;
}
}
return result;
}
private String getCellString(HSSFCell cell) {
// TODO Auto-generated method stub
String result = null;
if(cell==null){
return "";
}
// cell.setCellType(HSSFCell.CELL_TYPE_STRING);
int cellType = cell.getCellType();
switch (cellType) {
case HSSFCell.CELL_TYPE_STRING:
result = cell.getStringCellValue();
break;
case HSSFCell.CELL_TYPE_NUMERIC:
if (HSSFDateUtil.isCellDateFormatted(cell)){
result=sdf.format(cell.getDateCellValue());
}else{
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
result=cell.getStringCellValue();
}
break;
case HSSFCell.CELL_TYPE_FORMULA:
result = String.valueOf(cell.getNumericCellValue());
break;
case HSSFCell.CELL_TYPE_BOOLEAN:
result = String.valueOf(cell.getBooleanCellValue());
break;
case HSSFCell.CELL_TYPE_BLANK:
result = "";
break;
case HSSFCell.CELL_TYPE_ERROR:
result = "";
break;
default:
System.out.println("枚举了所有类型");
break;
}
return result;
}
Excel
1 xxxxx系统故障月报
2
3部门: xxxxx 月份: 2012-08
4系统名称 故障类型 故障照片 使用人 使用时间 故障等级 备份 其他
5营销系统 无法登陆 阿杰 2114-56-65 2 达到 达到
6营销系统 无法登陆 阿杰 2114-56-65 2 达到 达到试试试试死死死死死死死死死死死死
sheet.getRow(4) 总为NULL 怎么解决
...全文
相关推荐
java实现删除excel内容之间空行
java实现删除excel内容之间空行,需要导入皮包。
poi获取exccel有合并单元格的数据
poi获取exccel有合并单元格的数据,存入List
POI实战-java开发excel详解
本POI实战为本人在业余时间写成,从浅开始,整个文档处于初到中级水平,包含大部分项目开发中会用到的常用功能,由于本人精力与能力有限,如有错误欢迎指正。 目录大概: 1.POI入门 4 1.1 Excel基本知识 4 1.2 POI基本类 5 1.3 POI简单读取Excel数据 5 1.4 POI简单写出Excel 9 2.复杂读取 16 2.1 单元格各类型数据读取 16 2.1.1 基本类型 16 2.1.2 日期类型 18 2.2 自定义类型 21 3.复杂写入 22 3.1 复杂写入 22 3.2 多层公式 27 4.常用操作 30 4.1注释 30 4.1.1 单表注释 30 4.1.2 多表注释 32 4.1.3 空单元格注释 34 4.2单元格合并与数据读取 34 4.3 窗口冻结 37 4.4 下拉列表 38 5.POI样式 39 5.1 POI样式相关类 39 5.2 单元格边框样式 40 5.3 单元格背景色 41 5.4 单元格字体格式 41 5.5 单元格对齐方式 42 5.6 单元格数字格式化 45 5.7单元格宽度与高度 46 5.8 合并单元格样式 47 5.9 Excel样式实例 48 6.总结 52 7.附录 53
SpringMvc+POI 处理Excel的导入操作
springMVC 整合poi导入数据,在很多项目中都会使用,能大大减少很多工作量
poi处理表格内容,列数和行数
poi处理表格内容


Java SE
