poi导出数据分割成多个excel

alphaes 2014-10-20 01:06:59
获取数据list,然后按照list大小,分割成500条数据一个excel.生成多个excel.
...全文
497 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
依然一叶 2014-10-22
  • 打赏
  • 举报
回复
引用 3 楼 alphaes 的回复:
[quote=引用 2 楼 u010533788 的回复:] 循环,一条一条的写入, 当到第501条的时候新建excel 然后到1001的时候在新建。。。以此类推 。 理论上是可行的。
如何获取存储501或者1001这个值呢[/quote] for(int i=0;i<list.size();i++){ if(i>500){ ... } }
cjd96 2014-10-21
  • 打赏
  • 举报
回复
随便写了一个,你导入poi的包之后就可以直接运行的,拿去参考一下吧
cjd96 2014-10-21
  • 打赏
  • 举报
回复
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.excel;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;

/**
 *
 * @author lugl
 */
public class Test {

    public static void main(String[] args) {
        List<String> strings = new ArrayList<>();
        for (int i = 0; i < 30; i++) {
            strings.add("test" + i);
        }
        for (int i = 0; i < strings.size(); i++) {
            if (i % 3 == 0) {
                List<String> list = new ArrayList<>();
                int fromIndex = i / 3 * 3;
                int toIndex = (i / 3 + 1) * 3;
                if (toIndex > strings.size()) {
                    toIndex = strings.size();
                }
                list = strings.subList(fromIndex, toIndex);
                createEx(list, "sheet" + i);
            }
        }
    }

