`
pacer123
  • 浏览: 88423 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

通过流的方式写入excel文件

 
阅读更多

我们在导入excel时候,通常会大批量数据导入,但是容易发生Exception in thread "main" java.lang.OutOfMemoryError: Java heap space的内存溢出.

通常写法大致如下:

//定义sheet以及workbook对象部分略

FileOutputStream fos = new FileOutputStream("D://test//test0215.xlsx");
for (int i = 0; i < 100000; i++) {
sheet.createRow(i).createCell(0).setCellValue(1);
}

可以修改此导出方式,仅仅通过流的方式写入文件,可以避免创建大批量的对象时内存溢出.代码如下可以作为参考:

public static boolean createExcelFileByStream(String path, List list) { 
        try { 
         //定义表头
         String userxlsinfo = "序号\t用户ID\t姓名\t手机\t留言信息"; 
            File file = new File("c:\\streamExcel.xls"); 
            if (file.isFile()) { 
                file.mkdir(); 
            } 
            FileOutputStream out = new FileOutputStream(file); 
            OutputStreamWriter osw = new OutputStreamWriter(out, "GB2312"); 
            BufferedWriter bw = new BufferedWriter(osw); 
            // 创建表头  
            String sheader = userxlsinfo; 
            sheader += "\r\n"; 
            bw.write(sheader); 
            if (list != null) { 
             // List list 此处可以遍历list对象
                for (int i = 0; i < 5; i++) { 
                    StringBuffer mess = new StringBuffer(); 
                    // 用户信息  
                    mess.append((i + 1) + "\t"); 
                    mess.append((i + 1) + "\t"); 
                    mess.append((i + 1) + "\t"); 
                    mess.append((i + 1) + "\t"); 
                    mess.append((i + 1) + "\t"); 
                   
                    mess.append("\r\n");     
                    System.out.println(i); 
                    bw.write(mess.toString()); 
                } 
            } 
            bw.close(); 
            osw.close(); 
            out.close(); 
            return true; 
        } catch (FileNotFoundException e) { 
            e.printStackTrace(); 
        } catch (IOException e) { 
            e.printStackTrace(); 
        }
        return false; 
    } 

 

注意:表头部分和数据部分的间隔一定要用'\t ' 如果改用','号则导出文件用excel打开展示会有问题.

 

分享到:
评论
2 楼 pacer123 2012-05-04  
如果数据流不大,就不需要通过流的方式去写excel.
1 楼 蓝色0度 2012-05-02  
你好,请问这种形式可以支持多sheet页的写入吗??
盼回~
谢谢:)

相关推荐

    C#通过流写入数据到文件的方法

    主要介绍了C#通过流写入数据到文件的方法,涉及C#通过字节流读写文件的相关技巧,需要的朋友可以参考下

    C++ Excel文件写入

    使用C++对Excel文件写入操作。 有点投机取巧的小方法,简单实用。 但是仅限于写入操作,读还是不可以的。 使用的是fstream文件流。

    java写入excel图片操作

    java写入excel图片操作 包含需要的类库和相应的代码

    NPOI导出Excel文件(内存流操作下载)

    利用NPOI导出Excel文件,写入到内存流中,输出文件下载

    导入poi jar包实现使用Beanshell读写Excel文件

    JMeter处理Excel文件

    poi解析excel文件

    采用poi3.8解析excel文件,内含实例代码和jar包

    C#利用Response流将数据库数据导出成Excel

    C#利用Response流将数据库数据导出到Excel里面,代码简单明了,是适合新手使用。

    使用Springboot实现excel的导入导出

    在Spring Boot中实现Excel的导入导出可以通过POI库来实现,POI是一个开源的Java库,用于处理Microsoft Office格式...将Excel写入响应流: 使用response.getOutputStream()获取输出流,然后将工作簿写入到输出流中.....

    SpringBoot分片上传Excel大文件,支持断点续传,EasyExcel处理百万级数据

    前端Excel大文件file slice分片,md5校验文件完整性并作文件标识记录写入数据库,支持断点...文件上传完毕后,使用EasyExcel读取文件流,处理Excel数据写入数据库中,可处理百万级数据。项目完整,连接数据库即可运行。

    .net6 WebApi Excel转PDF并下载PDF文件

    .net6 WebApi Excel转PDF并下载PDF文件 .net开发人员 C# Excel转PDF .net6 接口下载文件

    Spring Boot中实现列表数据导出为Excel文件

    本文将详细介绍在Spring Boot框架中如何将列表数据导出为Excel文件。我们将通过Apache POI库来实现这一功能,并解释其背后的原理、提供完整的流程和步骤,以及带有详细注释的代码示例。最终,读者将能够轻松地将自己...

    多线程导出Excel(百万级别)_Java版优化.zip

    用开源 Apache POI 技术导出Excel,解决导出大数据出现OOM、栈溢出问题,此资源可实现百万级数据多线程分批导出Excel文件,不会内存溢出,生产环境已很稳定的使用者,所以用到的技术很核心、值得参考

    POI读取EXCEL教程

    阐述如何用POI来读取/写入完整的Excel文件。

    matlab导入excel代码-easy_tfrecords:Python软件包,帮助tfrecord文件读取和写入

    此软件包旨在帮助以直观的方式读取和写入tfrecord文件,从而保留dtype和数据结构 目的: tfrecord格式是一种将数据输入到张量流模型的快速而强大的方法。 它可以自动跨批次对数据进行批处理,随机化和迭代处理,而...

    文件保存到指定位置(无弹窗)

    //以创建文件的方式写入内容 FileStream fs = new FileStream(path, FileMode.CreateNew, FileAccess.Write); StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default); sw.WriteLine(content); ...

    POI读写海量Excel(详细解读)

    至于Excel的写操作,对较高版本的Excel2007,POI提供了很好的支持,主要流程是第一步构建工作薄和电子表格对象,第二步在一个流中构建文本文件,第三步使用流中产生的数据替换模板中的电子表格。这种方式也可以处理...

    Excel数据操纵-jar包-jxl.jar

     利用jExcelAPI可以修改已有的Excel文件,修改Excel文件的时候,除了打开文件的方式不同之外,其他操作和创建Excel是一样的。下面的例子是在我们已经生成的Excel文件中添加一个工作表:  //修改Excel的类,添加一...

    python批量去除多个excel的图片.zip

    这个脚本的主要功能是遍历指定目录下的所有Excel文件,然后使用Python的openpyxl库打开每个Excel文件,查找并删除其中的所有图片。由于Excel文件中的图片可能嵌入在工作表的不同位置,脚本需要能够识别和处理这些...

    通过java操作excel表格的工具类库jxl

     利用jExcelAPI可以修改已有的Excel文件,修改Excel文件的时候,除了打开文件的方式不同之外,其他操作和创建Excel是一样的。下面的例子是在我们已经生成的Excel文件中添加一个工作表:  //修改Excel的类,添加一...

    EPPlus封装导出Excel,更简单,合并单元格更方便

    ·以流的方式写入httpresponse,浏览器即可自动下载。 注意: 1.数据类容需要理解思路,如果不需要合并的情况下就是一个List的实体类,类名随便取。 2.如果有合并的,那么数据类就是一个list的实体下再包涵一个list...

Global site tag (gtag.js) - Google Analytics