工作记录:使用POI从excel导入数据(2003版本、2007以及以上版本)

使用poi读取2007版本及以上的数据实例:

public List<KqRecord> readXlsx(String path) throws IOException {
        InputStream is = new FileInputStream(path);
        XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);//2007以上版本
        KqRecord kq = null;
        List<KqRecord> list = new ArrayList<KqRecord>();
        // Read the Sheet
        for (int numSheet = 0; numSheet < xssfWorkbook.getNumberOfSheets(); numSheet++) {
            XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(numSheet);
            if (xssfSheet == null) {
                continue;
            }
            // Read the Row
            for (int rowNum = 1; rowNum <= xssfSheet.getLastRowNum(); rowNum++) {
                XSSFRow xssfRow = xssfSheet.getRow(rowNum);
                if (xssfRow != null) {
                    kq = new KqRecord();
                    //一个一个的读取
                    XSSFCell Id = xssfRow.getCell(0);
                    XSSFCell Kqid = xssfRow.getCell(1);
                    XSSFCell DeptName = xssfRow.getCell(2);
                    XSSFCell DeviceNmae = xssfRow.getCell(3);
                    XSSFCell Name = xssfRow.getCell(4);
                    XSSFCell CheckTime = xssfRow.getCell(5);
                    XSSFCell CheckType = xssfRow.getCell(6);
                    XSSFCell Validateflag = xssfRow.getCell(7);
                    XSSFCell SnId = xssfRow.getCell(8);
                    //对象设置值
                    kq.setId(getValue(Id));
                    kq.setKqid(getValue(Kqid));
                    kq.setDeptName(getValue(DeptName));
                    kq.setDeviceNmae(getValue(DeviceNmae));
                    kq.setName(getValue(Name));
                    kq.setCheckTime(getValue(CheckTime));
                    kq.setCheckType(getValue(CheckType));
                    kq.setValidateflag(getValue(Validateflag));
                    kq.setSnId(getValue(SnId));
                    list.add(kq);
                }
            }
        }
        return list;
    }
    @SuppressWarnings("static-access")
    private String getValue(XSSFCell xssfRow) {
        if (xssfRow.getCellType() == xssfRow.CELL_TYPE_BOOLEAN) {
            return String.valueOf(xssfRow.getBooleanCellValue());
        } else if (xssfRow.getCellType() == xssfRow.CELL_TYPE_NUMERIC) {
            return String.valueOf(xssfRow.getNumericCellValue());
        } else {
            return String.valueOf(xssfRow.getStringCellValue());
        }
    }

测试实例:

@Test
    public void testReadExcel(){
        try {
            List<KqRecord> readExcel = readExcel("D:/考勤记录表.xlsx");
            System.out.println(readExcel.size());
            System.out.println(readExcel);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    public List<KqRecord> readExcel(String path) throws IOException {
        if (StringUtils.isBlank(path)) {
            return null;
        } else {
            return readXlsx(path);
        }
    }

使用poi读取2003版excel数据的实例

public List<KqRecord> readXls(String path) throws IOException {
        InputStream is = new FileInputStream(path);
        HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);
        KqRecord kq = null;
        List<KqRecord> list = new ArrayList<KqRecord>();
        // Read the Sheet
        for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) {
            HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);
            if (hssfSheet == null) {
                continue;
            }
            // Read the Row
            for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {
                HSSFRow hssfRow = hssfSheet.getRow(rowNum);
                if (hssfRow != null) {
                    kq = new KqRecord();
                    HSSFCell no = hssfRow.getCell(0);
                    HSSFCell name = hssfRow.getCell(1);
                    HSSFCell age = hssfRow.getCell(2);
                    HSSFCell score = hssfRow.getCell(3);
                    kq.setId(getValue(no));
                    kq.setKqid(getValue(name));
                    kq.setDeptName(getValue(age));
                    kq.setDeviceNmae(getValue(score));
                    list.add(kq);
                }
            }
        }
        return list;
    }
 
    private String getValue(HSSFCell hssfCell) {
        if (hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN) {
            return String.valueOf(hssfCell.getBooleanCellValue());
        } else if (hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC) {
            return String.valueOf(hssfCell.getNumericCellValue());
        } else {
            return String.valueOf(hssfCell.getStringCellValue());
        }
}

测试数据与之前一样。。

参考文章; http://www.cnblogs.com/hongten/p/java_poi_excel_xls_xlsx.html

时间: 2024-11-06 19:52:47

工作记录:使用POI从excel导入数据(2003版本、2007以及以上版本)的相关文章

POI实现Excel导入数据库数据

