java poi 空_Java的poi技术遍历Excel时进行空Cell,空row,判断
/**
* 导入信息
*/
@Override
public List add(HttpServletRequest request) {
// TODO Auto-generated method stub
List num=new ArrayList();
MultipartHttpServletRequest multipartRequest =(MultipartHttpServletRequest) request;
CommonsMultipartFile file = (CommonsMultipartFile)multipartRequest.getFile("zlUpload");
if(file!=null){
try {
num = save(file.getInputStream());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
returnnum;
}
/**
* 保存上传的Excel信息
*/
private List save(InputStream inputStream) throwsIOException {
// TODO Auto-generated method stub
List error_num = new ArrayList();
List temp =(List)readXls(inputStream,error_num);
System.out.println(temp.get(0).getClass().getName());
if(temp.get(0).getClass().getName().equals("org.apache.poi.hssf.usermodel.HSSFCell")){
return error_num;
}else{
TStudentNo student = null;
List studentList = newArrayList();
for(int i=0;i
student = (TStudentNo)temp.get(i);
studentList.add(student);
}
try {
//在插入数据前进行判断,看数据库中是否有不允许重复的字段出现,以打断保存进度
int repeat = 0;
for(int j = 0;j
TStudentNo Studenttemp =studentMapper.findByStudentNo(studentList.get(j).getStudent_no());
//如果查到了,重复数加一,然后跳过不保存
if(Studenttemp!=null){
repeat++;
}
}
if(repeat==0){
for(int z=0;z
studentMapper.saveStudent(studentList.get(z));
}
}else{
error_num.add("数据库中有相同的数据,请检查学号等不允许重复的部分!");
return error_num;
}
} catch (Exception e) {
//判断Excel中是否有重复数据,如果有重复跳过保存异常
error_num.add("数据库中有相同的数据,请检查学号等不允许重复的部分!");
return error_num;
}
return temp;
}
}
/**
* 逐行遍历其Excel
*/
private Object readXls(InputStream inputStream,Listerror_num) throws IOException {
InputStream is = new BufferedInputStream(inputStream);
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);
TStudentNo student = null;
List list = new ArrayList();
//循环工作表Sheet
for(int numSheet =0;numSheet
HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);
if(hssfSheet == null){
continue;
}
for(int rowNum =2;rowNum<=hssfSheet.getLastRowNum();rowNum++){
System.out.println(hssfSheet.getLastRowNum());
HSSFRow hssfRow = hssfSheet.getRow(rowNum);
//检查每行的空格数,如果小于4证明有一个或多个空格,但不是整行
if(CheckRowNull(hssfRow)<4){
student = new TStudentNo();
HSSFCell name = hssfRow.getCell(0);
HSSFCell student_no = hssfRow.getCell(1);
HSSFCell phone = hssfRow.getCell(2);
HSSFCell class_no = hssfRow.getCell(3);
HSSFCell subject_category = hssfRow.getCell(4);
List temp = new ArrayList();
temp.add(0, name);
temp.add(1, student_no);
temp.add(2, phone);
temp.add(3, class_no);
temp.add(4, subject_category);
int temp1 = 0;//用于跳出双层for循环
for(int i=0;i<5;i++){
//为记录前台进行提示某行某列出错
temp1 = CheckRowError(temp.get(i),error_num,rowNum,i);
if(temp1==-1){
break;
}
}
if(temp1==-1){
return temp;
}
student.setName(getCellValue(name));
student.setPhone(getCellValue(phone));
student.setStudent_no(getCellValue(student_no));
student.setClass_no(getCellValue(class_no));
student.setSubject_category(Integer.parseInt(getCellValue(subject_category)));
list.add(student);
}else{
continue;
}
}
}
return list;
}
/**
* 对Excel的各个单元格的格式进行判断并转换
*/
private String getCellValue(HSSFCell cell) {
String cellValue = "";
DecimalFormat df = newDecimalFormat("#");
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_STRING:
cellValue =cell.getRichStringCellValue().getString().trim();
break;
case HSSFCell.CELL_TYPE_NUMERIC:
cellValue =df.format(cell.getNumericCellValue()).toString();
break;
case HSSFCell.CELL_TYPE_BOOLEAN:
cellValue =String.valueOf(cell.getBooleanCellValue()).trim();
break;
case HSSFCell.CELL_TYPE_FORMULA:
cellValue =cell.getCellFormula();
break;
default:
cellValue = "";
}
return cellValue;
}
//判断某行某列有问题
private int CheckRowError(HSSFCell cell,Listerror_num,int rowNum,int cell_num){
//判断各个单元格是否为空
if(cell==null||cell.equals("")||cell.getCellType() ==HSSFCell.CELL_TYPE_BLANK){
error_num.add("出错啦!请检查第"+(rowNum+1)+"行第"+(cell_num+1)+"列。"+"如果您在该行没有数据,建议您选择删除该行,重试!");
return -1;
}
return 0;
}
//判断行为空
private int CheckRowNull(HSSFRow hssfRow){
int num = 0;
Iterator cellItr =hssfRow.iterator();
while(cellItr.hasNext()){
Cell c =cellItr.next();
if(c.getCellType() ==HSSFCell.CELL_TYPE_BLANK){
num++;
}
}
return num;
}
java poi 空_Java的poi技术遍历Excel时进行空Cell,空row,判断相关推荐
- Java的poi技术遍历Excel时进行空Cell,空row,判断
/** * 导入信息 */ @Override public List<Object> add(HttpServletRequest request) { // TODO Auto-gen ...
- java获取内容为空_Java使用POI读取Word文档时如果文档内容为空时出现异常
异常如下: org.apache.poi.EmptyFileException: The supplied file was empty (zero bytes long) at org.apache ...
- cpu java poi 导出_java基于poi导出excel透视表代码实例
这篇文章主要介绍了java基于poi导出excel透视表代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 从前,我是一个前端程序猿,怀着对打通 ...
- java自动生成生成java透视表_java基于poi导出excel透视表代码实例
这篇文章主要介绍了java基于poi导出excel透视表代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 从前,我是一个前端程序猿,怀着对打通 ...
- java poi 换行_Java利用POI生成Excel强制换行
前一段时间在做一个学校排课系统时,有一个地方需要利用把课程表生成excel汇出给客户,由于之前用excel都只是简单的应用,在单元格里都是用自动换行,而这次可能需要用到手动强制换行. 于是我在网上找了 ...
- java poi教程_Java完成POI的功能
/***Controller层操作,省略service和dao*/@Controller@RequestMapping("/excel")publicclassExcelContr ...
- java word 乱码_JAVA 使用POI替换word中的某些字符串,在本地调试一切ok,在服务器上出现乱码...
最近做了一个在word中替换指定字符串,插入图片,转换成pdf的需求,弄了两天多才搞出来,本以为everything is ok,但是在本地调试什么都是好的. 放到服务器上以后...却乱码了...乱码 ...
- java权限框架_Java高级工程师必备技术栈-由浅入深掌握Shiro权限框架
权限系统在任何一个系统中都存在,随着分布式系统的大行其道,权限系统也趋向服务化,对于一个高级工程师来说,权限系统的设计是必不可少需要掌握的技术栈 Apache Shiro™是一个功能强大且易于使用的J ...
- java set 操作_java:Set循环遍历的俩种方法使用
java:Set循环遍历的俩种方法使用 package collection; import java.util.*; public class NewSet { public static void ...
最新文章
- MongoDB:利用官方驱动改装为EF代码风格的MongoDB.Repository框架 五 --- 为ListMongoDBRef增加扩展方法...
- 清华姚班2019级新生来了:高考状元、奥赛金牌,也是一批被AI感召的00后
- python学习之路-继承
- phpcms v9 的表单向导功能的使用方法
- 将一个实体转换成 Url 参数的形式 ?a=ab=b
- 连接 F5 大 IP 设备
- 「2019纪中集训Day7」解题报告
- git提交大文件的解决方法
- [转]使用FFmpeg将视频推流到nginx,通过vlc拉流播放(通过命令的方式)
- HTML网上书店静态HTML网页作业作品 大学生三联书店网页设计制作成品 简单DIV CSS布局网站
- matlab图像粘连计数,Matlab图像处理在水稻谷粒计数中的应用
- matlab生成的图片有边,科学网—图片空白边缘处理/统计直方图---matlab/保存生成高质量的清晰图 - 杨小林的博文...
- 数据分析十年来电影票房数据
- 深度学习-感知机模型---思路图解+python代码
- 0045-一个Dashbord页面监控多个消费者
- 深圳大厂程序员自述:我37岁,年薪百万,等着被公司干掉!
- ubuntu18.04安装Nvidia显卡
- 收藏.IBM.某高手点评IBM历年试题
- Python MyQR 生成不一样的二维码
- 生产进度管理系统为制造管理提供较完善的解决方案