前提:1)该应用部署在本地
2)内存有限 即一次性加载不了所有的数据
问题:当Excel 中的数据信息相当大时或者是当从数据库中查询出来的结果集很大时这种情况如何处理?
思考:由于内存有限,面对的又是大数据集,只有将原有的数据集进行分段处理
对于数据库中的数据导出到Excel中
//1.创建一个工作表单
wwb = ExportExcel.createWorkBokk("XXXX",response);
String[] array = null;//表头属性数组
int size = 1,index=0,sheet_index=0,head_index;
Label label = null;//填写excel表头
WritableSheet ws = null;
while(true)//开启大数据分段读取方案
{
//通过数据库查询语句设定获取数据结果集的长度信息
if(sheet_index<=0||index>60000)
{
index = 0;//重置 列游标
ws = wwb.createSheet("sheet"+sheet_index, sheet_index); //创建sheet
//添加表头数据
sheet_index++;
index = 1;//重置 行游标
}
//数据填充
size ++;//分页查询数据
if(this.isbreak||size>25)break;
}
wwb.write();
wwb.close();
对于Excel数据导入到数据库中通过行控制来加载数据信息,示例代码如下:
<pre class="java" name="code"><pre class="java" name="code">Workbook wb = Workbook.getWorkbook(file.getInputStream());
Sheet sheet = wb.getSheet(0);
//设定行数
int num = 200;
for(int i=0;i<sheet.getRows();i++)
{
//行数据处理
if(i!=0 && i%num ==0) //控制数据分段加载
{
//做数据处理,例如插入到数据库,将原来的结果集清空,继续加载数据
}
}