@cj-tech-master/excelts 3.0.1-canary.20251230172852.9dca08f → 3.0.1-canary.20251230173853.c3c79fa
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/dist/browser/excelts.esm.js +31 -7
- package/dist/browser/excelts.esm.js.map +1 -1
- package/dist/browser/excelts.esm.min.js +19 -19
- package/dist/browser/excelts.iife.js +31 -7
- package/dist/browser/excelts.iife.js.map +1 -1
- package/dist/browser/excelts.iife.min.js +7 -7
- package/dist/cjs/csv/csv-core.js +5 -2
- package/dist/cjs/csv/csv-number.js +24 -0
- package/dist/cjs/csv/csv-stream.js +3 -1
- package/dist/cjs/csv/csv.base.js +8 -4
- package/dist/cjs/csv/csv.js +2 -2
- package/dist/esm/csv/csv-core.js +5 -2
- package/dist/esm/csv/csv-number.js +20 -0
- package/dist/esm/csv/csv-stream.js +3 -1
- package/dist/esm/csv/csv.base.js +8 -4
- package/dist/esm/csv/csv.js +2 -2
- package/dist/types/csv/csv-core.d.ts +12 -0
- package/dist/types/csv/csv-number.d.ts +3 -0
- package/dist/types/csv/csv-stream.d.ts +1 -0
- package/dist/types/csv/csv.base.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @cj-tech-master/excelts v3.0.1-canary.
|
|
2
|
+
* @cj-tech-master/excelts v3.0.1-canary.20251230173853.c3c79fa
|
|
3
3
|
* TypeScript Excel Workbook Manager - Read and Write xlsx and csv Files.
|
|
4
4
|
* (c) 2025 cjnoname
|
|
5
5
|
* Released under the MIT License
|
|
@@ -17115,9 +17115,32 @@ var ExcelTS = (function(exports) {
|
|
|
17115
17115
|
}
|
|
17116
17116
|
};
|
|
17117
17117
|
|
|
17118
|
+
//#endregion
|
|
17119
|
+
//#region src/csv/csv-number.ts
|
|
17120
|
+
function formatNumberForCsv(value, decimalSeparator) {
|
|
17121
|
+
if (decimalSeparator !== ",") return String(value);
|
|
17122
|
+
return String(value).split(".").join(",");
|
|
17123
|
+
}
|
|
17124
|
+
function parseNumberFromCsv(value, decimalSeparator) {
|
|
17125
|
+
if (decimalSeparator !== ",") return Number(value);
|
|
17126
|
+
const trimmed = value.trim();
|
|
17127
|
+
if (/^-?\d+(,\d+)?([eE][+-]?\d+)?$/.test(trimmed)) return Number(trimmed.replace(",", "."));
|
|
17128
|
+
return Number(value);
|
|
17129
|
+
}
|
|
17130
|
+
|
|
17118
17131
|
//#endregion
|
|
17119
17132
|
//#region src/csv/csv-core.ts
|
|
17120
17133
|
/**
|
|
17134
|
+
* CSV Parser and Formatter - RFC 4180 compliant
|
|
17135
|
+
*
|
|
17136
|
+
* A lightweight, cross-platform CSV implementation that works in both
|
|
17137
|
+
* Node.js and Browser environments with zero dependencies.
|
|
17138
|
+
*
|
|
17139
|
+
* High-performance RFC 4180 compliant CSV parser and formatter.
|
|
17140
|
+
*
|
|
17141
|
+
* @see https://tools.ietf.org/html/rfc4180
|
|
17142
|
+
*/
|
|
17143
|
+
/**
|
|
17121
17144
|
* Escape special regex characters
|
|
17122
17145
|
*/
|
|
17123
17146
|
function escapeRegex(str) {
|
|
@@ -17350,7 +17373,7 @@ var ExcelTS = (function(exports) {
|
|
|
17350
17373
|
* Format data as a CSV string
|
|
17351
17374
|
*/
|
|
17352
17375
|
function formatCsv(data, options = {}) {
|
|
17353
|
-
const { delimiter = ",", quote: quoteOption = "\"", escape: escapeOption, rowDelimiter = "\n", alwaysQuote = false, quoteColumns = false, quoteHeaders = false, headers, writeHeaders: writeHeadersOption, writeBOM = false, includeEndRowDelimiter = false, alwaysWriteHeaders = false, transform } = options;
|
|
17376
|
+
const { delimiter = ",", quote: quoteOption = "\"", escape: escapeOption, rowDelimiter = "\n", alwaysQuote = false, quoteColumns = false, quoteHeaders = false, headers, writeHeaders: writeHeadersOption, writeBOM = false, includeEndRowDelimiter = false, alwaysWriteHeaders = false, transform, decimalSeparator = "." } = options;
|
|
17354
17377
|
const shouldWriteHeaders = writeHeadersOption ?? true;
|
|
17355
17378
|
const quoteEnabled = quoteOption !== false && quoteOption !== null;
|
|
17356
17379
|
const quote = quoteEnabled ? String(quoteOption) : "";
|
|
@@ -17365,7 +17388,7 @@ var ExcelTS = (function(exports) {
|
|
|
17365
17388
|
};
|
|
17366
17389
|
const formatField = (value, index, header, isHeader = false) => {
|
|
17367
17390
|
if (value === null || value === void 0) return "";
|
|
17368
|
-
const str = String(value);
|
|
17391
|
+
const str = typeof value === "number" ? formatNumberForCsv(value, decimalSeparator) : String(value);
|
|
17369
17392
|
if (!quoteEnabled) return str;
|
|
17370
17393
|
const forceQuote = alwaysQuote || shouldQuoteColumn(index, header, isHeader);
|
|
17371
17394
|
const quoteRegex = /* @__PURE__ */ new RegExp(`[${escapeRegex(delimiter)}${escapeRegex(quote)}\r\n]`);
|
|
@@ -17433,11 +17456,12 @@ var ExcelTS = (function(exports) {
|
|
|
17433
17456
|
/**
|
|
17434
17457
|
* Create the default value mapper for CSV parsing
|
|
17435
17458
|
*/
|
|
17436
|
-
function createDefaultValueMapper(dateFormats) {
|
|
17459
|
+
function createDefaultValueMapper(dateFormats, parserOptions) {
|
|
17437
17460
|
const dateParser = DateParser.create(dateFormats);
|
|
17461
|
+
const decimalSeparator = parserOptions?.decimalSeparator ?? ".";
|
|
17438
17462
|
return function mapValue(datum) {
|
|
17439
17463
|
if (datum === "") return null;
|
|
17440
|
-
const datumNumber = Number(datum);
|
|
17464
|
+
const datumNumber = typeof datum === "string" ? parseNumberFromCsv(datum, decimalSeparator) : Number(datum);
|
|
17441
17465
|
if (!Number.isNaN(datumNumber) && datumNumber !== Infinity) return datumNumber;
|
|
17442
17466
|
const date = dateParser.parse(datum);
|
|
17443
17467
|
if (date) return date;
|
|
@@ -17472,9 +17496,9 @@ var ExcelTS = (function(exports) {
|
|
|
17472
17496
|
"YYYY-MM-DD[T]HH:mm:ss",
|
|
17473
17497
|
"YYYY-MM-DD"
|
|
17474
17498
|
];
|
|
17475
|
-
const
|
|
17499
|
+
const effectiveMap = options.map || createDefaultValueMapper(dateFormats, options.parserOptions);
|
|
17476
17500
|
const rows = parseCsv(content, options.parserOptions);
|
|
17477
|
-
for (const row of rows) worksheet.addRow(row.map(
|
|
17501
|
+
for (const row of rows) worksheet.addRow(row.map(effectiveMap));
|
|
17478
17502
|
return worksheet;
|
|
17479
17503
|
}
|
|
17480
17504
|
/**
|