import java.io.IOException; import java.io.OutputStream; import java.lang.reflect.Field; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; import org.joda.time.DateTime; import com.travelzen.framework.net.http.TZHttpClient; import com.travelzen.tops.front.ota.member.item.CustomerItem; public class CSV { /** * 目標(biāo)輸出流 */ private OutputStream stream; /** * 表頭 */ private Mapfields; /** * 數(shù)據(jù)源model所有字段map */ private static Map fieldMap = new HashMap<>(); public CSV(HttpServletResponse response,Map fields,String fileName,Class<?> clz) throws IOException{ if(response == null || fields == null || fileName == null || clz == null) throw new IllegalArgumentException(); getFieldMap(clz,fieldMap); this.stream = response.getOutputStream(); this.fields = fields; response.setContentType("application/octet-stream;charset=GBK"); response.setHeader("Content-Disposition", "attachment;fileName="+ fileName); //寫表頭,生成指定名字的文件,返回客戶端 StringBuilder hb = new StringBuilder(); for(Entry e : fields.entrySet()) hb.append(e.getValue()+","); stream.write(hb.substring(0, hb.length() - 1).getBytes("GBK")); stream.flush(); } /** * 往表格中插入記錄 */ public void write(List
web開發(fā)中常見的準(zhǔn)備Excel數(shù)據(jù)需要從數(shù)據(jù)庫查詢數(shù)據(jù),或者跨系統(tǒng)調(diào)用接口查詢數(shù)據(jù),耗費(fèi)大量時(shí)間,因此未及時(shí)向?yàn)g覽器返回?cái)?shù)據(jù),導(dǎo)致504超時(shí)。
創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司一直秉承“誠信做人,踏實(shí)做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務(wù)為基礎(chǔ),以質(zhì)量求生存,以技術(shù)求發(fā)展,成交一個(gè)客戶多一個(gè)朋友!專注中小微企業(yè)官網(wǎng)定制,網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì),塑造企業(yè)網(wǎng)絡(luò)形象打造互聯(lián)網(wǎng)企業(yè)效應(yīng)。
本工具使用ServletOutputStream分段的往瀏覽器flush數(shù)據(jù)。調(diào)用方式:先new CSV(),傳入指定參數(shù),不斷的調(diào)用wirte()方法往瀏覽器寫入數(shù)據(jù),最后調(diào)用close方法關(guān)閉流。
本工具導(dǎo)出的文件格式為.csv文件,windows office工具默認(rèn)編碼為ASCI,wps會(huì)匹配各種編碼,libreOffice calc可以指定編碼,故此設(shè)置編碼為GBK,兼容三種Excel軟件,也可根據(jù)自身需求設(shè)置編碼。
本工具只處理了CSV中”,”的轉(zhuǎn)碼,對(duì)于雙引號(hào)并未處理。
希望本文能夠?qū)τ龅酱藛栴}的朋友能有所幫助