文档章节

POI读取excel文件,去除null值

韩不会
 韩不会
发布于 2017/07/07 13:54
字数 360
阅读 11
收藏 0
点赞 0
评论 0

package com.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Timestamp;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.util.StringUtils;


/**
 * 读取上传Excel数据
 * @author 
 *
 */
public class ReadPlansInfoExcel {  
    static XSSFRow row;
    @SuppressWarnings({ "deprecation" })
    public ArrayList<Data_excel> Read(String username,File file) throws Exception{
        XSSFWorkbook workbook = null;
        FileInputStream fis = null;
        ArrayList<Data_excel> arrlist=new ArrayList<Data_excel>();
        Date date = new Date();
        Timestamp timestamp  = new Timestamp(date.getTime());
        SimpleDateFormat sdf =  new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss " );
        SimpleDateFormat sd  =  new SimpleDateFormat( "yyyy-MM-dd" );
        try {
            fis = new FileInputStream(file);
            try {
                workbook = new XSSFWorkbook(fis);
                XSSFSheet spreadsheet = workbook.getSheetAt(0);
                Iterator < Row > rowIterator = spreadsheet.iterator();
                int totalRowNum = spreadsheet.getLastRowNum()+1;//得到总行数
                int totalListNum=spreadsheet.getRow(1).getPhysicalNumberOfCells();//得到总列数            
                Data_excel infos =null;
                for (int i = 0 ; i < totalRowNum ; i++) {
                    infos = new Data_excel();
                    row = (XSSFRow) rowIterator.next();
                    
                    //Iterator < Cell > cellIterator = row.cellIterator();
                    XSSFRow xssfRow = spreadsheet.getRow(i);
                    if(i > 0){//第一行不读取列,第一行是名称
                        for (int j = 0 ; j < totalListNum ; j++)  
                        {
//                            infos.setCreateTime(timestamp.toString());//创建时间
//                            infos.setCreateUser(username);//获取登陆状态的用户名
//                            infos.setLogTime(sd.format(timestamp));//插入时间
                            
                            XSSFCell cell = xssfRow.getCell(j);
                            if(cell ==null){
                                continue;
                            }
                            
                            //读取每一列的属性值,cell.getStringCellValue() 
                            //Cell cell = cellIterator.next();
                            String value = new String();
                            switch (cell.getCellType()) 
                            {
                            case Cell.CELL_TYPE_NUMERIC://获取整型的值
                                DecimalFormat df = new DecimalFormat("0");  
                                value = df.format(cell.getNumericCellValue());
                                break;
                            case Cell.CELL_TYPE_STRING: //字符串类型的值
                                value = cell.getStringCellValue().trim();
                                break;
                            case Cell.CELL_TYPE_BLANK: //空值
//                                value=null;
                                value="";
                                break;
                            case Cell.CELL_TYPE_BOOLEAN:
                                value= String.valueOf(cell.getBooleanCellValue()).trim();
                            }
                            if(j ==0){

                                infos.setCustomer(value);//(Integer.parseInt(value.trim()));// 生产顺序
                                
                            }else if(j==1){
                                infos.setCode(value);   //编码
                                System.out.println(infos);
                            }else if(j ==2 ){
                                infos.setFName(value); //设备编号
                            }else if(j==3){
                                infos.setFitemid(Integer.parseInt(value.trim()));//生产日期
                            }
                        }
//                        System.out.println("customer:"+infos.getCustomer());
                        boolean cus=infos.getCustomer()!=null && !infos.getCustomer().equals("");
                        boolean co =infos.getCode()!=null && !infos.getCode().equals("");
                        if(cus || co){
                            
                            arrlist.add(infos);
                        }
                            
                        
                        
                    }
                }
                fis.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

        } catch (FileNotFoundException e1) {
            e1.printStackTrace();
        }
        return arrlist;
    }
  
}  

© 著作权归作者所有

共有 人打赏支持
韩不会
粉丝 1
博文 16
码字总数 5814
作品 0
张家口
程序员
java程序转换excel中科学记数法的数据为date类型

今天出于某些原因从mongodb数据库中导出了一些数据,为了更直观的发送给其他人查阅,便使用mongoVUE的导出为excel功能。 但是导出后出现了一个问题,里边有一列存储时间的,存储的是long型毫...

涂宗勋 ⋅ 2016/05/12 ⋅ 0

poi 读取合并单元格问题

package test; import java.io.File; import java.io.IOException; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Cell; import......

Mr_XK ⋅ 2014/12/07 ⋅ 1

java 解析excel,带合并单元的excel

首先,mavn导入jar包 <!-- 解析excel需要导入的 jar包 begin --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.11</version> </dependency> <d......

岸芷汀兰 ⋅ 2015/06/03 ⋅ 0

自动化excl学习笔记

学习excl操作 import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.text.DecimalFormat; import java.util.A......

知止内明 ⋅ 2017/11/21 ⋅ 0

Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框

在web开发中,有一个经典的功能,就是数据的导入导出。特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作。而数据导出的格式一般是EXCEL或者...

文文1 ⋅ 2015/12/02 ⋅ 0

基于SSM框架的Excel工具类

前言 本次提供Excel工具类导入和导出的功能,是本人在借鉴网上的部分代码的基础上搭出一个公用化的工具。如有不妥之处,麻烦指明,本人不胜感激。 Excel导出 实现思路 通过Apache提供POI包读...

BoomGred ⋅ 01/12 ⋅ 0

JAVA用POI读取和创建2003和2007版本Excel完美示例

import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.text.DecimalF......

java牛 ⋅ 2015/10/26 ⋅ 0

java用org.apache.poi包操作excel

一.POI简介 Jakarta POI 是apache的子项目,目标是处理ole2对象。它提供了一组操纵Windows文档的Java API 目前比较成熟的是HSSF接口,处理MS Excel(97-2002)对象。它不象我们仅仅是用csv...

happy圈圈 ⋅ 2014/05/14 ⋅ 0

Jsp+poi+servlet导入Excel到Mysql

package zsl.csfn.excel; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import org.apache.commons.logging.Log; import org.apach......

no_smoking ⋅ 2012/09/04 ⋅ 5

appache POI 导入和导出

项目结构: 用到的Excel文件: XlsMain .java 类 //该类有main方法,主要负责运行程序,同时该类中也包含了用poi读取Excel(2003版) 1. import java.io.FileInputStream; 2. import java.io....

lzw_me ⋅ 2014/07/31 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

服务网关过滤器

过滤器作用 我们的微服务应用提供的接口就可以通过统一的API网关入口被客户端访问到了。但是,每个客户端用户请求微服务应用提供的接口时,它们的访问权限往往都需要有一定的限制,系统并不会...

明理萝 ⋅ 17分钟前 ⋅ 1

【2018.06.21学习笔记】【linux高级知识 14.1-14.3】

14.1 NFS介绍 NFS服务全称是NetWork File System:网络文件系统,最早有sun公司开发的,4.0版本由Netapp公司开发,是基于RPC远程过程调用(Remote Procedure Call)协议的服务。 14.2 NFS服务...

lgsxp ⋅ 26分钟前 ⋅ 0

Day18 vim编辑模式、命令模式与练习

编辑模式 命令模式 :nohl 不高亮显示 :x与:wq类似,如果在更改文件之后操作,两者效果一样;如果打开文件,没有任何操作; :wq会更改mtime,但是:x不会。 练习题 扩展 vim的特殊用法 ht...

杉下 ⋅ 29分钟前 ⋅ 0

Enum、EnumMap、EnumSet

1、Enum 不带参数 public enum Car { AUDI { @Override public int getPrice() { return 25000; } }, MERCEDES { ......

职业搬砖20年 ⋅ 30分钟前 ⋅ 0

Java中的锁使用与实现

1.Lock接口 锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源。 在Lock出现之前,java程序是靠synchronized关键字实现锁功能的,而Java SE5之后,...

ZH-JSON ⋅ 31分钟前 ⋅ 0

线程组和 ThreadLocal

前言 在上面文章中,我们从源码的角度上解析了一下线程池,并且从其 execute 方法开始把线程池中的相关执行流程过了一遍。那么接下来,我们来看一个新的关于线程的知识点:线程组。 线程组 ...

猴亮屏 ⋅ 32分钟前 ⋅ 0

相对路径和绝对路径

基本概念   文件路径就是文件在电脑中的位置,表示文件路径的方式有两种,相对路径和绝对路径。在网页设计中通过路径可以表示链接,插入图像、Flash、CSS文件的位置。   物理路径:物理路...

临江仙卜算子 ⋅ 36分钟前 ⋅ 0

消息队列属性及常见消息队列介绍

什么是消息队列? 消息队列是在消息的传输过程中保存消息的容器,用于接收消息并以文件的方式存储,一个队列的消息可以同时被多个消息消费者消费。分布式消息服务DMS则是分布式的队列系统,消...

中间件小哥 ⋅ 39分钟前 ⋅ 0

java程序员使用web3j进行以太坊开发详解

如何使用web3j为Java应用或Android App增加以太坊区块链支持,教程内容即涉及以太坊中的核心概念,例如账户管理包括账户的创建、钱包创建、交易转账,交易与状态、智能合约开发与交互、过滤器...

笔阁 ⋅ 39分钟前 ⋅ 0

vim编辑模式、vim命令模式

vim编辑模式 使用vim filename 进入的界面是一般模式,在这个模式下虽然我们能够查看,复制,剪切,粘贴,但是不能编辑新的内容,如何能直接写入东西呢?这就需要进入编辑模式了,从一般模式...

李超小牛子 ⋅ 42分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部