Skip to content
This repository was archived by the owner on Jul 25, 2021. It is now read-only.

Commit 7f6415d

Browse files
committed
Merge branch 'sheetname'
2 parents 6fc5b4d + 96ed1db commit 7f6415d

File tree

8 files changed

+218
-42
lines changed

8 files changed

+218
-42
lines changed

README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,8 @@ TableExport(document.getElementsByTagName("table"), {
119119
ignoreRows: null, // (Number, Number[]), row indices to exclude from the exported file(s) (default: null)
120120
ignoreCols: null, // (Number, Number[]), column indices to exclude from the exported file(s) (default: null)
121121
trimWhitespace: true, // (Boolean), remove all leading/trailing newlines, spaces, and tabs from cell text in the exported file(s) (default: false)
122-
RTL: false // (Boolean), set direction of the worksheet to right-to-left (default: false)
122+
RTL: false, // (Boolean), set direction of the worksheet to right-to-left (default: false)
123+
sheetname: "id" // (id, String), sheet name for the exported spreadsheet, (default: 'id')
123124
});
124125
```
125126
> **Note:** to use the `xlsx` filetype, you must include [js-xlsx](https://github.com/SheetJS/js-xlsx/blob/master/dist/xlsx.core.min.js); reference the [`Add-Ons`](#add-ons) section.
@@ -137,6 +138,7 @@ TableExport(document.getElementsByTagName("table"), {
137138
* [`ignoreCols`](https://tableexport.v3.travismclarke.com/examples/ignore-row-cols-cells.html)
138139
* [`trimWhitespace`](https://tableexport.v3.travismclarke.com/examples/whitespace.html)
139140
* [`RTL`](https://tableexport.v3.travismclarke.com/examples/right-to-left.html)
141+
* [`sheetname`](https://tableexport.v3.travismclarke.com/examples/sheetname.html)
140142

141143
### Methods
142144

@@ -385,6 +387,7 @@ When used alongside Bootstrap, there are four custom classes **`.xlsx`, `.xls`,
385387
* [`ignoreCols`](https://tableexport.v3.travismclarke.com/examples/ignore-row-cols-cells.html)
386388
* [`trimWhitespace`](https://tableexport.v3.travismclarke.com/examples/whitespace.html)
387389
* [`RTL`](https://tableexport.v3.travismclarke.com/examples/right-to-left.html)
390+
* [`sheetname`](https://tableexport.v3.travismclarke.com/examples/sheetname.html)
388391

389392
#### Customizing Settings
390393
* [`ignoreCSS`](https://tableexport.v3.travismclarke.com/examples/ignore-row-cols-cells.html)

dist/js/tableexport.js

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -81,14 +81,8 @@
8181
context.rows = settings.headers ? _nodesArray(el.querySelectorAll("thead > tr")).concat(context.rows) : context.rows;
8282
context.rows = settings.footers ? context.rows.concat(_nodesArray(el.querySelectorAll("tfoot > tr"))) : context.rows;
8383
context.thAdj = settings.headers ? el.querySelectorAll("thead > tr").length : 0;
84-
context.filename =
85-
settings.filename === "id"
86-
? el.getAttribute("id")
87-
? el.getAttribute("id")
88-
: self.defaultFilename
89-
: settings.filename
90-
? settings.filename
91-
: self.defaultFilename;
84+
context.filename = settings.filename === "id" ? el.getAttribute("id") || self.defaultFilename : settings.filename || self.defaultFilename;
85+
context.sheetname = settings.sheetname === "id" ? el.getAttribute("id") || self.defaultSheetname : settings.sheetname || self.defaultSheetname;
9286
context.uuid = _uuid(el);
9387

9488
/**
@@ -164,7 +158,8 @@
164158
ignoreRows: null, // (Number, Number[]), row indices to exclude from the exported file(s) (default: null)
165159
ignoreCols: null, // (Number, Number[]), column indices to exclude from the exported file(s) (default: null)
166160
trimWhitespace: true, // (Boolean), remove all leading/trailing newlines, spaces, and tabs from cell text in the exported file(s) (default: false)
167-
RTL: false // (Boolean), set direction of the worksheet to right-to-left (default: false)
161+
RTL: false, // (Boolean), set direction of the worksheet to right-to-left (default: false)
162+
sheetname: "id" // (id, String), sheet name for the exported spreadsheet, (default: 'id')
168163
},
169164
/**
170165
* Constants
@@ -197,6 +192,11 @@
197192
* @memberof TableExport.prototype
198193
*/
199194
defaultFilename: "myDownload",
195+
/**
196+
* Sheetname fallback for exported files.
197+
* @memberof TableExport.prototype
198+
*/
199+
defaultSheetname: "myWorksheet",
200200
/**
201201
* Class applied to each export button element.
202202
* @memberof TableExport.prototype
@@ -398,7 +398,8 @@
398398
mimeType: format.mimeType,
399399
fileExtension: format.fileExtension,
400400
merges: rcMap.merges,
401-
RTL: settings.RTL
401+
RTL: settings.RTL,
402+
sheetname: settings.sheetname
402403
});
403404

404405
var hashKey = _hashCode({ uuid: context.uuid, type: key });
@@ -542,8 +543,9 @@
542543
mimeType = object.mimeType,
543544
fileExtension = object.fileExtension,
544545
merges = object.merges,
545-
RTL = object.RTL;
546-
this.export2file(data, mimeType, filename, fileExtension, merges, RTL);
546+
RTL = object.RTL,
547+
sheetname = object.sheetname;
548+
this.export2file(data, mimeType, filename, fileExtension, merges, RTL, sheetname);
547549
},
548550
/**
549551
* Excel Workbook constructor
@@ -577,9 +579,9 @@
577579
* @param merges {Object[]}
578580
* @param RTL {Boolean}
579581
*/
580-
export2file: function(data, mime, name, extension, merges, RTL) {
582+
export2file: function(data, mime, name, extension, merges, RTL, sheetname) {
581583
var format = extension.slice(1);
582-
data = this.getRawData(data, extension, name, merges, RTL);
584+
data = this.getRawData(data, extension, name, merges, RTL, sheetname);
583585

584586
if (_isMobile && (format === _FORMAT.CSV || format === _FORMAT.TXT)) {
585587
var dataURI = "data:" + mime + ";" + this.charset + "," + data;
@@ -605,17 +607,17 @@
605607
return key;
606608
}
607609
},
608-
getRawData: function(data, extension, name, merges, RTL) {
610+
getRawData: function(data, extension, name, merges, RTL, sheetname) {
609611
var key = extension.substring(1);
610612

611613
if (_isEnhanced(key)) {
612614
var wb = new this.Workbook(),
613615
ws = this.createSheet(data, merges),
614616
bookType = this.getBookType(key);
615617

616-
name = name || "";
617-
wb.SheetNames.push(name);
618-
wb.Sheets[name] = ws;
618+
sheetname = sheetname || "";
619+
wb.SheetNames.push(sheetname);
620+
wb.Sheets[sheetname] = ws;
619621
wb.Workbook.Views[0] = { RTL: RTL };
620622
var wopts = {
621623
bookType: bookType,

dist/js/tableexport.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/tableexport.d.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,11 @@ export declare class TableExport {
6060
*/
6161
defaultFilename: string;
6262

63+
/**
64+
* Sheetname fallback for exported files.
65+
*/
66+
defaultSheetname: string;
67+
6368
/**
6469
* Class applied to each export button element.
6570
*/
@@ -190,6 +195,7 @@ interface Defaults {
190195
ignoreCols?: number[];
191196
trimWhitespace?: boolean;
192197
RTL?: boolean;
198+
sheetname?: string;
193199
}
194200

195201
/**

examples/defaults.html

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ <h1>Defaults</h1>
2323
ignoreRows: null,
2424
ignoreCols: null,
2525
trimWhitespace: true,
26-
RTL: false
26+
RTL: false,
27+
sheetname: 'id'
2728
</pre>
2829
</article>
2930

@@ -94,7 +95,9 @@ <h1>Defaults</h1>
9495
ignoreCols: null, // (Number, Number[]), column indices to exclude from the exported file(s) (default: null)
9596
ignoreCSS: '.tableexport-ignore', // (selector, selector[]), selector(s) to exclude cells from the exported file(s) (default: '.tableexport-ignore')
9697
emptyCSS: '.tableexport-empty', // (selector, selector[]), selector(s) to replace cells with an empty string in the exported file(s) (default: '.tableexport-empty')
97-
trimWhitespace: true // (Boolean), remove all leading/trailing newlines, spaces, and tabs from cell text in the exported file(s) (default: true)
98+
trimWhitespace: true, // (Boolean), remove all leading/trailing newlines, spaces, and tabs from cell text in the exported file(s) (default: true)
99+
RTL: false, // (Boolean), set direction of the worksheet to right-to-left (default: false)
100+
sheetname: 'id' // (id, String), sheet name for the exported spreadsheet, (default: 'id')
98101
});
99102
// **** jQuery **************************
100103
// $(DefaultTable).tableExport({
@@ -108,7 +111,9 @@ <h1>Defaults</h1>
108111
// ignoreCols: null,
109112
// ignoreCSS: '.tableexport-ignore',
110113
// emptyCSS: '.tableexport-empty',
111-
// trimWhitespace: false
114+
// trimWhitespace: false,
115+
// RTL: false,
116+
// sheetname: 'id'
112117
// });
113118
// **************************************
114119

examples/sheetname.html

Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<title>Sheetname</title>
6+
<link href="../dist/css/tableexport.min.css" rel="stylesheet">
7+
<link href="./examples.css" rel="stylesheet">
8+
</head>
9+
<body>
10+
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-TL44T9" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
11+
12+
<a id="example-link" href="./"> << Examples</a>
13+
14+
<iframe src="./defaults.html" frameborder="0" width="100%" scrolling="no" onload="this.height=screen.height/2.5;"></iframe>
15+
16+
<main>
17+
<h1>Sheetname<span class="small">- string</span>
18+
<code class="small">sheetname: 'super-worksheet'</code>
19+
<span class="note"> ... OR any <code>string</code> besides <code>"id"</code></span>
20+
</h1>
21+
<table id="sheetname-table-1">
22+
<thead>
23+
<tr>
24+
<th>Name</th>
25+
<th>Position</th>
26+
<th>Age</th>
27+
<th>Salary</th>
28+
</tr>
29+
</thead>
30+
<tbody>
31+
<tr>
32+
<td>Thor Walton</td>
33+
<td>Regional Director</td>
34+
<td>45</td>
35+
<td>$98,540</td>
36+
</tr>
37+
<tr>
38+
<td>Travis Clarke</td>
39+
<td>Software Engineer</td>
40+
<td>30</td>
41+
<td>$275,000</td>
42+
</tr>
43+
<tr>
44+
<td>Suki Burks</td>
45+
<td>Office Manager</td>
46+
<td>22</td>
47+
<td>$67,670</td>
48+
</tr>
49+
</tbody>
50+
<tfoot>
51+
<tr>
52+
<td class="disabled"></td>
53+
<td class="disabled"></td>
54+
<td class="disabled"></td>
55+
<th>$441,210</th>
56+
</tr>
57+
</tfoot>
58+
</table>
59+
60+
<p class="info">export the table to <code>.xlsx</code> and look at the sheetname of the downloaded file. Compared to the export from the <b>defaults</b> table above, you will notice that, <code>sheetname: 'super-worksheet'</code><i>creates a worksheet with the same name as the provided string </i>(<b>super-worksheet</b>)<i> instead of the table element's</i> <code>id</code>.</p>
61+
</main>
62+
63+
<br>
64+
65+
<main>
66+
<h1>Sheetname<span class="small">- falsey</span>
67+
<code class="small">sheetname: false</code>
68+
<span class="note"> ... OR any <code>falsey: false|null|undefined|""</code> value</span>
69+
</h1>
70+
<table id="sheetname-table-2">
71+
<thead>
72+
<tr>
73+
<th>Name</th>
74+
<th>Position</th>
75+
<th>Age</th>
76+
<th>Salary</th>
77+
</tr>
78+
</thead>
79+
<tbody>
80+
<tr>
81+
<td>Thor Walton</td>
82+
<td>Regional Director</td>
83+
<td>45</td>
84+
<td>$98,540</td>
85+
</tr>
86+
<tr>
87+
<td>Travis Clarke</td>
88+
<td>Software Engineer</td>
89+
<td>30</td>
90+
<td>$275,000</td>
91+
</tr>
92+
<tr>
93+
<td>Suki Burks</td>
94+
<td>Office Manager</td>
95+
<td>22</td>
96+
<td>$67,670</td>
97+
</tr>
98+
</tbody>
99+
<tfoot>
100+
<tr>
101+
<td class="disabled"></td>
102+
<td class="disabled"></td>
103+
<td class="disabled"></td>
104+
<th>$441,210</th>
105+
</tr>
106+
</tfoot>
107+
</table>
108+
109+
<p class="info">
110+
export the table to <code>.xlsx</code> and look at the sheetname of the downloaded file. Compared to the export from the <b>defaults</b> table above, you will notice that, <code>sheetname: false</code><i> uses a <b>fallback</b> value for the sheetname; the fallback (or default) can be configured with the </i>(<code>defaultSheetname</code> prototype property).
111+
</p>
112+
113+
<p>
114+
<b>NOTE:</b> <code>defaultSheetname</code> is also used for <code>sheetname: 'id'</code> if the export <i>table</i> element does <b>NOT</b> have an <code>id</code> attribute.
115+
</p>
116+
117+
<br>
118+
119+
</main>
120+
121+
<script type="text/javascript" src="../bower_components/jquery/dist/jquery.min.js"></script>
122+
<script type="text/javascript" src="../bower_components/js-xlsx/dist/xlsx.core.min.js"></script>
123+
<script type="text/javascript" src="../bower_components/blobjs/Blob.min.js"></script>
124+
<script type="text/javascript" src="../bower_components/file-saverjs/FileSaver.min.js"></script>
125+
<script type="text/javascript" src="../dist/js/tableexport.min.js"></script>
126+
<script type="text/javascript" src="../assets/js/analytics.js"></script>
127+
<script>
128+
129+
// Default sheetname if `sheetname: false|null|undefined|""`
130+
TableExport.prototype.defaultSheetname = 'fallback-name';
131+
// **** jQuery **************************
132+
// $.fn.tableExport.defaultSheetname = 'fallback-name';
133+
// **************************************
134+
135+
var SheetnameTable1 = document.getElementById('sheetname-table-1');
136+
new TableExport(SheetnameTable1, {
137+
sheetname: 'super-worksheet'
138+
});
139+
// **** jQuery **************************
140+
// $(SheetnameTable1).tableExport({
141+
// sheetname: 'super-worksheet'
142+
// });
143+
// **************************************
144+
145+
var SheetnameTable2 = document.getElementById('sheetname-table-2');
146+
new TableExport(SheetnameTable2, {
147+
sheetname: false // OR null OR undefined OR ""
148+
});
149+
// **** jQuery **************************
150+
// $(SheetnameTable2).tableExport({
151+
// sheetname: null
152+
// });
153+
// **************************************
154+
155+
</script>
156+
157+
</body>
158+
</html>

0 commit comments

Comments
 (0)