日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

JAVA導出CSV文件實例教程

瀏覽:22日期:2022-08-31 17:59:36

JAVA導出CSV文件實例教程

以前導出總是用POI導出為Excel文件,后來當我了解到CSV以后,我發現速度飛快。

如果導出的數據不要求格式、樣式、公式等等,建議最好導成CSV文件,因為真的很快。

雖然我們可以用Java再帶的文件相關的類去操作以生成一個CSV文件,但事實上有好多第三方類庫也提供了類似的功能。

這里我們使用apache提供的commons-csv組件

Commons CSV

文檔在這里

http://commons.apache.org/

http://commons.apache.org/proper/commons-csv/

http://commons.apache.org/proper/commons-csv/user-guide.html

先看一下具體用法

@Test public void testWrite() throws Exception { FileOutputStream fos = new FileOutputStream('E:/cjsworkspace/cjs-excel-demo/target/abc.csv'); OutputStreamWriter osw = new OutputStreamWriter(fos, 'GBK'); CSVFormat csvFormat = CSVFormat.DEFAULT.withHeader('姓名', '年齡', '家鄉'); CSVPrinter csvPrinter = new CSVPrinter(osw, csvFormat);// csvPrinter = CSVFormat.DEFAULT.withHeader('姓名', '年齡', '家鄉').print(osw); for (int i = 0; i < 10; i++) { csvPrinter.printRecord('張三', 20, '湖北'); } csvPrinter.flush(); csvPrinter.close(); } @Test public void testRead() throws IOException { InputStream is = new FileInputStream('E:/cjsworkspace/cjs-excel-demo/target/abc.csv'); InputStreamReader isr = new InputStreamReader(is, 'GBK'); Reader reader = new BufferedReader(isr); CSVParser parser = CSVFormat.EXCEL.withHeader('name', 'age', 'jia').parse(reader);// CSVParser csvParser = CSVParser.parse(reader, CSVFormat.DEFAULT.withHeader('name', 'age', 'jia')); List<CSVRecord> list = parser.getRecords(); for (CSVRecord record : list) { System.out.println(record.getRecordNumber() + ':' + record.get('name') + ':' + record.get('age') + ':' + record.get('jia')); } parser.close(); } /** * Parsing an Excel CSV File */ @Test public void testParse() throws Exception { Reader reader = new FileReader('C:/Users/Administrator/Desktop/abc.csv'); CSVParser parser = CSVFormat.EXCEL.parse(reader); for (CSVRecord record : parser.getRecords()) { System.out.println(record); } parser.close(); } /** * Defining a header manually */ @Test public void testParseWithHeader() throws Exception { Reader reader = new FileReader('C:/Users/Administrator/Desktop/abc.csv'); CSVParser parser = CSVFormat.EXCEL.withHeader('id', 'name', 'code').parse(reader); for (CSVRecord record : parser.getRecords()) { System.out.println(record.get('id') + ',' + record.get('name') + ',' + record.get('code')); } parser.close(); } /** * Using an enum to define a header */ enum MyHeaderEnum { ID, NAME, CODE; } @Test public void testParseWithEnum() throws Exception { Reader reader = new FileReader('C:/Users/Administrator/Desktop/abc.csv'); CSVParser parser = CSVFormat.EXCEL.withHeader(MyHeaderEnum.class).parse(reader); for (CSVRecord record : parser.getRecords()) { System.out.println(record.get(MyHeaderEnum.ID) + ',' + record.get(MyHeaderEnum.NAME) + ',' + record.get(MyHeaderEnum.CODE)); } parser.close(); } private List<Map<String, String>> recordList = new ArrayList<>(); @Before public void init() { for (int i = 0; i < 5; i++) { Map<String, String> map = new HashMap<>(); map.put('name', 'zhangsan'); map.put('code', '001'); recordList.add(map); } } @Test public void writeMuti() throws InterruptedException { ExecutorService executorService = Executors.newFixedThreadPool(3); CountDownLatch doneSignal = new CountDownLatch(2); executorService.submit(new exprotThread('E:/0.csv', recordList, doneSignal)); executorService.submit(new exprotThread('E:/1.csv', recordList, doneSignal)); doneSignal.await(); System.out.println('Finish!!!'); } class exprotThread implements Runnable { private String filename; private List<Map<String, String>> list; private CountDownLatch countDownLatch; public exprotThread(String filename, List<Map<String, String>> list, CountDownLatch countDownLatch) { this.filename = filename; this.list = list; this.countDownLatch = countDownLatch; } @Override public void run() { try { CSVPrinter printer = new CSVPrinter(new FileWriter(filename), CSVFormat.EXCEL.withHeader('NAME', 'CODE')); for (Map<String, String> map : list) { printer.printRecord(map.values()); } printer.close(); countDownLatch.countDown(); } catch (IOException e) { e.printStackTrace(); } } }

CSV與EXCEL

/** * 測試寫100萬數據需要花費多長時間 */ @Test public void testMillion() throws Exception { int times = 10000 * 10; Object[] cells = {'滿100減15元', '100011', 15}; // 導出為CSV文件 long t1 = System.currentTimeMillis(); FileWriter writer = new FileWriter('G:/test1.csv'); CSVPrinter printer = CSVFormat.EXCEL.print(writer); for (int i = 0; i < times; i++) { printer.printRecord(cells); } printer.flush(); printer.close(); long t2 = System.currentTimeMillis(); System.out.println('CSV: ' + (t2 - t1)); // 導出為Excel文件 long t3 = System.currentTimeMillis(); XSSFWorkbook workbook = new XSSFWorkbook(); XSSFSheet sheet = workbook.createSheet(); for (int i = 0; i < times; i++) { XSSFRow row = sheet.createRow(i); for (int j = 0; j < cells.length; j++) { XSSFCell cell = row.createCell(j); cell.setCellValue(String.valueOf(cells[j])); } } FileOutputStream fos = new FileOutputStream('G:/test2.xlsx'); workbook.write(fos); fos.flush(); fos.close(); long t4 = System.currentTimeMillis(); System.out.println('Excel: ' + (t4 - t3)); }

Maven依賴

<dependencies> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-csv</artifactId> <version>1.5</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency></dependencies>

最后,剛才的例子中只寫了3個字段,100萬行,生成的CSV文件有十幾二十兆,太多的話建議分多個文件打包下周,不然想象一個打開一個幾百兆的excel都費勁。

以上就是JAVA導出CSV文件實例教程的詳細內容,更多關于JAVA導出CSV文件的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
色婷婷精品视频| 国产欧美日韩精品一区二区三区| 国产精品一区亚洲| 日本欧美久久久久免费播放网| 中文一区一区三区免费在线观 | 午夜精品婷婷| 精品一区免费| 久久青青视频| 欧美日韩尤物久久| 不卡在线一区二区| 久久亚洲欧洲| 日本午夜精品久久久久| 国产免费av一区二区三区| 91成人精品观看| 精品视频网站| 日韩精品免费一区二区在线观看| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 91亚洲精品在看在线观看高清| 91嫩草精品| 国产精品毛片视频| 成年男女免费视频网站不卡| 日韩欧美视频专区| 国产一区日韩一区| 亚洲色诱最新| 亚洲精品在线国产| 久久国产乱子精品免费女| 久久一区精品| 亚洲小说欧美另类婷婷| 蜜臀av亚洲一区中文字幕| 欧美伊人影院| 中文字幕在线看片| 国产亚洲精品v| 欧美一区网站| 热三久草你在线| 亚洲欧美日韩国产一区| 久久国产日韩欧美精品| 成人一二三区| 好吊视频一区二区三区四区| 亚洲精品高潮| 久久精品网址| 欧美手机在线| 日韩av在线免费观看不卡| 精品欧美日韩精品| 悠悠资源网久久精品| 日本国产一区| 日韩欧美精品综合| 亚洲精品看片| 中文av在线全新| 亚洲一区二区免费在线观看| 麻豆一区二区三区| 99热精品在线| 欧美国产免费| 亚洲精品123区| 久久久91麻豆精品国产一区| 激情综合网站| 欧美一级久久| 不卡中文一二三区| 美女精品久久| 免费在线欧美视频| 伊人久久国产| 日本aⅴ精品一区二区三区| 久久人人精品| 国产精品亚洲欧美日韩一区在线 | 最新国产精品久久久| 精品在线网站观看| 免费中文字幕日韩欧美| 精品国产乱码| 在线观看免费一区二区| 老牛国产精品一区的观看方式| 激情黄产视频在线免费观看| 成人av二区| 欧美久久一区二区三区| 欧美+日本+国产+在线a∨观看| 欧美日韩1区2区3区| 久久一级电影| 国产免费av一区二区三区| 99香蕉国产精品偷在线观看| 欧美激情福利| 亚洲丝袜啪啪| 久久一区二区三区喷水| 国产精品qvod| 天海翼亚洲一区二区三区| 福利在线一区| 国产欧美日韩一区二区三区四区| 国产视频久久| 天堂√中文最新版在线| 青青在线精品| 欧美资源在线| 亚洲一级影院| 日本美女一区| 老司机精品在线| 日韩精品久久久久久| 国产专区一区| 色偷偷色偷偷色偷偷在线视频| 国产精品丝袜在线播放| 综合亚洲自拍| 久久亚洲欧美| 欧美日韩国产探花| 国产91久久精品一区二区| 日韩综合在线| 久久97久久97精品免视看秋霞| 日本综合精品一区| 亚洲天堂av资源在线观看| 亚洲成人二区| 丝袜美腿诱惑一区二区三区| 精品美女在线视频| 欧美交a欧美精品喷水| 欧美永久精品| 欧美天堂一区二区| 日韩精品第一| 日日摸夜夜添夜夜添国产精品| 亚洲综合另类| 伊人成人在线视频| 99免费精品| 91精品婷婷色在线观看| 中文字幕在线视频网站| 秋霞影院一区二区三区| 日韩成人高清| 99久久夜色精品国产亚洲狼 | 久久97久久97精品免视看秋霞| 日韩中出av| 五月亚洲婷婷 | 亚洲美女91| 视频在线观看国产精品| 日韩亚洲精品在线| 亚洲欧美日韩国产一区二区| 亚洲精品国产偷自在线观看| 久久一区二区三区电影| 亚洲成人精品| av亚洲一区二区三区| 日韩黄色大片| 久久精品亚洲人成影院 | 国产精品av一区二区| 亚洲福利一区| 91久久久久| 深夜日韩欧美| 国产精品一区二区精品视频观看| 国产精品久久久久77777丨| 国产亚洲精品精品国产亚洲综合| 国产欧美在线| 麻豆精品新av中文字幕| 精品国产乱码| 国产一区二区三区黄网站| 国产在线观看www| 日韩中文在线电影| 波多野结衣一区| 蜜桃91丨九色丨蝌蚪91桃色| 蜜桃一区二区三区在线观看| 亚洲视频二区| 日韩av一区二区三区四区| 国产伦理一区| 国产精品蜜芽在线观看| 亚洲www免费| 国产精品日本欧美一区二区三区| 视频一区中文字幕| 欧美一级网址| 国产成人黄色| 国产精品久久久久蜜臀| 激情综合激情| 亚洲精品日韩久久| 国产伦精品一区二区三区视频 | 国产91在线播放精品| 成人日韩精品| 欧美日韩视频一区二区三区| 日韩视频1区| 日本欧美国产| 国产精品av一区二区| 亚洲精品网址| 日韩激情综合| www在线观看黄色| 午夜精品影院| 国产欧美自拍| 婷婷国产精品| 欧美精品中文| 久久久久国产精品一区二区| 乱人伦精品视频在线观看| 国产精品一区二区三区av麻| 欧美二三四区| 亚洲+小说+欧美+激情+另类| 国产专区精品| 免费观看日韩电影| 国产一区二区三区不卡视频网站| 91高清一区| 久久国内精品| 国产综合精品| 国产精品亚洲一区二区在线观看| 人人精品亚洲| 日韩不卡一区二区三区| 日韩一区二区三区免费播放| 亚洲天堂日韩在线| 麻豆视频在线观看免费网站黄 | 亚洲欧洲日本mm| 日韩精品中文字幕吗一区二区| 中文av在线全新| 91精品啪在线观看国产爱臀| 在线日韩av| 久久一区视频| 亚洲人妖在线| 国产高清一区| 国产资源在线观看入口av|