图片及excel的导入导出

xiaoxiao2021-02-28  89

        导入:首先导出excel模板,让客户按照模板进行相关的数据信息录入,之后根据提供的导入功能将excel传到服务器端,服务器端对它进行解析。

        解析流程如下:

        首先后台创建一个Workbook对象,因为每个workbook都有与其对应的多个sheet对象,再依次解析每一个sheet对象,同理,每一个sheet对象又对应多个row对象,所以再依次解析每一个row对象,同理,每一个row对象又对应多个cell对象,再依次解析每一个cell对象取出要获取的相应数据值。即完成excel的导入功能。

        导出:首先从后台数据库获取到要导出的全部数据,之后根据相应的导出功能将数据导到相应的excel表格中。

        流程如下:先获取数据,之后先创建一个workbook工作簿,然后循环创建出需要的sheet,再根据查询出来的记录条数创建row,之后根据查询出来的每一条记录的属性个数创建出cell,并且给cell赋值,所有循环完成后将文件输出,即完成了excel导出功能。

        Excel2003导出一个sheet最多只能65535行

        大数据量操作时的问题:如果xls文件中数据量比较大时,将读入到的数据封装到对象中,再全部都放进List时,List对其中的对象都是强引用(Strong Reference)【强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。】,大量的数据会引发内存溢出异常,为解决这个问题,所以在工具类中每得到若干个对象后调用Service层的方法去保存这些数据。再重新给List赋值,再继续读取出数据。

        POI导出Excel可以利用HSSFComment来生成批注信息。

        //创建批注对象

        HSSFComment comment=patriarch.createComment(new HSSFClientAnchor(0,0,0,0,(short)3,3,        (short)5,8));

        //设置批注内容

        comment.setString(newHSSFRichTextString(column.getDescription()));

        comment.setAuthor("作者名称");

        //设置单元格批注信息

        cell.setCellComment(comment);

        POI导出Excel生成下拉列表

        我们在导出的excel的时候,如果页面上是下拉框展示的数据,我们在导出excel时会生成相应的下拉列表。

首先我们会生成一个隐藏的sheet,然后将下拉列表中的数据添加到隐藏sheet中,每一列的数据代表一个下拉列表,然后在要生成下拉列表的单元格上创建对隐藏sheet下拉列表的引用

        //工作表添加验证数据  dataSheet.addValidationData(data_validation_list);

转载请注明原文地址: https://www.6miu.com/read-85437.html

最新回复(0)