亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > WEB開發 > 正文

導出大量數據到Excel的一種方式

2024-04-27 15:04:49
字體:
來源:轉載
供稿:網友

java Web開發中,經常需要導出大量的數據到Excel,使用POI、JXL直接生成Excel,很容易就造成內存溢出了。

  1、有一種方式,就是把數據寫成csv格式文件。

  1)csv文件可以直接用Excel打開。

  2)寫csv文件的效率和寫txt文件的效率一樣高。

  3)同樣的數據內容,生成的csv文件的大小遠遠小于生成的Excel文件。

  從以上優點就可以看出生成csv文件消耗的內存絕對小于生成Excel文件。

  2、按一定的格式去生成csv文件,在Excel中打開的時候就是完整的行和列格式。

  例如:在Excel中的格式:

                                   

  那么,在csv文件中格式就必須為:

                                  

  就是說,列和列之間,需要用英文輸入法狀態下的逗號","間隔:風云第一刀,古龍。

  3、在Struts2中導出數據到Excel,一個簡單的例子。

  CsvAction,生成csv文件,并且將生成的csv文件完整路徑傳遞到下載Action。

package cn.luxh.struts2.action;import java.io.FileWriter;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;import cn.luxh.struts2.entity.Novel;import com.opensymphony.xwork2.ActionSupport;public class CsvAction extends ActionSupport    PRivate static final long serialVersionUID -2862629695443964658L;            private String fileName;                public String exportData2CSV()        List<Novel> novels getNovels();        fileName "D:/novels.csv";        writeData2CSV(novels,fileName);        return SUCCESS;                       private List<Novel> getNovels()        List<Novel> novels new ArrayList<Novel>();                Novel novel1 new Novel("風云第一刀","古龍",new Date());        Novel novel2 new Novel("書劍恩仇錄","金庸",new Date());        Novel novel3 new Novel("陸小鳳傳奇","古龍",new Date());        Novel novel4 new Novel("鹿鼎記","金庸",new Date());                novels.add(novel1);        novels.add(novel2);        novels.add(novel3);        novels.add(novel4);                return novels;               public void writeData2CSV(List<Novel> novels,String fileName)        FileWriter fw null;        try            fw new FileWriter(fileName);            //輸出標題頭            //注意列之間用","間隔,寫完一行需要回車換行"/r/n"            String title "序號,小說名稱,作者,出版日期/r/n";            fw.write(title);                        String content null;            SimpleDateFormat sdf new SimpleDateFormat("yyyy-MM-dd");            for(int i=0;i<novels.size();i++)                Novel novel novels.get(i);                //注意列之間用","間隔,寫完一行需要回車換行"/r/n"                content =(i+1)+","+novel.getName()+","+novel.getAuthor()+","+sdf.format(novel.getPublishDate())+"/r/n";                fw.write(content);                   }catch(Exception e)            e.printStackTrace();            throw new RuntimeException(e);        }finally            try                if(fw!=null)                    fw.close();                           catch (IOException e)                e.printStackTrace();                      }}復制代碼

  配置文件:

<!--將csv文件路徑傳遞到公共的下載Action進行下載  -->         <action name="exportData2CSV" class="cn.luxh.struts2.action.CsvAction" method="exportData2CSV">            <result type="redirectAction">                <param name="actionName">download</param>                <param name="nameSpace">/download</param>                <!--附件的完整路徑 ,傳遞給下載Action -->                <param name="fileName">${fileName}</param>            </result>        </action>

  提供下載功能的Action參考http://www.cnblogs.com/luxh/archive/2012/07/01/2571778.html

  4、看一下同樣的數據內容,csv文件和Excel文件的大小對比: 

                                        

