Java實現(xiàn)大數(shù)據(jù)Excel導(dǎo)出
在處理大量數(shù)據(jù)需要導(dǎo)出Excel表格時,我們可以采用一種解決方案,即使用CSV文件替代表格。CSV文件是一種純文本格式,可以和表格互相轉(zhuǎn)換且使用效果基本相同。與普通的Excel文件不同,CSV文件理論
在處理大量數(shù)據(jù)需要導(dǎo)出Excel表格時,我們可以采用一種解決方案,即使用CSV文件替代表格。CSV文件是一種純文本格式,可以和表格互相轉(zhuǎn)換且使用效果基本相同。與普通的Excel文件不同,CSV文件理論上沒有大小上限。
CSV文件(逗號分隔值)以純文本形式存儲表格數(shù)據(jù),不包含像二進(jìn)制數(shù)字那樣被解讀的數(shù)據(jù)。它由任意數(shù)量的記錄組成,記錄間以某種換行符分隔,每條記錄由字段組成,字段間的分隔符是其他字符或字符串,最常見的是逗號或制表符。所有記錄通常都有完全相同的字段序列。建議使用WordPad或記事本來打開CSV文件,也可以先另存為新檔再用Excel打開。
雖然CSV文件格式的通用標(biāo)準(zhǔn)并不存在,但是在RFC 4180中有一些基礎(chǔ)性的描述。使用的字符編碼也沒有被指定,但是bitASCII是最基本的通用編碼。
第一步驟:創(chuàng)建SpringBoot項目
1. 使用IDEA創(chuàng)建SpringBoot項目,具體可以參考:
2. 使用Eclipse創(chuàng)建SpringBoot項目,具體可以參考:
3. 創(chuàng)建普通JavaWeb項目使用Servlet實現(xiàn)請求,具體可以參考: 或者百度搜索:servlet類如何映射到URL路徑。
第二步驟:代碼實現(xiàn)
import ;
import ;
import ;
import ;
import ;
import ;
import java.util.HashMap;
import ;
import ;
@RestController
public class CSVController {
@GetMapping("/exportCsv")
public void exportCsv(HttpServletRequest request, HttpServletResponse response) {
try {
Listlt;Mapgt; oneWinnerList new ArrayListlt;gt;();
for (int i 0; i < 100000; i ) {
Map map new HashMap<>();
map.put("winnerId", "winnerId(請勿修改)");
map.put("orderDetailId", "訂單號");
map.put("title", "商品標(biāo)題");
map.put("goodsId", "商品Id");
map.put("periods", "期數(shù)");
map.put("userId", "用戶Id");
map.put("userName", "用戶");
map.put("statusDetail", "訂單狀態(tài)");
map.put("addressee", "收貨人");
map.put("phone", "收貨電話");
map.put("address", "收貨地址");
map.put("expressCompany", "快遞名稱");
map.put("expressOrder", "快遞單號");
(map);
}
();
("application/csv;charsetUTF-8");
("Content-Disposition", "attachment;filenameorderData " () ".csv");
("UTF-8");
PrintWriter out ();
("winnerId(請勿修改),訂單號,商品標(biāo)題,商品Id,期數(shù),用戶Id,用戶,訂單狀態(tài),收貨人,收貨電話,收貨地址,快遞名稱,快遞單號");
for (int i 0, length (); i < length; i ) {
Map onewinner (i);
String str ("winnerId") ","
("orderDetailId") ","
("title") ","
("goodsId") ","
("periods") ","
("userId") ","
("userName") ","
("statusDetail") ","
("addressee") ","
("phone") ","
("address") ","
("expressCompany") ","
("expressOrder");
str ("null", "");
(str);
}
out.flush();
();
} catch (Exception e) {
();
}
}
}
第三步驟:測試
1. 使用瀏覽器打開頁面 http://localhost:8080/exportCsv
2. 導(dǎo)出文件大小為146M。