激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術(shù)|正則表達(dá)式|

服務(wù)器之家 - 編程語(yǔ)言 - JAVA教程 - java導(dǎo)出大批量(百萬(wàn)以上)數(shù)據(jù)的excel文件

java導(dǎo)出大批量(百萬(wàn)以上)數(shù)據(jù)的excel文件

2020-09-16 15:16vbvb520 JAVA教程

這篇文章主要為大家詳細(xì) 介紹了java導(dǎo)出大批量即百萬(wàn)以上數(shù)據(jù)的excel文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了java導(dǎo)出百萬(wàn)以上數(shù)據(jù)的excel文件,供大家參考,具體內(nèi)容如下

1.傳統(tǒng)的導(dǎo)出方式會(huì)消耗大量的內(nèi)存,2003每個(gè)sheet頁(yè)最多65536條數(shù)據(jù),2007每個(gè)sheet頁(yè)可以達(dá)到100萬(wàn)條數(shù)據(jù)以上,2007會(huì)在生成Workbook時(shí)清理數(shù)據(jù),所以2007導(dǎo)出量更大;

2.可以導(dǎo)出多個(gè)excel文件到某個(gè)目錄中,然后打包下載;

3.導(dǎo)出excel格式的xml文件,這種方式可以分批導(dǎo)出數(shù)據(jù),適用于大批量數(shù)據(jù)的導(dǎo)出,以下簡(jiǎn)單介紹這種方式:

代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
package com.epay.utils;
 
/**
 * 大數(shù)據(jù)量導(dǎo)出成EXCEL或XML
 * @author qad
 * 2017-04-22
 */
import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
 
