Java实现excel的导入导出

1:POI与Excel的关系:

    POI中的Workbook类对应Excel本身。

    Sheet类对应sheet。

    Row类对应excel的一行。

    Cell类对应每个单元格。

2:导入解析步骤:

        注意,这里没有对03版和07版的excel做区分。

    1》导入需要的jar包:commons-collections.jar、poi.jar、poi-ooxml.jar、poi-ooxml-schemas.jar、poi-scratchpad.jar、xmlbeans.jar

         2》创建Workbook对象:Workbook workbook = WorkbookFactroy.create(new File("要解析的文件路径");

这里要指出,此处的文件路径,指的是服务器从本地获取文件后,把文件转存的路径。如果只需要解析文件而不用保存文件,那么我们使用Fileupload,获取到FileItem后不保存文件,这里也就没有要解析的文件路径了。这里create还有一个文件流的作为参数的重载方法;可以使用:WorkbookFactory.create(fileItem.getInputStream()),把获取到的文件域流作为参数即可。

        3》创建Sheet对象:Sheet sheet = workbook.getSheetAt(从0开始的整数)(或者:workbook.getSheet("sheet名字"))

          4》获得行数:int rowNum = sheet.getLastRowNum();

          5》获得行:因为有了行数,可以使用循环。当然只取指定的行也可以:Row row = sheet.getRow(i)。这里i也是从0开始的。

          6》获得单元格:Cell cell = row.getCell(i)。这里i也是从0开始的。

        7》获得单元格数据:对于不同格式的数据,有不同的获取方法。如:cell.getStringCellValue()获取字符串数据。cell.getNumericCellValue()获取数值数据。cell.getDateCellValue()获取日期数据。


3:excel导出功能的实现

    1》创建workbook:Workbook workbook;

    2》确认要创建的版本(03,07版),以启用不同的实现。07版使用:workbook = new XSSFWorkbook()            

        03版使用:workbook = new HSSFWorkbook()

    3》创建Sheet:work.cerateSheet()。这里可以传入一个字符串为sheet命名,也可以使用默认的。

    4》一般的excel表都有行和列。可以使用双层循环来控制实现:外层控制生成行:Row row = sheet.createRow(i)。这里i从0开始。内层控制生成单元格以及内容:Cell cell = row.createCell(j);  cell.setCellValue("xxx");  这里,j也是从0开始。xxx指单元格内容为字符串。此外,同导入一样,还有其他类型的数据。

    这里要指出的是,所谓的从0开始,就是说写表格内容的时候,从左上角第一个单元格开始写。

到此,就写好了一个workbook对象,也即是一个excel表格。

    5》如果是直接将workbook写到输出流,可以使用response.getOutputStream()方法获取一个ServletOutputStream 输出流:outputStream。然后使用workbook.write(outputstream)来写出excel。此外还要设置相应的头信息:

    resp.setHeader("Content-Disposition","attachment;filename=qqq.xlsx")。这里格式是相对固定的,其中,输出的文件是什么名字及格式,qqq.xlsx相应的就写什么。加上这句,就意味着进行服务器会告诉浏览器进行下载的处理。

    6》如果需要先保存再下载文件,可以先保存成文件。首先建立文件输出流:

        FileOutputStream fileOutputStream = new FileOutputStream("xxxx");其中,xxxx指文件保存的路径。

        然后,workbook.write(fileOutputStream)来将excel保存成文件。

        之后,再是步骤5》中的操作,来提供文件的下载。

这里的导入导出的实现,具体的应用,根据项目需求进行编写。这里只提供一个基本的思路。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值