POI实现Excel导入数据库数据 首先看一下我们导入的数据Excel中的数据格式是什么 ?上面是我们的一个数据导入时的模板信息,我们需要按照这样过的格式导入数据库数据. 针对这样的数据格式可以通过ReadExcelUtils的工具类去读取到 ReadExcelUtils readExcelUtils = new ReadExcelUtils(file.getInputStream(),fileName); 通过上述代码我们可以获取到ReadExcelUtils对象,再调用其readExcelL

poi之excel导入

获取list数据: import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.ArrayList; import java.util.Dat

Kettle Excel导入数据到数据库

最近学习大数据的处理,由于项目开发的需要,使用一种简单的方式来将Excel中的数据导入到数据库中,开发使用的kettle工具. kettle工具安装很简单,从官网上下载下来之后,直接解压到制定的盘符下即可(前提是你配置了JAVA的环境变量,path,classpath). 在WINDOWS环境下双击Spoon.bat文件,出现如下图: 点击如图所示的图标,进行本地文件导入的配置 选择红色线框下的选项,点击确定 按照上面的操作,点击确定即可. 直接点击关闭即可. 通过上面两个地方的任意一个都可以创

技巧一:Delphi XE3 Excel导入数据到StringGrid

procedure TDataEditDrFrm.btn8Click(Sender: TObject);varexcelx,excely:string;ExcelApp:Variant;workBook:OleVariant;excelRowCount,excelColumnCount:longint;i,j,row,row1:integer; begin row1:=1; pb1.Min:=0; dlgOpen1.Filter:='Excel文件|*.xls|*.xlsx'; if dlgOp

Java通过POI技术操作Excel(3)----数据导出

在之前的博客中,总结了Excel模板生成和Excel数据录入,然后剩最后一个模块,数据库中数据读取,在之前的基础上我们来看这一模块,应该已经非常容易了,接下来简单的介绍一下: 这里我们仍然以jsp+servlet为例,对SqlServer2005数据库进行操作,如下都是基本步骤: 1.连接数据库:2.根据sql语句获取数据库中值:3.将值进行导出操作: 首先,我们来记性数据库的连接,这个相信接触过java的人都不会陌生,我就不赘述了 1 public class DataBase { 2 pri

Excel导入数据到Sql server 中出错:“文本被截断,或者一个或多个字符在目标代码页中没有匹配项”

从Excel导入数据到Sql server 时,由于表中的数据有的很长,导入时出现如下错误(如果数据不是很长,255内以内,则不会出现错误): 出错原因: SQL Server的导入导出为了确定数据表的每个字段类型,取excel表的每个字段的前几行(3行即可)来判别.如果前3条是少于255的字符串,则设成nvarchar(255)类型,所以,当如果第四条或更后的数据的字符数大于255,则会报错. 解决方法: 在导入数据前,可以手动加几条无关的数据,让字段的字符数大于255,则导入时SQL Ser

实现excel导入导出功能,excel导入数据到页面中,页面数据导出生成excel文件

今天接到项目中的一个功能,要实现excel的导入,导出功能.这个看起来思路比较清楚,但是做起了就遇到了不少问题. 不过核心的问题,大家也不会遇到了.每个项目前台页面,以及数据填充方式都不一样,不过大多都是以json数据填充的.在导入excel填充json数据到页面时,真的让我差点吐血了.在做这个导入导出的时候,那一个礼拜都是黑暗的. 好了,废话不多说了,我今天就给大家展示这个两个功能的核心点,excel生成json数据和json数据生成excel文件. 一:从上传文件到服务器,后台java解析,

POI操作Excel导入和导出

Apache的POI组件是Java操作Microsoft Office办公套件的强大API,当中对Word,Excel和PowperPoint都有支持,当然使用较多的还是Excel.由于Word和PowerPoint用程序动态操作的应用较少.那么本文就结合POI来介绍一下操作Excel的方法. 这里介绍两种方法实现excel的操作.代码都有凝视,能够非常清楚的看懂,一种是循环遍历excel表格.这个要自己定位一个excel的起点.第二种是通过java反射机制实现的,依据表头来实现映射. 详细代码

《.NET学习笔记》——使用NPOI读取Excel导入数据和导出Excel的功能

前提:由于有差不多两年时间没有进行B/S项目开发了,换了新工作,项目中要求有Excel导入数据库的功能,故保存下来供以后查看. 一.使用jQuery的uploadify插件完成选择文件并上传的功能: (1)先引入相关文件: <script src="../Scripts/uploadify/swfobject.js" type="text/javascript"></script> <link href="../Scripts