excellentexport 3.9.10 → 3.9.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.editorconfig +9 -0
- package/.github/FUNDING.yml +1 -1
- package/.github/dependabot.yml +7 -7
- package/.github/workflows/build.yml +50 -0
- package/LICENSE.txt +21 -21
- package/README.md +401 -391
- package/dist/excellentexport.d.ts +1 -9
- package/dist/excellentexport.js +132 -2
- package/dist/excellentexport.js.LICENSE.txt +206 -2
- package/dist/utils.d.ts +27 -0
- package/index.bigtable.html +55 -55
- package/index.filters.html +63 -63
- package/index.html +155 -127
- package/index.noanchor.html +31 -31
- package/index.rtl.html +68 -68
- package/package.json +14 -18
- package/src/excellentexport.ts +264 -254
- package/src/utils.ts +69 -5
- package/test/checkversion.test.ts +17 -16
- package/test/convert-filters.test.ts +2 -2
- package/test/convert-table.test.ts +94 -2
- package/test/convert.format.ts +56 -56
- package/test/convert.test.ts +60 -59
- package/test/fixdata.test.ts +5 -5
- package/test/negative.test.ts +130 -129
- package/test/simple.test.ts +11 -10
- package/test/tsconfig.json +19 -0
- package/test/utils.test.ts +73 -1
- package/test/utils_fixdata.test.ts +2 -1
- package/test/utils_removeColumns.test.ts +1 -1
- package/tsconfig.json +33 -15
- package/vite.config.ts +37 -0
- package/vitest.config.ts +26 -0
- package/.babelrc +0 -8
- package/.github/workflows/webpack.yml +0 -36
- package/bower.json +0 -32
- package/jest.config.ts +0 -203
package/index.html
CHANGED
|
@@ -1,127 +1,155 @@
|
|
|
1
|
-
<html>
|
|
2
|
-
<head>
|
|
3
|
-
<meta charset="utf-8">
|
|
4
|
-
<title>Export to excel test</title>
|
|
5
|
-
<script src="dist/excellentexport.js"></script>
|
|
6
|
-
<style>
|
|
7
|
-
table, tr, td {
|
|
8
|
-
border: 1px black solid;
|
|
9
|
-
}
|
|
10
|
-
</style>
|
|
11
|
-
<script>
|
|
12
|
-
function newApi(format) {
|
|
13
|
-
return ExcellentExport.convert({
|
|
14
|
-
anchor: 'anchorNewApi-' + format,
|
|
15
|
-
filename: 'data_123.' + format,
|
|
16
|
-
format: format
|
|
17
|
-
}, [{
|
|
18
|
-
name: 'Sheet Name Here 1',
|
|
19
|
-
from: {
|
|
20
|
-
table: 'datatable'
|
|
21
|
-
}
|
|
22
|
-
}]);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
function newApiArray(format) {
|
|
26
|
-
return ExcellentExport.convert({
|
|
27
|
-
anchor: 'anchorNewApi-' + format + '-array',
|
|
28
|
-
filename: 'data_123.array',
|
|
29
|
-
format: format
|
|
30
|
-
}, [{
|
|
31
|
-
name: 'Sheet Name Here 1',
|
|
32
|
-
from: {
|
|
33
|
-
array: [['line 1', 1234 , 'CN 你好'],
|
|
34
|
-
['line 2', 1234.56 , 'JP こんにちは']
|
|
35
|
-
]
|
|
36
|
-
}
|
|
37
|
-
}]);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
function exportSome() {
|
|
41
|
-
return ExcellentExport.convert({
|
|
42
|
-
anchor: "anchorNewApi-xlsx-some",
|
|
43
|
-
filename: "somedata",
|
|
44
|
-
format: "xlsx"
|
|
45
|
-
}, [{
|
|
46
|
-
name: 'Sheet number 1',
|
|
47
|
-
from: {
|
|
48
|
-
table: 'datatable'
|
|
49
|
-
},
|
|
50
|
-
filterRowFn: function(row) {
|
|
51
|
-
if (row[1] == 200) {
|
|
52
|
-
return false;
|
|
53
|
-
}
|
|
54
|
-
return true;
|
|
55
|
-
},
|
|
56
|
-
removeColumns: [1],
|
|
57
|
-
|
|
58
|
-
}])
|
|
59
|
-
}
|
|
60
|
-
</script>
|
|
61
|
-
</head>
|
|
62
|
-
<body>
|
|
63
|
-
<h1>ExcellentExport.js</h1>
|
|
64
|
-
|
|
65
|
-
Check on <a href="http://jordiburgos.com">jordiburgos.com</a> and <a href="https://github.com/jmaister/excellentexport">GitHub</a>.
|
|
66
|
-
|
|
67
|
-
<h3>Test page</h3>
|
|
68
|
-
|
|
69
|
-
Test table:
|
|
70
|
-
<table id="datatable">
|
|
71
|
-
<tr>
|
|
72
|
-
<th>Column 1</th>
|
|
73
|
-
<th>Column "cool" 2</th>
|
|
74
|
-
<th>Column 3</th>
|
|
75
|
-
<th>Column 4</th>
|
|
76
|
-
</tr>
|
|
77
|
-
<tr>
|
|
78
|
-
<td>100,111</td>
|
|
79
|
-
<td>200</td>
|
|
80
|
-
<td>030</td>
|
|
81
|
-
<td>áéíóú</td>
|
|
82
|
-
</tr>
|
|
83
|
-
<tr>
|
|
84
|
-
<td>400</td>
|
|
85
|
-
<td>500</td>
|
|
86
|
-
<td>Chinese chars: 解决导出csv中文乱码问题</td>
|
|
87
|
-
<td>àèìòù</td>
|
|
88
|
-
</tr>
|
|
89
|
-
<tr>
|
|
90
|
-
<td>Text</td>
|
|
91
|
-
<td>More text</td>
|
|
92
|
-
<td>Text with
|
|
93
|
-
new line</td>
|
|
94
|
-
<td>ç ñ ÄËÏÖÜ äëïöü</td>
|
|
95
|
-
</tr>
|
|
96
|
-
</table>
|
|
97
|
-
|
|
98
|
-
<br/>
|
|
99
|
-
|
|
100
|
-
<a download="somedata.xls" href="#" onclick="return ExcellentExport.excel(this, 'datatable', 'Sheet Name Here');">Export to Excel</a>
|
|
101
|
-
<br/>
|
|
102
|
-
|
|
103
|
-
<a download="somedata.csv" href="#" onclick="return ExcellentExport.csv(this, 'datatable');">Export to CSV - UTF8</a>
|
|
104
|
-
<br/>
|
|
105
|
-
<a download="somedata.csv" href="#" onclick="return ExcellentExport.csv(this, 'datatable', ';');">Export to CSV - Using semicolon ";" separator - UTF8</a>
|
|
106
|
-
<br/>
|
|
107
|
-
<h1>NEW API!</h1>
|
|
108
|
-
<a download="data_123.xls" href="#" id="anchorNewApi-xls" onclick="return newApi('xls');">Export to Excel: XLS format</a>
|
|
109
|
-
<br/>
|
|
110
|
-
<a download="data_123.xlsx" href="#" id="anchorNewApi-xlsx" onclick="return newApi('xlsx');">Export to Excel: XLSX format</a>
|
|
111
|
-
<br/>
|
|
112
|
-
<a download="data_123.csv" href="#" id="anchorNewApi-csv" onclick="return newApi('csv');">Export to CSV</a>
|
|
113
|
-
<br>
|
|
114
|
-
<a href="#" id="anchorNewApi-xlsx-some" onclick="return exportSome();">Export to Excel: XLSX filtering columns and rows</a>
|
|
115
|
-
<br/>
|
|
116
|
-
<br/>
|
|
117
|
-
|
|
118
|
-
<h1>NEW API from Arrays!</h1>
|
|
119
|
-
|
|
120
|
-
<a href="#" id="anchorNewApi-xlsx-array" onclick="return newApiArray('xlsx');">Export to XLSX from array</a>
|
|
121
|
-
<br>
|
|
122
|
-
<a href="#" id="anchorNewApi-xls-array" onclick="return newApiArray('xls');">Export to XLS from array</a>
|
|
123
|
-
<br>
|
|
124
|
-
<a href="#" id="anchorNewApi-csv-array" onclick="return newApiArray('csv');">Export to CSV from array</a>
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
1
|
+
<html>
|
|
2
|
+
<head>
|
|
3
|
+
<meta charset="utf-8">
|
|
4
|
+
<title>Export to excel test</title>
|
|
5
|
+
<script src="dist/excellentexport.js"></script>
|
|
6
|
+
<style>
|
|
7
|
+
table, tr, td {
|
|
8
|
+
border: 1px black solid;
|
|
9
|
+
}
|
|
10
|
+
</style>
|
|
11
|
+
<script>
|
|
12
|
+
function newApi(format) {
|
|
13
|
+
return ExcellentExport.convert({
|
|
14
|
+
anchor: 'anchorNewApi-' + format,
|
|
15
|
+
filename: 'data_123.' + format,
|
|
16
|
+
format: format
|
|
17
|
+
}, [{
|
|
18
|
+
name: 'Sheet Name Here 1',
|
|
19
|
+
from: {
|
|
20
|
+
table: 'datatable'
|
|
21
|
+
}
|
|
22
|
+
}]);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function newApiArray(format) {
|
|
26
|
+
return ExcellentExport.convert({
|
|
27
|
+
anchor: 'anchorNewApi-' + format + '-array',
|
|
28
|
+
filename: 'data_123.array',
|
|
29
|
+
format: format
|
|
30
|
+
}, [{
|
|
31
|
+
name: 'Sheet Name Here 1',
|
|
32
|
+
from: {
|
|
33
|
+
array: [['line 1', 1234 , 'CN 你好'],
|
|
34
|
+
['line 2', 1234.56 , 'JP こんにちは']
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
}]);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function exportSome() {
|
|
41
|
+
return ExcellentExport.convert({
|
|
42
|
+
anchor: "anchorNewApi-xlsx-some",
|
|
43
|
+
filename: "somedata",
|
|
44
|
+
format: "xlsx"
|
|
45
|
+
}, [{
|
|
46
|
+
name: 'Sheet number 1',
|
|
47
|
+
from: {
|
|
48
|
+
table: 'datatable'
|
|
49
|
+
},
|
|
50
|
+
filterRowFn: function(row) {
|
|
51
|
+
if (row[1] == 200) {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
return true;
|
|
55
|
+
},
|
|
56
|
+
removeColumns: [1],
|
|
57
|
+
|
|
58
|
+
}])
|
|
59
|
+
}
|
|
60
|
+
</script>
|
|
61
|
+
</head>
|
|
62
|
+
<body>
|
|
63
|
+
<h1>ExcellentExport.js</h1>
|
|
64
|
+
|
|
65
|
+
Check on <a href="http://jordiburgos.com">jordiburgos.com</a> and <a href="https://github.com/jmaister/excellentexport">GitHub</a>.
|
|
66
|
+
|
|
67
|
+
<h3>Test page</h3>
|
|
68
|
+
|
|
69
|
+
Test table:
|
|
70
|
+
<table id="datatable">
|
|
71
|
+
<tr>
|
|
72
|
+
<th>Column 1</th>
|
|
73
|
+
<th>Column "cool" 2</th>
|
|
74
|
+
<th>Column 3</th>
|
|
75
|
+
<th>Column 4</th>
|
|
76
|
+
</tr>
|
|
77
|
+
<tr>
|
|
78
|
+
<td>100,111</td>
|
|
79
|
+
<td>200</td>
|
|
80
|
+
<td>030</td>
|
|
81
|
+
<td>áéíóú</td>
|
|
82
|
+
</tr>
|
|
83
|
+
<tr>
|
|
84
|
+
<td>400</td>
|
|
85
|
+
<td>500</td>
|
|
86
|
+
<td>Chinese chars: 解决导出csv中文乱码问题</td>
|
|
87
|
+
<td>àèìòù</td>
|
|
88
|
+
</tr>
|
|
89
|
+
<tr>
|
|
90
|
+
<td>Text</td>
|
|
91
|
+
<td>More text</td>
|
|
92
|
+
<td>Text with
|
|
93
|
+
new line</td>
|
|
94
|
+
<td>ç ñ ÄËÏÖÜ äëïöü</td>
|
|
95
|
+
</tr>
|
|
96
|
+
</table>
|
|
97
|
+
|
|
98
|
+
<br/>
|
|
99
|
+
|
|
100
|
+
<a download="somedata.xls" href="#" onclick="return ExcellentExport.excel(this, 'datatable', 'Sheet Name Here');">Export to Excel</a>
|
|
101
|
+
<br/>
|
|
102
|
+
|
|
103
|
+
<a download="somedata.csv" href="#" onclick="return ExcellentExport.csv(this, 'datatable');">Export to CSV - UTF8</a>
|
|
104
|
+
<br/>
|
|
105
|
+
<a download="somedata.csv" href="#" onclick="return ExcellentExport.csv(this, 'datatable', ';');">Export to CSV - Using semicolon ";" separator - UTF8</a>
|
|
106
|
+
<br/>
|
|
107
|
+
<h1>NEW API!</h1>
|
|
108
|
+
<a download="data_123.xls" href="#" id="anchorNewApi-xls" onclick="return newApi('xls');">Export to Excel: XLS format</a>
|
|
109
|
+
<br/>
|
|
110
|
+
<a download="data_123.xlsx" href="#" id="anchorNewApi-xlsx" onclick="return newApi('xlsx');">Export to Excel: XLSX format</a>
|
|
111
|
+
<br/>
|
|
112
|
+
<a download="data_123.csv" href="#" id="anchorNewApi-csv" onclick="return newApi('csv');">Export to CSV</a>
|
|
113
|
+
<br>
|
|
114
|
+
<a href="#" id="anchorNewApi-xlsx-some" onclick="return exportSome();">Export to Excel: XLSX filtering columns and rows</a>
|
|
115
|
+
<br/>
|
|
116
|
+
<br/>
|
|
117
|
+
|
|
118
|
+
<h1>NEW API from Arrays!</h1>
|
|
119
|
+
|
|
120
|
+
<a href="#" id="anchorNewApi-xlsx-array" onclick="return newApiArray('xlsx');">Export to XLSX from array</a>
|
|
121
|
+
<br>
|
|
122
|
+
<a href="#" id="anchorNewApi-xls-array" onclick="return newApiArray('xls');">Export to XLS from array</a>
|
|
123
|
+
<br>
|
|
124
|
+
<a href="#" id="anchorNewApi-csv-array" onclick="return newApiArray('csv');">Export to CSV from array</a>
|
|
125
|
+
|
|
126
|
+
<h1>Colspan and Rowspan</h1>
|
|
127
|
+
|
|
128
|
+
Table with merged cells (colspan and rowspan):
|
|
129
|
+
<table id="spantable">
|
|
130
|
+
<tr>
|
|
131
|
+
<th colspan="2">Merged Header (colspan=2)</th>
|
|
132
|
+
<th>Column 3</th>
|
|
133
|
+
</tr>
|
|
134
|
+
<tr>
|
|
135
|
+
<td rowspan="2">Merged Cell (rowspan=2)</td>
|
|
136
|
+
<td>B2</td>
|
|
137
|
+
<td>C2</td>
|
|
138
|
+
</tr>
|
|
139
|
+
<tr>
|
|
140
|
+
<td>B3</td>
|
|
141
|
+
<td>C3</td>
|
|
142
|
+
</tr>
|
|
143
|
+
<tr>
|
|
144
|
+
<td>A4</td>
|
|
145
|
+
<td colspan="2">Merged Cell (colspan=2)</td>
|
|
146
|
+
</tr>
|
|
147
|
+
</table>
|
|
148
|
+
|
|
149
|
+
<br/>
|
|
150
|
+
<a href="#" id="anchorSpan-xlsx" onclick="return ExcellentExport.convert({ anchor: 'anchorSpan-xlsx', filename: 'span_export', format: 'xlsx' }, [{ name: 'Span Sheet', from: { table: 'spantable' } }]);">Export colspan/rowspan to XLSX</a>
|
|
151
|
+
<br/>
|
|
152
|
+
<a href="#" id="anchorSpan-csv" onclick="return ExcellentExport.convert({ anchor: 'anchorSpan-csv', filename: 'span_export', format: 'csv' }, [{ name: 'Span Sheet', from: { table: 'spantable' } }]);">Export colspan/rowspan to CSV</a>
|
|
153
|
+
|
|
154
|
+
</body>
|
|
155
|
+
</html>
|
package/index.noanchor.html
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
<html>
|
|
2
|
-
<head>
|
|
3
|
-
<meta charset="utf-8">
|
|
4
|
-
<title>Export to excel test</title>
|
|
5
|
-
<script src="dist/excellentexport.js"></script>
|
|
6
|
-
<style>
|
|
7
|
-
table, tr, td {
|
|
8
|
-
border: 1px black solid;
|
|
9
|
-
}
|
|
10
|
-
</style>
|
|
11
|
-
<script>
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
function triggerDownload() {
|
|
15
|
-
ExcellentExport.convert({ filename: 'fileTriggeredAutomatically', format: 'xlsx', openAsDownload: true},[{name: 'Sheet 1', from: {array: [[1,2,3],[4,5,6]]}},{name: 'Sheet 2', from: {array: [['this is text'],['this is also text']]}}]);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
document.addEventListener("DOMContentLoaded", triggerDownload);
|
|
19
|
-
|
|
20
|
-
</script>
|
|
21
|
-
</head>
|
|
22
|
-
<body>
|
|
23
|
-
<h1>ExcellentExport.js</h1>
|
|
24
|
-
|
|
25
|
-
Check on <a href="http://jordiburgos.com">jordiburgos.com</a> and <a href="https://github.com/jmaister/excellentexport">GitHub</a>.
|
|
26
|
-
|
|
27
|
-
<h3>Test without anchor tab</h3>
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
</body>
|
|
31
|
-
</html>
|
|
1
|
+
<html>
|
|
2
|
+
<head>
|
|
3
|
+
<meta charset="utf-8">
|
|
4
|
+
<title>Export to excel test</title>
|
|
5
|
+
<script src="dist/excellentexport.js"></script>
|
|
6
|
+
<style>
|
|
7
|
+
table, tr, td {
|
|
8
|
+
border: 1px black solid;
|
|
9
|
+
}
|
|
10
|
+
</style>
|
|
11
|
+
<script>
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
function triggerDownload() {
|
|
15
|
+
ExcellentExport.convert({ filename: 'fileTriggeredAutomatically', format: 'xlsx', openAsDownload: true},[{name: 'Sheet 1', from: {array: [[1,2,3],[4,5,6]]}},{name: 'Sheet 2', from: {array: [['this is text'],['this is also text']]}}]);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
document.addEventListener("DOMContentLoaded", triggerDownload);
|
|
19
|
+
|
|
20
|
+
</script>
|
|
21
|
+
</head>
|
|
22
|
+
<body>
|
|
23
|
+
<h1>ExcellentExport.js</h1>
|
|
24
|
+
|
|
25
|
+
Check on <a href="http://jordiburgos.com">jordiburgos.com</a> and <a href="https://github.com/jmaister/excellentexport">GitHub</a>.
|
|
26
|
+
|
|
27
|
+
<h3>Test without anchor tab</h3>
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
</body>
|
|
31
|
+
</html>
|
package/index.rtl.html
CHANGED
|
@@ -1,69 +1,69 @@
|
|
|
1
|
-
<html>
|
|
2
|
-
<head>
|
|
3
|
-
<meta charset="utf-8">
|
|
4
|
-
<title>Export to excel test</title>
|
|
5
|
-
<script src="dist/excellentexport.js"></script>
|
|
6
|
-
<style>
|
|
7
|
-
table, tr, td {
|
|
8
|
-
border: 1px black solid;
|
|
9
|
-
}
|
|
10
|
-
</style>
|
|
11
|
-
<script>
|
|
12
|
-
function openFile(format) {
|
|
13
|
-
return ExcellentExport.convert({
|
|
14
|
-
anchor: 'anchorNewApi-' + format,
|
|
15
|
-
filename: 'data_123.' + format,
|
|
16
|
-
format: format,
|
|
17
|
-
rtl: true,
|
|
18
|
-
}, [{
|
|
19
|
-
name: 'Sheet Name Here 1',
|
|
20
|
-
from: {
|
|
21
|
-
table: 'datatable'
|
|
22
|
-
}
|
|
23
|
-
}]);
|
|
24
|
-
}
|
|
25
|
-
</script>
|
|
26
|
-
</head>
|
|
27
|
-
<body>
|
|
28
|
-
<h1>ExcellentExport.js RTL text</h1>
|
|
29
|
-
|
|
30
|
-
Check on <a href="http://jordiburgos.com">jordiburgos.com</a> and <a href="https://github.com/jmaister/excellentexport">GitHub</a>.
|
|
31
|
-
|
|
32
|
-
<h3>Test page</h3>
|
|
33
|
-
|
|
34
|
-
Test table
|
|
35
|
-
<table id="datatable">
|
|
36
|
-
<thead>
|
|
37
|
-
<tr>
|
|
38
|
-
<th>االلغة</th>
|
|
39
|
-
<th>عدد الأحرف</th>
|
|
40
|
-
<th>Country</th>
|
|
41
|
-
<th>miص-ص</th>
|
|
42
|
-
</tr>
|
|
43
|
-
</thead>
|
|
44
|
-
<tbody>
|
|
45
|
-
<tr>
|
|
46
|
-
<td>العربية</td>
|
|
47
|
-
<td>٢٨</td>
|
|
48
|
-
<td>Earth</td>
|
|
49
|
-
<td>ن0ن</td>
|
|
50
|
-
</tr>
|
|
51
|
-
<tr>
|
|
52
|
-
<td>العبرية</td>
|
|
53
|
-
<td>٢٢</td>
|
|
54
|
-
<td>Isreal</td>
|
|
55
|
-
<td>ضSض</td>
|
|
56
|
-
</tr>
|
|
57
|
-
</tbody>
|
|
58
|
-
</table>
|
|
59
|
-
|
|
60
|
-
<br/>
|
|
61
|
-
|
|
62
|
-
<a download="data_123.xls" href="#" id="anchorNewApi-xls" onclick="return openFile('xls');">Export to Excel: XLS format</a>
|
|
63
|
-
<br/>
|
|
64
|
-
<a download="data_123.xlsx" href="#" id="anchorNewApi-xlsx" onclick="return openFile('xlsx');">Export to Excel: XLSX format</a>
|
|
65
|
-
<br/>
|
|
66
|
-
<a download="data_123.csv" href="#" id="anchorNewApi-csv" onclick="return openFile('csv');">Export to CSV</a>
|
|
67
|
-
|
|
68
|
-
</body>
|
|
1
|
+
<html>
|
|
2
|
+
<head>
|
|
3
|
+
<meta charset="utf-8">
|
|
4
|
+
<title>Export to excel test</title>
|
|
5
|
+
<script src="dist/excellentexport.js"></script>
|
|
6
|
+
<style>
|
|
7
|
+
table, tr, td {
|
|
8
|
+
border: 1px black solid;
|
|
9
|
+
}
|
|
10
|
+
</style>
|
|
11
|
+
<script>
|
|
12
|
+
function openFile(format) {
|
|
13
|
+
return ExcellentExport.convert({
|
|
14
|
+
anchor: 'anchorNewApi-' + format,
|
|
15
|
+
filename: 'data_123.' + format,
|
|
16
|
+
format: format,
|
|
17
|
+
rtl: true,
|
|
18
|
+
}, [{
|
|
19
|
+
name: 'Sheet Name Here 1',
|
|
20
|
+
from: {
|
|
21
|
+
table: 'datatable'
|
|
22
|
+
}
|
|
23
|
+
}]);
|
|
24
|
+
}
|
|
25
|
+
</script>
|
|
26
|
+
</head>
|
|
27
|
+
<body>
|
|
28
|
+
<h1>ExcellentExport.js RTL text</h1>
|
|
29
|
+
|
|
30
|
+
Check on <a href="http://jordiburgos.com">jordiburgos.com</a> and <a href="https://github.com/jmaister/excellentexport">GitHub</a>.
|
|
31
|
+
|
|
32
|
+
<h3>Test page</h3>
|
|
33
|
+
|
|
34
|
+
Test table
|
|
35
|
+
<table id="datatable">
|
|
36
|
+
<thead>
|
|
37
|
+
<tr>
|
|
38
|
+
<th>االلغة</th>
|
|
39
|
+
<th>عدد الأحرف</th>
|
|
40
|
+
<th>Country</th>
|
|
41
|
+
<th>miص-ص</th>
|
|
42
|
+
</tr>
|
|
43
|
+
</thead>
|
|
44
|
+
<tbody>
|
|
45
|
+
<tr>
|
|
46
|
+
<td>العربية</td>
|
|
47
|
+
<td>٢٨</td>
|
|
48
|
+
<td>Earth</td>
|
|
49
|
+
<td>ن0ن</td>
|
|
50
|
+
</tr>
|
|
51
|
+
<tr>
|
|
52
|
+
<td>العبرية</td>
|
|
53
|
+
<td>٢٢</td>
|
|
54
|
+
<td>Isreal</td>
|
|
55
|
+
<td>ضSض</td>
|
|
56
|
+
</tr>
|
|
57
|
+
</tbody>
|
|
58
|
+
</table>
|
|
59
|
+
|
|
60
|
+
<br/>
|
|
61
|
+
|
|
62
|
+
<a download="data_123.xls" href="#" id="anchorNewApi-xls" onclick="return openFile('xls');">Export to Excel: XLS format</a>
|
|
63
|
+
<br/>
|
|
64
|
+
<a download="data_123.xlsx" href="#" id="anchorNewApi-xlsx" onclick="return openFile('xlsx');">Export to Excel: XLSX format</a>
|
|
65
|
+
<br/>
|
|
66
|
+
<a download="data_123.csv" href="#" id="anchorNewApi-csv" onclick="return openFile('csv');">Export to CSV</a>
|
|
67
|
+
|
|
68
|
+
</body>
|
|
69
69
|
</html>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "excellentexport",
|
|
3
|
-
"version": "3.9.
|
|
3
|
+
"version": "3.9.15",
|
|
4
4
|
"description": "Client side JavaScript export to Excel or CSV",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://jordiburgos.com",
|
|
@@ -19,28 +19,24 @@
|
|
|
19
19
|
"side"
|
|
20
20
|
],
|
|
21
21
|
"scripts": {
|
|
22
|
-
"build": "
|
|
23
|
-
"prod": "
|
|
24
|
-
"test": "
|
|
25
|
-
"watch": "jest --watch",
|
|
22
|
+
"build": "vite",
|
|
23
|
+
"prod": "vite build",
|
|
24
|
+
"test": "vitest run --coverage",
|
|
26
25
|
"postinstall": "node scripts/postinstall.js"
|
|
27
26
|
},
|
|
28
27
|
"main": "dist/excellentexport.js",
|
|
29
28
|
"devDependencies": {
|
|
30
|
-
"@types/
|
|
31
|
-
"@
|
|
32
|
-
"@
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"jest-puppeteer": "11.0.0",
|
|
36
|
-
"puppeteer": "24.12.0",
|
|
37
|
-
"ts-jest": "29.4.0",
|
|
38
|
-
"ts-loader": "9.5.2",
|
|
29
|
+
"@types/node": "25.9.2",
|
|
30
|
+
"@vitest/browser-playwright": "4.1.8",
|
|
31
|
+
"@vitest/coverage-v8": "4.1.8",
|
|
32
|
+
"puppeteer": "25.1.0",
|
|
33
|
+
"ts-loader": "9.6.0",
|
|
39
34
|
"ts-node": "10.9.2",
|
|
40
|
-
"typescript": "
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
35
|
+
"typescript": "6.0.3",
|
|
36
|
+
"vite": "8.0.16",
|
|
37
|
+
"vite-plugin-dts": "5.0.2",
|
|
38
|
+
"vite-tsconfig-paths": "6.1.1",
|
|
39
|
+
"vitest": "4.1.8",
|
|
44
40
|
"xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz"
|
|
45
41
|
}
|
|
46
42
|
}
|