当前位置: 首页 > 工具软件 > EasyReport > 使用案例 >

java批量导出txt,java easyreport 导入excel、 txt 数据批量读取(五)

万高洁
2023-12-01

有时候我们需要读的报表数据很大,这时候一次加载所有数据有可能会出现内存溢出,所以我们需要采用批量读取来实现。

导入数据test5.xls姓名年龄科目分数

王老五12语文80

柯景腾13语文78

沈佳宜14语文88

王小贱15语文60

黄小仙12语文54

李大仁14语文76

程又青13语文58

陈寻12语文67

方茴12语文87

沈晓棠13语文89

林嘉茉14语文68

赵烨14语文50

苏凯12语文78

乔燃13语文90

导入测试demo

package example;

import java.io.File;

import java.io.FileInputStream;

import java.util.List;

import java.util.Map;

import model.Student;

import test.AbstractExcelTest;

import com.easyReport.read.temp.PropertyTemp;

import com.easyReport.read.temp.ReadTemp;

public class TestExcelBatch extends AbstractExcelTest {

@Override

public void test() {

FileInputStream fileInputStream;

try {

fileInputStream = new FileInputStream(new File("testFile/test5.xls"));

testReadBean(fileInputStream);

//testReadMap(fileInputStream);

fileInputStream.close();

} catch (Exception e) {

e.printStackTrace();

}

}

@Override

protected ReadTemp bulidReadTemp() {

//模板设置批次构造方法,一次读取10行

ReadTemp readTemp = new ReadTemp(1,10);

readTemp.addPropertyTemp(new PropertyTemp("姓名", "name"));

readTemp.addPropertyTemp(new PropertyTemp("年龄", "age"));

readTemp.addPropertyTemp(new PropertyTemp("科目", "course.name"));

readTemp.addPropertyTemp(new PropertyTemp("分数", "course.score"));

return readTemp;

}

@Override

protected void writeBeanList(List modelLists) {

System.out.println("--------------bean---------------");

for (Student s : modelLists) {

System.out.println(s.getName() + "|"

+ s.getAge()+s.getCourse().getName()+"|"+s.getCourse().getScore());

}

}

@Override

protected void writeMapList(List> mapLists) {

System.out.println("--------------map---------------");

for (Map m : mapLists) {

System.out.println(m.get("name") + "|" + m.get("age")+"|" + m.get("course.name")+"|" + m.get("course.score"));

}

}

}

基类basicTest

public void testReadBean(FileInputStream fis) throws Exception {

ConvertReader reader = buildReader();

//判断是否批次读取,若批次读取,写每批次数据

if(reader.getContext().getTemp().getBatch() == 0){

writeBeanList((List) reader.readToBeanList(fis, getModelClass()));

}else{

//判断是否批次读取完成

while(!reader.isEnd()){

writeBeanList((List) reader.readToBeanList(fis, getModelClass()));

}

}

}

public void testReadMap(FileInputStream fis) throws Exception {

ConvertReader reader = buildReader();

writeMapList(reader.readToMapList(fis));

if(reader.getContext().getTemp().getBatch() == 0){

writeMapList(reader.readToMapList(fis));

}else{

while(!reader.isEnd()){

writeMapList(reader.readToMapList(fis));

}

}

}

执行demo测试类,运行结果:

--------------bean---------------

王老五|12语文|80.0

柯景腾|13语文|78.0

沈佳宜|14语文|88.0

王小贱|15语文|60.0

黄小仙|12语文|54.0

李大仁|14语文|76.0

程又青|13语文|58.0

陈寻|12语文|67.0

方茴|12语文|87.0

沈晓棠|13语文|89.0

--------------bean---------------

林嘉茉|14语文|68.0

赵烨|14语文|50.0

苏凯|12语文|78.0

乔燃|13语文|90.0

注:很不好意思上传附件的时候把字节码打包上传了,请到第六章节下载!

 类似资料: