hdw
2019-01-18 dedd8858ae9f45a8e943ad57e0aad216e886da33
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>临时文件</title>
    <link rel="stylesheet" href="src/css/layui.css">
</head>
<body>
    <script type="text/javascript" src="js/jquery-1.8.3.js"></script>
    <script type="text/javascript" src="src/layui.js"></script>
    <script type="text/javascript" src="js/base.js"></script>
       <script type="text/javascript" src="pages/js/common.js"></script>
    <script>
        var ExpExcel = function() {
            this.thead = '';        // 表格的头部
            this.tbody = '';        // 表格的内容
            this.normal = 1;        // 是否为通用的导出
            this.dataBreak = '';    // 数据分割符
            this.pageNames = '';    // 工作簿名称
            this.pageBreak = '';    // 工作簿分隔符
            this.form = '';
            this.form = this.initForm();
        };
        var prop = ExpExcel.prototype;
        
        // 初始化
        prop._init = function(obj) {
            var defaults = {
                thead: [],
                tbody: [],
                normal: 1,
                dataBreak: '&',
                pageNames: ['数据表格'],
                pageBreak: '$'
            };
            
            // 合并对象
            var opts = $.extend({}, defaults, obj | {});
 
            this._setThead(obj.thead, opts.pageBreak, opts.dataBreak);
            this._setTbody(obj.tbody, opts.pageBreak, opts.dataBreak);
            this._setPageNames(opts.pageNames, opts.pageBreak);
 
            this.dataBreak = opts.dataBreak;
            this.pageBreak = opts.pageBreak;
            this.normal = opts.normal;
            
            this.form = this.initForm();
            this._setForm();
        };
        
        // 设置页面中的元素
        prop._setForm = function() {
            var ele = $('#exp_container');
            // 创建容器
            if(ele.length == 0) {
                $('body').append($('<div id="exp_container"></div>'));
            }
            ele = $('#exp_container');
            // 更新内容
            ele.text('');
 
            var form = $('<form id="exp_excel" action="ExportTable.servlet" method="post"></form>');
 
            var thead = $('<input type="hidden" id="exp_thead" name="exp_thead" value=""/>');
            var tbody = $('<input type="hidden" id="exp_tbody" name="exp_tbody" value=""/>');
            var normal = $('<input type="hidden" id="exp_normal" name="exp_normal" value=""/>');
            var dataBreak = $('<input type="hidden" id="exp_data_break" name="exp_data_break" value=""/>');
            var pageNames = $('<input type="hidden" id="exp_page_names" name="exp_page_names" value=""/>');
            var pageBreak = $('<input type="hidden" id="exp_page_break" name="exp_page_break" value=""/>');
 
            thead.val(this.thead);
            tbody.val(this.tbody);
            normal.val(this.normal);
            dataBreak.val(this.dataBreak);
            pageNames.val(this.pageNames);
            pageBreak.val(this.pageBreak);
            
            form.append(thead);
            form.append(tbody);
            form.append(normal);
            form.append(dataBreak);
            form.append(pageNames);
            form.append(pageBreak);
            
            ele.append(form);
            this.form = form;
        };
 
        // 设置表格头部的值
        prop._setThead = function(thead, pageBreak, dataBreak) {
            var arr = [];
            // 数据分割
            for(var i=0; i<thead.length; i++) {
                var _arr = thead[i].join(dataBreak);
                arr.push(_arr)
            }
            // 工作簿分割
            var str = arr.join(pageBreak);
            this.thead = str;
        };
 
        // 设置表格内容
        prop._setTbody = function(tbody, pageBreak, dataBreak) {
            var arr = [];
            // 数据分割
            for(var i=0; i<tbody.length; i++) {
                var _arr = tbody[i].join(dataBreak);
                arr.push(_arr)
            }
            // 工作簿分割
            var str = arr.join(pageBreak);
            this.tbody = str;
        };
 
        // 设置工作簿内容
        prop._setPageNames = function(pageNames, pageBreak) {
            var str = pageNames.join(pageBreak);
            this.pageNames = str;
        };
        
        // 初始化form
        prop.initForm = function() {
            this.form = '12345';
        };
 
        // 导出表格
        prop.xls = function(obj) {
 
            this._init(obj); // 初始化内容
            // 导出内容
            if(this.form == '12345') {
                alert('没有检测到form表单')
            }else {
                this.form.submit();
            }
        };
 
        var expExcel = new ExpExcel();
        var tblData = {
            thead: [['h1', 'h2', 'h3', 'h4'], ['xh1', 'xh2', 'xh3', 'xh4']],
            tbody:[['t1', 't2', 't3', 't4'], ['xt1', 'xt2', 'xt3', 'xt3']]
        };
        
        GLOBAL.expExcel.xls(tblData);
    </script>
</body>
</html>