    public static void createEx(List<String> list, String sheetName) {
        FileOutputStream os = null;
        HSSFWorkbook wb = new HSSFWorkbook();
        HSSFSheet sheet = wb.createSheet(sheetName);
        for (int i = 0; i < list.size(); i++) {
            String string = list.get(i);
            Row row = sheet.createRow(i);
            Cell cell = row.createCell(0);
            cell.setCellValue(string);
        }
        try {
            os = new FileOutputStream("D:\\" + sheetName + ".xls");
            wb.write(os);
            os.close();
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
cjd96 2014-10-21
  • 打赏
  • 举报
回复
引用 16 楼 alphaes 的回复:
[quote=引用 15 楼 alphaes 的回复:] [quote=引用 14 楼 bzssd 的回复:] 都拿到list了还不能根据条数创建表? HSSFWorkbook workbook; HSSFSheet sheet; for(int i=0;i<list.size;i++){ if(i%500==0){ workbook = new HSSFWorkbook(); sheet = workbook.createSheet(); } //todo 向里面放list的数据 }
具体循环放怎么弄啊,老是一下把所有的数据都放在一个excel里面了[/quote] 能否远程帮我一下啊,是在是没发解决[/quote] 来加个Q
alphaes 2014-10-21
  • 打赏
  • 举报
回复
引用 15 楼 alphaes 的回复:
[quote=引用 14 楼 bzssd 的回复:] 都拿到list了还不能根据条数创建表? HSSFWorkbook workbook; HSSFSheet sheet; for(int i=0;i<list.size;i++){ if(i%500==0){ workbook = new HSSFWorkbook(); sheet = workbook.createSheet(); } //todo 向里面放list的数据 }
具体循环放怎么弄啊,老是一下把所有的数据都放在一个excel里面了[/quote] 能否远程帮我一下啊,是在是没发解决
alphaes 2014-10-21
  • 打赏
  • 举报
回复
引用 14 楼 bzssd 的回复:
都拿到list了还不能根据条数创建表? HSSFWorkbook workbook; HSSFSheet sheet; for(int i=0;i<list.size;i++){ if(i%500==0){ workbook = new HSSFWorkbook(); sheet = workbook.createSheet(); } //todo 向里面放list的数据 }
具体循环放怎么弄啊,老是一下把所有的数据都放在一个excel里面了
alphaes 2014-10-21
  • 打赏
  • 举报
回复
引用 21 楼 alphaes 的回复:
[quote=引用 20 楼 alphaes 的回复:] [quote=引用 17 楼 bzssd 的回复:] [quote=引用 16 楼 alphaes 的回复:] [quote=引用 15 楼 alphaes 的回复:] [quote=引用 14 楼 bzssd 的回复:] 都拿到list了还不能根据条数创建表? HSSFWorkbook workbook; HSSFSheet sheet; for(int i=0;i<list.size;i++){ if(i%500==0){ workbook = new HSSFWorkbook(); sheet = workbook.createSheet(); } //todo 向里面放list的数据 }
具体循环放怎么弄啊,老是一下把所有的数据都放在一个excel里面了[/quote] 能否远程帮我一下啊,是在是没发解决[/quote] 来加个Q[/quote] 772316481 非常感谢啊 [/quote] 我用了你写的那个代码,没有数据啊[/quote] 帮我远程看一下吧,先谢啦
alphaes 2014-10-21
  • 打赏
  • 举报
回复
引用 20 楼 alphaes 的回复:
[quote=引用 17 楼 bzssd 的回复:] [quote=引用 16 楼 alphaes 的回复:] [quote=引用 15 楼 alphaes 的回复:] [quote=引用 14 楼 bzssd 的回复:] 都拿到list了还不能根据条数创建表? HSSFWorkbook workbook; HSSFSheet sheet; for(int i=0;i<list.size;i++){ if(i%500==0){ workbook = new HSSFWorkbook(); sheet = workbook.createSheet(); } //todo 向里面放list的数据 }
具体循环放怎么弄啊,老是一下把所有的数据都放在一个excel里面了[/quote] 能否远程帮我一下啊,是在是没发解决[/quote] 来加个Q[/quote] 772316481 非常感谢啊 [/quote] 我用了你写的那个代码,没有数据啊
alphaes 2014-10-21
  • 打赏
  • 举报
回复
引用 17 楼 bzssd 的回复:
[quote=引用 16 楼 alphaes 的回复:] [quote=引用 15 楼 alphaes 的回复:] [quote=引用 14 楼 bzssd 的回复:] 都拿到list了还不能根据条数创建表? HSSFWorkbook workbook; HSSFSheet sheet; for(int i=0;i<list.size;i++){ if(i%500==0){ workbook = new HSSFWorkbook(); sheet = workbook.createSheet(); } //todo 向里面放list的数据 }
具体循环放怎么弄啊,老是一下把所有的数据都放在一个excel里面了[/quote] 能否远程帮我一下啊,是在是没发解决[/quote] 来加个Q[/quote] 772316481 非常感谢啊
cjd96 2014-10-20
  • 打赏
  • 举报
回复
都拿到list了还不能根据条数创建表? HSSFWorkbook workbook; HSSFSheet sheet; for(int i=0;i<list.size;i++){ if(i%500==0){ workbook = new HSSFWorkbook(); sheet = workbook.createSheet(); } //todo 向里面放list的数据 }
alphaes 2014-10-20
  • 打赏
  • 举报
回复
引用 12 楼 rui888 的回复:
你那是不是循环item 从 501 开始 写到新的excel里面。
对的,list从501开始循环在写到另外一个excel里面
tony4geek 2014-10-20
  • 打赏
  • 举报
回复
你那是不是循环item 从 501 开始 写到新的excel里面。
alphaes 2014-10-20
  • 打赏
  • 举报
回复
引用 10 楼 rui888 的回复:
那就生成excel 的时候生成多个。
如何获取存储501或者1001这个值呢
tony4geek 2014-10-20
  • 打赏
  • 举报
回复
那就生成excel 的时候生成多个。
alphaes 2014-10-20
  • 打赏
  • 举报
回复
引用 8 楼 rui888 的回复:
HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet(); 通过总条数然后判断有几个sheet ,然后循环写到对应 的excel
不是要有多个sheet,而是每500条数据生成一个excel
tony4geek 2014-10-20
  • 打赏
  • 举报
回复
HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet(); 通过总条数然后判断有几个sheet ,然后循环写到对应 的excel
alphaes 2014-10-20
  • 打赏
  • 举报
回复
引用 5 楼 alphaes 的回复:
[quote=引用 4 楼 rui888 的回复:] POI 不是有创建excel 的方法啊。直接调用。
我知道啊,关键现在是我不知道该怎么分割,具体代码卡壳了. 例如我想把1-5000这个范围中的数据分割成每500条数据生成一个excel. [/quote] 需求是这样的,下载的excel最多能65536行,现在做个一个功能从编号A到编号B里面数据生成一个excel. 但是客户感觉这样数据量有点多,想把这一个范围里面的数据按照每500条,分割成一个excel
tony4geek 2014-10-20
  • 打赏
  • 举报
回复
alphaes 2014-10-20
  • 打赏
  • 举报
回复
引用 4 楼 rui888 的回复:
POI 不是有创建excel 的方法啊。直接调用。
我知道啊,关键现在是我不知道该怎么分割,具体代码卡壳了. 例如我想把1-5000这个范围中的数据分割成每500条数据生成一个excel.
tony4geek 2014-10-20
  • 打赏
  • 举报
回复
POI 不是有创建excel 的方法啊。直接调用。
加载更多回复(3)

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