EXCL poi导入

    public static void importExcel2(File file) throws Exception {
        InputStream is = new FileInputStream(file);
        Workbook workbook;
        try {
            if(file.getName().indexOf(".xlsx")>-1){
                workbook = new XSSFWorkbook(is);
            } else {
                workbook = new HSSFWorkbook(is);
            }
            //HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead)); //2003 创建对Excel工作簿文件的引用
            //XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream(fileToBeRead)); //2007,2010 创建对Excel工作簿文件的引用
            Sheet sheet = workbook.getSheetAt(0);//创建对工作表的引用
            int rows = sheet.getPhysicalNumberOfRows();// 获取表格的
            for (int r = 1; r < rows; r++) { // 循环遍历表格的行
                String value = null ;
                Row row = sheet.getRow(r); // 获取单元格中指定的行对象
                if (row != null) {
                    int cells = row.getPhysicalNumberOfCells();// 获取单元格中指定列对象
                    System.out.println(cells+"列数。。。");
//                    for (short c = 0; c < cells; c++) { // 循环遍历单元格中的列
//                        Cell cell = row.getCell((short) c); // 获取指定单元格中的列
//                        if (cell != null) {
//                            if (cell.getCellType() == Cell.CELL_TYPE_STRING) { // 判断单元格的值是否为字符串类型
//                            //    value += cell.getStringCellValue() + ",";
//                                System.out.println(cell.getStringCellValue()+"==="+cell.getCellType());
//                            } else if(cell.getCellType() == Cell.CELL_TYPE_NUMERIC){
//                                System.out.println(cell.getDateCellValue()+"==="+cell.getCellType());
//                                //DateUtil.isCellInternalDateFormatted(arg0);
//                            }
//
//                        }
//                    }
                    CaseInfor caseInfor=new CaseInfor();
                    if(row.getCell(0)!=null&&row.getCell(0).getCellType()==Cell.CELL_TYPE_STRING){
                        caseInfor.title=row.getCell(0).getStringCellValue();
                    }
                    if(row.getCell(1)!=null){
                        if(row.getCell(1)!=null&&isCellDateFormatted(row.getCell(1))){
                            caseInfor.acceptTime=row.getCell(1).getDateCellValue();
                        }else{flash.put("error", "受理时间非日期格式");
                        list(null,null);}
                    }
                    if(row.getCell(2)!=null){
                        if(isCellDateFormatted(row.getCell(2))){
                            caseInfor.deadTime=row.getCell(2).getDateCellValue();
                        }else{flash.put("error", "办案期限非日期格式");
                        list(null,null);}
                    }
                    if(row.getCell(3)!=null&&row.getCell(3).getCellType()==Cell.CELL_TYPE_STRING){
                        caseInfor.department=row.getCell(3).getStringCellValue();
                    }
                    if(row.getCell(4)!=null&&row.getCell(4).getCellType()==Cell.CELL_TYPE_STRING){
                        caseInfor.process=row.getCell(4).getStringCellValue();
                    }
                    if(row.getCell(5)!=null&&row.getCell(5).getCellType()==Cell.CELL_TYPE_STRING){
                        caseInfor.account=row.getCell(5).getStringCellValue();
                    }
                    if(row.getCell(6)!=null&&row.getCell(6).getCellType()==Cell.CELL_TYPE_STRING){
                        caseInfor.information=row.getCell(6).getStringCellValue();
                        System.out.println(row.getCell(6).getStringCellValue());
                    }
                    if(row.getCell(7)!=null&&row.getCell(7).getCellType()==Cell.CELL_TYPE_STRING){
                        caseInfor.mandatory=row.getCell(7).getStringCellValue();
                    }
                    caseInfor.save();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        flash.put("success", "导入成功");
           list(null,null);
    }
    public static boolean isCellDateFormatted(Cell cell) {
        if (cell == null) return false;
        boolean bDate = false;
        if(cell.getCellType() == Cell.CELL_TYPE_NUMERIC){
             double d = cell.getNumericCellValue();
             if ( DateUtil.isValidExcelDate(d) ) {
                 CellStyle style = cell.getCellStyle();
                 if(style==null) return false;
                 int i = style.getDataFormat();
                 String f = style.getDataFormatString();
                 bDate = DateUtil.isADateFormat(i, f);
             }
        }
        return bDate;
    } 

EXCL poi导入

时间: 2024-10-25 23:21:30

EXCL poi导入的相关文章

Java利用POI导入导出Excel中的数据

     首先谈一下今天发生的一件开心的事,本着一颗android的心我被分配到了PB组,身在曹营心在汉啊!好吧,今天要记录和分享的是Java利用POI导入导出Excel中的数据.下面POI包的下载地址http://poi.apache.org/download.html,有兴趣的朋友也可以去看看其中的API.      下面分享一下在对POI进行基本操作时觉得需要注意的两点:       1.POI中针对xlsx/xls是需要create different Workbook instance

appache POI 导入和导出

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

poi导入导出excel后记

续上一篇:在springmvc项目中使用poi导入导出excel http://blog.csdn.net/kingson_wu/article/details/38942967 一. 导入时,发现了不少问题,如果是导出excel之后,在里面不删除行,只是简单的修改一些数据的话,则不会出问题,但如果是删除了一些行,或者excel表不是导出的,而是另外的excel文件,里面有很多数据ctrl+a,ctrl+v生成的,那么导入的时候就会出问题,因为里面虽然看起来的数据就那么多,但是有一些数据痕迹.很

Java 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包)

ava 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包) 假设现在要做一个通用的导入方法: 要求: 1.xml的只定义数据库表中的column字段,字段类型,是否非空等条件. 2.excel定义成模板,里面只填写了所需要的数据,有可能数据有问题. 3.在导入的时候就需要对每个excel单元格的数据进行验证. 4.验证完之后,若所有数据正确,那么批量保存.若有一点点错误,就不执行保存操作,并提示错误原因. 思路: 1.完美使用了Map的功能,先将xml中的数据存入map

使用POI导入Excel并解决Cannot get a text value from a numeric formula cell

最近做Excel导入 有两个方法:JXL 和POI 各有问题:JXL 导入:文件中有宏就报错,找不到解决方法. POI导入:文件太大造成内存溢出. 先说问题 :Exception in thread "main" java.lang.IllegalStateException: Cannot get a text value from a numeric formula cell 这个问题是因为那一单元格使用了 "求和函数",内容不是文本. package cmcc

基于SSM的POI导入导出Excel实战第二篇-导入EXCEL

业务需求:上文已经实现了产品信息Excel的导出,接下来将用POI实现Excel导入 需求分析:导入其实是导出的逆过程,数据格式是一样的,均为矩阵式(二维)的数据格式,下面将以导出的模板作为Excel导入时数据填充的文件! 下面就直接进入正文,在阅读正文源码期间如果有相关问题可以加我QQ:1974544863 咨询我 或者加群:583522159 进行技术讨论.下面是我的个人公众号,感兴趣的童鞋可以关注(有干货以及项目实战分享哦) 好了,让我们进入代码实战吧! 在实战之前,介绍一下项目使用的"状

基于SSM的POI导入导出Excel实战第二篇-导出EXCEL

业务需求:这里我以产品信息为例,用于POI导入导出Excel实战的操作对象 需求分析:我们要导出的数据格式比较简单,其实就是待导出的表(视图)的数据,如下图所示: 实现思路:A.会发现待导出的数据列表是一个矩阵式的格式,即二维的形式 B.其中的头部id name unit price stock 等字段field是固定不变的,将会充当excel的头部 C.以数据行的角度观察数据列表,会发现每一行每一列的值都是B所指的那些字段一一对应的取值value D.由此可以得出这些数据组织是由每一行数据组成

基于SSM的POI导入导出Excel实战第一篇-SSM框架的整合

业务背景:在JavaWeb应用开发中,经常需要将应用系统中某些业务数据导出到Excel中,又或者需要将这些业务数据先收集到Excel然后一键导入到系统 业务需求:如何用Java实现导入导出Excel 需求分析:目前流行的Java导入导出Excel的框架有POI跟JXL,这两者的优缺点在这里我就不作比较了,感兴趣的童鞋可以自行搜索了解一下; 技术选型:从本文开始,我将分享一下如何基于SSM框架+POI实现Java应用导入导出Excel,数据库采用mysql5.6,应用服务器采用tomcat7 工具

基于SSM的POI导入导出Excel实战尾篇-其余功能实战(mvc三层开发模式体验)

业务需求:前几篇基本已经介绍完毕项目的核心功能,即POI导入导出Excel,为了整个项目的完整性,并让诸位童鞋体验体验企业级javaweb应用mvc三层模式的开发流程,本文将介绍一下项目的其余功能,包括搜索,新增,修改,删除 需求分析:作为程序员,在项目中经常接触的就是CRUD了,本篇博文将整合jquery-easyui框架(版本采用1.5.5.4)异步实现上述几个功能,给项目画上一个完整的句号!当然啦,在刚开始开发时,对于自己开发好的后端接口完全可以用Postman进行模拟(我就是这样做的),