Skip to content

Commit a36ad2b

Browse files
committed
- quote double quote properly by converting single double quote to
double double quote. - quote all values when preparing csv strings from array to prevent from unexpected line-break or delimiter char. - use CR (carriage Return, \\r) to all replace LF (line feed, \\n) since excel seems prefer \\r over \\n.
1 parent f48f1ea commit a36ad2b

8 files changed

Lines changed: 27 additions & 4 deletions

File tree

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# 0.0.2
2+
3+
- quote double quote properly by converting single double quote to double double quote.
4+
- quote all values when preparing csv strings from array to prevent from unexpected line-break or delimiter char.
5+
- use CR (carriage Return, \\r) to all replace LF (line feed, \\n) since excel seems prefer \\r over \\n.
6+

dist/csv4xls.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@
1919
return v + "";
2020
}).join('\t');
2121
}).join('\r\n');
22+
str = data.map(function(d, i){
23+
return d.map(function(v, j){
24+
return '"' + ('' + v).replace(/"/g, '""').replace(/\n/g, '\r') + '"';
25+
}).join('\t');
26+
}).join('\r\n');
2227
ba = new Uint8Array(2 + str.length * 2);
2328
for (i$ = 0, to$ = str.length; i$ < to$; ++i$) {
2429
i = i$;

dist/csv4xls.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.

package-lock.json

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

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"dist/**/*"
88
],
99
"description": "csv generator friendly for Microsoft Excel",
10-
"version": "0.0.1",
10+
"version": "0.0.2",
1111
"homepage": "https://github.com/plotdb/csv4xls",
1212
"repository": {
1313
"type": "git",

src/csv4xls.ls

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,13 @@ reg = (cb) ->
1111
obj = do
1212
to-array: (data) ->
1313
str = data.map((d,i) -> d.map((v,j) -> "#v").join(\\t)).join('\r\n')
14+
str = data
15+
.map (d,i) ->
16+
d
17+
.map (v,j) -> '"' + ('' + v).replace(/"/g, '""').replace(/\n/g,'\r') + '"'
18+
.join '\t'
19+
.join '\r\n'
20+
1421
ba = new Uint8Array(2 + str.length * 2)
1522
for i from 0 til str.length
1623
ba[i * 2 + 2] = str.charCodeAt i

web/static/assets/lib/csv4xls/dev/csv4xls.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@
1919
return v + "";
2020
}).join('\t');
2121
}).join('\r\n');
22+
str = data.map(function(d, i){
23+
return d.map(function(v, j){
24+
return '"' + ('' + v).replace(/"/g, '""').replace(/\n/g, '\r') + '"';
25+
}).join('\t');
26+
}).join('\r\n');
2227
ba = new Uint8Array(2 + str.length * 2);
2328
for (i$ = 0, to$ = str.length; i$ < to$; ++i$) {
2429
i = i$;

web/static/assets/lib/csv4xls/dev/csv4xls.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.

0 commit comments

Comments
 (0)