隨著業務的不斷壯大發展,需要匯出的資料量也越來越大!普通的excel匯出匯出乙份上萬條的資料可能會用幾分鐘,十萬條和百萬條的資料量更是不敢想象,可能直接就oom了。一、獲取資料處理成可用的資料所以我們需要找到更快速,減少記憶體開銷的方法來處理匯出。
我這裡會介紹一種流式處理匯出的方法,自己寫成了乙個通用工具,以便不同的服務呼叫。
1、實現類需要實現 exportprocessor
2、查詢條件需要繼承exportquery
api介面:
public
inte***ce
exportprocessor
extends
exportquery>
pager.pagedata pagedata = page.getpage();
if (pagedata == null)
return pagedata.gettotalpage() > pagedata.getcurpage();
}}
@data
public
class
exportresult
exportresult result = exportresultdataadapt(mainorderdatalist);
private
final
static string work_order_file_name = "工單詳情列表";
private
final
static listheads = lists
.newarraylist("工單id", "日期", "城市", "銷售點code", "銷售點名稱", "配送蜂房code", "配送蜂房", "工單型別", "計畫完成時間", "工單狀態", "對接op1",
"取消時間", "取消原因code", "取消原因", "取消備註");
exportfactory.doexport( httpservletresponse response, work_order_file_name, heads, exportquery, workorderexportprocessor);
使用簡單的符號標識不同的標題,將某些文字標記為粗體或者斜體,建立乙個鏈結等,詳細語法參考幫助?。
/**
* csv流式匯出
//列印每行
safes.of(data).foreach(item -> );
if (!exportresult.ishasnext())
}print.flush();
print.close();
}public
static
void
println(printwriter print, listdata) ", jsonutils.tojsonstring(characters));
stringbuilder tmp = new stringbuilder();
if (collectionutils.isempty(data))
for (int i = 0; i < data.size(); i++)
string val = data.get(i);
if (numberutils.isnumber(val) && val.length() > 15)
if (stringutils.isnotblank(val) && collectionutils.isnotempty(characters)) }}
}/**
* 設定頭
}
後面會基於註解的方式處理再寫一篇~ ORACLE匯出CSV檔案
oracle的匯出功能會經常使用,也同樣經常會有需求進行匯出為csv檔案,用於往別的資料庫進行遷移,本次例項及在oracle實現匯出csv檔案操作。sqlplus as sysdba sql create or replace directory out path as home wenxuecha...
java web匯出csv檔案
用csv匯出取代excel匯出的原因 poi匯出excel時會出現以下問題 excel2003 單sheet最多只能匯出65536條資料 excel2007 單sheet能匯出百萬級資料,彌補了2003的缺陷 excel每建立乙個單元格就會生成乙個物件,並且excel生成過程中不會釋放物件,所以會占...
匯出csv檔案示例
匯出csv檔案示例 csv檔案預設以英文逗號,做為列分隔符換行符 n作為行分隔符,寫入到乙個.csv檔案即可。含有英文逗號,和換行符會發生資料輸出會出現混亂,下面列出一些處理方法。特殊字元處理 1 含有英文逗號或換行符。這時可以使用雙引號 來將該字段內容括起來,csv預設認為由 括起來的內容是乙個字...