public class Test {
  public static void main(String[] args) {
    StringBuffer sb = new StringBuffer();
    try {
      DataOutputStream rafs = new DataOutputStream(
          new BufferedOutputStream(new FileOutputStream(new File(
              "d://test.xls"))));
      sb.append("<?xml version=\"1.0\" encoding=\"GBK\" ?>");
      sb.append("\n");
      sb.append("<?mso-application progid=\"Excel.Sheet\"?>");
      sb.append("\n");
      sb.append("<Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\"");
      sb.append("\n");
      sb.append(" xmlns:o=\"urn:schemas-microsoft-com:office:office\"");
      sb.append("\n");
      sb.append(" xmlns:x=\"urn:schemas-microsoft-com:office:excel\"");
      sb.append("\n");
      sb.append(" xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\"");
      sb.append("\n");
      sb.append(" xmlns:html=\"http://www.w3.org/TR/REC-html40\">");
      sb.append("\n");
      sb.append("<DocumentProperties xmlns=\"urn:schemas-microsoft-com:office:office\"> ");
      sb.append("\n");
      sb.append(" <Styles>\n");
      sb.append(" <Style ss:ID=\"Default\" ss:Name=\"Normal\">\n");
      sb.append("  <Alignment ss:Vertical=\"Center\"/>\n");
      sb.append("  <Borders/>\n");
      sb.append("  <Font ss:FontName=\"宋體\" x:CharSet=\"134\" ss:Size=\"12\"/>\n");
      sb.append("  <Interior/>\n");
      sb.append("  <NumberFormat/>\n");
      sb.append("  <Protection/>\n");
      sb.append(" </Style>\n");
      sb.append(" </Styles>\n");
      int sheetcount = 0;
      int recordcount = 65535;
      int currentRecord = 0;
      int total = 100000;
      int col = 20;
      sb.append("<Worksheet ss:Name=\"Sheet0\">");
      sb.append("\n");
      sb.append("<Table ss:ExpandedColumnCount=\"" + col
          + "\" ss:ExpandedRowCount=\"" + total
          + "\" x:FullColumns=\"1\" x:FullRows=\"1\">");
      sb.append("\n");
      for (int i = 0; i < total; i++) {
        if ((currentRecord == recordcount
            || currentRecord > recordcount || currentRecord == 0)
            && i != 0) {// 一個(gè)sheet寫滿
          currentRecord = 0;
          rafs.write(sb.toString().getBytes());
          sb.setLength(0);
          sb.append("</Table>");
          sb.append("<WorksheetOptions xmlns=\"urn:schemas-microsoft-com:office:excel\">");
          sb.append("\n");
          sb.append("<ProtectObjects>False</ProtectObjects>");
          sb.append("\n");
          sb.append("<ProtectScenarios>False</ProtectScenarios>");
          sb.append("\n");
          sb.append("</WorksheetOptions>");
          sb.append("\n");
          sb.append("</Worksheet>");
          sb.append("<Worksheet ss:Name=\"Sheet" + i / recordcount
              + "\">");
          sb.append("\n");
          sb.append("<Table ss:ExpandedColumnCount=\"" + col
              + "\" ss:ExpandedRowCount=\"" + recordcount
              + "\" x:FullColumns=\"1\" x:FullRows=\"1\">");
          sb.append("\n");
        }
        sb.append("<Row>");
        for (int j = 0; j < col; j++) {
          System.out.println(i);
          sb.append("<Cell><Data ss:Type=\"String\">111</Data></Cell>");
          sb.append("\n");
        }
        sb.append("</Row>");
        if (i % 5000 == 0) {
          rafs.write(sb.toString().getBytes());
          rafs.flush();
          sb.setLength(0);
        }
        sb.append("\n");
        currentRecord++;
      }
      rafs.write(sb.toString().getBytes());
      sb.setLength(0);
      sb.append("</Table>");
      sb.append("<WorksheetOptions xmlns=\"urn:schemas-microsoft-com:office:excel\">");
      sb.append("\n");
      sb.append("<ProtectObjects>False</ProtectObjects>");
      sb.append("\n");
      sb.append("<ProtectScenarios>False</ProtectScenarios>");
      sb.append("\n");
      sb.append("</WorksheetOptions>");
      sb.append("\n");
      sb.append("</Worksheet>");
      sb.append("</Workbook>");
      sb.append("\n");
      rafs.write(sb.toString().getBytes());
      rafs.flush();
      rafs.close();
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

導(dǎo)出xml文件之后直接修改后綴名為.xlsx就可以直接打開(kāi),弊端:無(wú)法導(dǎo)出.xls格式的excel文件.以上只是一種簡(jiǎn)單想法,留待以后具體實(shí)現(xiàn).

擴(kuò)展:既然可以使用xml文件導(dǎo)出excel,那么導(dǎo)出csv文件之后也可以直接改后綴名為.xls,目前只是一種想法,尚未證實(shí)可行性.

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品久久久久久综合日本 | 想要xx在线观看 | 黄色的视频在线观看 | 亚洲一区二区三区高清视频 | 久久精品污 | 新久草在线视频 | 精品成人av一区二区三区 | 免费毛片随便看 | 一级大片视频 | 久草在线高清视频 | 日韩在线播放中文字幕 | 亚洲视频综合网 | 精品国产久| 超碰97在线人人 | 青青草免费观看完整版高清 | 免费国产在线精品 | 97中文字幕在线观看 | 欧美成视频在线观看 | 毛片免费看网站 | 成av人在线观看 | 日本一区二区不卡在线 | 成人一级黄色 | 黄色片在线免费播放 | 久草资源在线观看 | 天堂精品在线 | 免费日韩片 | 91成| 性片网站 | 最近免费中文字幕在线视频2 | 日本黄色免费观看视频 | 中文字幕在线永久视频 | 欧美日韩视频第一页 | 日本在线不卡一区二区三区 | 成人男女啪啪免费观看网站四虎 | 日本一区免费看 | 亚洲成人国产 | 色就色 综合偷拍区91网 | 久久99久久99免费视频 | av资源在线| 久久久久久久久久久av | 日日狠狠久久 |