導出excel確實有些麻煩,不能流式處理,導致占用比較大的內存,很容易導致內存溢出;并且excel的數據量是有限制的,不能超過65536行。一旦超過,將無法生成excel文件。用csv方式導出,則可以像導出txt一樣,以文本流的方式進行流式處理,不但能導出海量信息,而且流式處理占用內存極低,服務器對瀏覽器的響應也是非常迅速的。輕松導出幾百萬行數據,理論上是不限量的。不過,csv方式導出也存在問題:首先,如果用excel來打開csv,超過65536行的數據都會看不見,這是excel程序的問題。其次,如果你要導出一個身份證號碼,手機號碼,郵政編碼等,純數字構成的字符串,在excel中打開csv時,這些字段很容易被識別成數字,造成誤解。解決方法是在字符串前加“'”(單引號),然而這樣處理后,excel打開scv時會看到這個“'”,又不對了,并且單擊該單元格再離開后,這個單引號會自動消失,這是'在excel中的特殊用途導致的,如果此時再保存文件,文件中的'會丟失,如果再打開該csv文件,問題就更嚴重了,編碼全成數字了(因為'丟了)!看來這也是excel的問題。上面兩個問題按下不說的話,那么csv文件還是有些基本規則的,比如用""括起來那么里面的","不會作為分隔符等轉義操作。

總體而言,我也傾向于csv格式,它可以流式處理。

注意:本內容是


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日本视频久久久| 欧美一区三区三区高中清蜜桃| 欧美激情综合色综合啪啪五月| 中文字幕精品久久| 在线日韩日本国产亚洲| 6080yy精品一区二区三区| 亚洲第一综合天堂另类专| 美女久久久久久久| 亚洲欧美国产va在线影院| 欧美黄色性视频| 不用播放器成人网| 亚洲激情久久久| 日韩中文在线不卡| 57pao国产精品一区| 日韩av电影免费观看高清| 国产精品影片在线观看| 97国产成人精品视频| 亚洲国产精品yw在线观看| 成人欧美一区二区三区在线| 97在线观看免费| 久久av在线看| 日韩在线免费视频观看| 青青青国产精品一区二区| 国产区精品视频| 国内精品美女av在线播放| 亚洲在线免费看| 亚洲精品久久久久久久久久久| 亚洲第一天堂无码专区| 亚洲午夜国产成人av电影男同| 成人免费激情视频| 国外日韩电影在线观看| 亚洲国产精品电影在线观看| 91深夜福利视频| 日韩电影第一页| 不卡中文字幕av| 97国产在线观看| 狠狠做深爱婷婷久久综合一区| 久久这里只有精品99| 91久久久国产精品| 中文字幕日韩在线视频| 亚洲精品美女网站| 91av在线免费观看| 亚洲成人网av| 超碰97人人做人人爱少妇| 日韩欧美福利视频| 91久久精品美女高潮| 精品国产91久久久| 亚洲欧洲av一区二区| 久久久久久久999| 亚洲美女在线看| 欧美激情视频在线| 国产一区二区日韩精品欧美精品| 日韩欧美主播在线| 久久视频免费观看| 一区二区欧美激情| 国产中文字幕日韩| 久久久在线观看| 久久综合88中文色鬼| 国产噜噜噜噜噜久久久久久久久| 欧美乱大交做爰xxxⅹ性3| 精品久久国产精品| 久久久国产视频91| 欧美日韩成人精品| 欧美在线观看网址综合| 超碰97人人做人人爱少妇| 97色在线播放视频| 一区二区欧美亚洲| 欧美日韩成人在线视频| 国产69精品久久久| 精品久久久久久久久中文字幕| 高清一区二区三区日本久| xxx成人少妇69| 亚洲激情小视频| 97成人精品区在线播放| 国产精品欧美亚洲777777| 亚洲精品日韩久久久| 热re99久久精品国产66热| 日本精品视频在线| 亚洲性生活视频| 国外日韩电影在线观看| 国产成+人+综合+亚洲欧洲| 国产精品三级网站| 日韩av在线天堂网| 91精品视频在线播放| 国产日韩精品综合网站| 久久久亚洲天堂| 欧美成人全部免费| 欧美刺激性大交免费视频| 国产精品视频免费观看www| 久久成人一区二区| 亚洲欧美在线播放| 欧美电影免费观看| 国产成人亚洲综合91| 国模视频一区二区三区| 欧美国产欧美亚洲国产日韩mv天天看完整| 色综合久久久888| 大伊人狠狠躁夜夜躁av一区| 欧美国产欧美亚洲国产日韩mv天天看完整| 精品久久久一区二区| 91精品一区二区| 精品小视频在线| 久久亚洲精品国产亚洲老地址| 性欧美xxxx| 国产成人综合精品| 国产精品日韩久久久久| 中文字幕亚洲情99在线| 日韩二区三区在线| 亚洲美女又黄又爽在线观看| 九九九热精品免费视频观看网站| 日韩黄色高清视频| 亚洲国产成人爱av在线播放| 一区二区成人精品| 日韩一区二区欧美| 日韩精品在线影院| 亚洲免费av网址| 亚洲美女免费精品视频在线观看| 国产一区二区视频在线观看| 精品视频—区二区三区免费| 亚洲欧美日韩另类| 亚洲奶大毛多的老太婆| 亚洲精品一区二区三区婷婷月| 日本久久久久亚洲中字幕| 日韩电影中文字幕一区| 亚洲免费视频一区二区| 欧美另类高清videos| 亚洲精品一区中文字幕乱码| 精品性高朝久久久久久久| 中文字幕国产日韩| 欧美视频在线免费| 亚洲片av在线| 久久亚洲春色中文字幕| 日韩精品高清在线观看| 狠狠色狠狠色综合日日五| 亚洲天堂成人在线视频| 日韩中文在线中文网在线观看| www日韩中文字幕在线看| 亚洲一级片在线看| 日韩天堂在线视频| 永久免费毛片在线播放不卡| 中文字幕日韩在线观看| 亚洲va欧美va在线观看| 日本一区二区三区四区视频| 亚洲a成v人在线观看| 欧美日韩精品国产| 亚洲欧洲美洲在线综合| 亚洲成人久久一区| 国产91网红主播在线观看| 欧美日韩中文在线| 97精品国产97久久久久久春色| 日韩成人黄色av| 久久久久女教师免费一区| 国产精品日韩欧美大师| 日本精品中文字幕| 欧美成人免费视频| 欧美国产高跟鞋裸体秀xxxhd| 欧美亚洲免费电影| 成人欧美一区二区三区在线| 96pao国产成视频永久免费| 亚洲aⅴ日韩av电影在线观看| 成人性生交xxxxx网站| 欧美日韩免费在线观看| 欧美香蕉大胸在线视频观看| 欧美xxxx做受欧美| 亚洲网址你懂得|