Feed of "sheetjs/sheetjs" https://git.sheetjs.com/sheetjs/sheetjs 📗 SheetJS Community Edition -- Spreadsheet Data Toolkit Mon, 13 Apr 2026 17:17:01 +0000 Wangqiuyi811 opened issue <a href="https://git.sheetjs.com/sheetjs/sheetjs/issues/3351">sheetjs/sheetjs#3351</a> https://git.sheetjs.com/sheetjs/sheetjs/issues/3351 3351#we need a skills for sheetJs# We hope that the authorities can provide a standard skills so that our Agent can be used the sheetJs API

]]>
Wangqiuyi811 48544: https://git.sheetjs.com/sheetjs/sheetjs/issues/3351 Sat, 28 Mar 2026 16:38:42 +0000
dirk-koest commented on issue <a href="https://git.sheetjs.com/sheetjs/sheetjs/issues/3349">sheetjs/sheetjs#3349</a> https://git.sheetjs.com/sheetjs/sheetjs/issues/3349#issuecomment-12056 New version for xlsx.js in the near future? <p dir="auto">Ok, thanks!</p> Ok, thanks!

]]>
dirk-koest 48469: https://git.sheetjs.com/sheetjs/sheetjs/issues/3349#issuecomment-12056 Sat, 28 Mar 2026 07:57:06 +0000
flaushi commented on issue <a href="https://git.sheetjs.com/sheetjs/sheetjs/issues/3350">sheetjs/sheetjs#3350</a> https://git.sheetjs.com/sheetjs/sheetjs/issues/3350#issuecomment-12053 Microsoft Sensitivity Labels <p dir="auto">Thanks, I&#39;ll try that. If it works I will write a MR for the sheetjs docs.</p> Thanks, I'll try that. If it works I will write a MR for the sheetjs docs.

]]>
flaushi 48240: https://git.sheetjs.com/sheetjs/sheetjs/issues/3350#issuecomment-12053 Fri, 27 Mar 2026 16:49:50 +0000
flaushi closed issue <a href="https://git.sheetjs.com/sheetjs/sheetjs/issues/3350">sheetjs/sheetjs#3350</a> https://git.sheetjs.com/sheetjs/sheetjs/issues/3350#issuecomment-12054 Microsoft Sensitivity Labels flaushi 48314: https://git.sheetjs.com/sheetjs/sheetjs/issues/3350#issuecomment-12054 Fri, 27 Mar 2026 16:49:50 +0000 flaushi opened issue <a href="https://git.sheetjs.com/sheetjs/sheetjs/issues/3350">sheetjs/sheetjs#3350</a> https://git.sheetjs.com/sheetjs/sheetjs/issues/3350 3350#Microsoft Sensitivity Labels# Is there an API call to add Microsoft's sensitvity labels to created xlsx-Workbooks?

https://learn.microsoft.com/en-us/purview/sensitivity-labels

Thanks in advance!

]]>
flaushi 48083: https://git.sheetjs.com/sheetjs/sheetjs/issues/3350 Thu, 26 Mar 2026 15:41:25 +0000
dirk-koest opened issue <a href="https://git.sheetjs.com/sheetjs/sheetjs/issues/3349">sheetjs/sheetjs#3349</a> https://git.sheetjs.com/sheetjs/sheetjs/issues/3349 3349#New tarball planned for nodejs in the near future?# Hello,

we are using xlsx.js of sheetjs in version 0.20.3. Since there was no update on this within the last two years, our pipelines are reporting errors due to the outdated library. Thus we are wondering if a new version is planned soon. If so, do you have any rough timeline?

I think kind of a maintenance release with updated dependencies would be sufficient.

Thanks a lot for you answer in advance.

]]>
dirk-koest 47807: https://git.sheetjs.com/sheetjs/sheetjs/issues/3349 Wed, 18 Feb 2026 16:20:04 +0000
archiewood opened issue <a href="https://git.sheetjs.com/sheetjs/sheetjs/issues/3348">sheetjs/sheetjs#3348</a> https://git.sheetjs.com/sheetjs/sheetjs/issues/3348 3348#Does ssf support european style thousand separators?# First of all, thank you for this library. It is excellent and we have relied on it for years.

Rather than formatting a number as 123,456.78
The ability to format as 123.456,78

I see some reference in the source code to ThousandSeparators but unclear on what these do and how I would use them

(We are using ssf standalone to format numbers rather than the SheetJS package)

Usage

import ssf from 'ssf';


export function formatValue(ssfFormatCode, processedValue){

    return ssf.format(ssfFormatCode, processedValue, { date1970: true });

}

looking for something like

return ssf.format(ssfFormatCode, processedValue, { date1970: true, thousandSeparator: "." });
]]>
archiewood 47450: https://git.sheetjs.com/sheetjs/sheetjs/issues/3348 Mon, 02 Feb 2026 19:36:53 +0000
ledeneveugene opened issue <a href="https://git.sheetjs.com/sheetjs/sheetjs/issues/3347">sheetjs/sheetjs#3347</a> https://git.sheetjs.com/sheetjs/sheetjs/issues/3347 3347#Library parses numbers from a csv file incorrectly# if value is a number it parses one even if it > Number.MAX_SAFE_INTEGER
"9943147749973803' -> 9943147749973804

I used

const rows = utils.sheet_to_json(worksheet, {
    header: 1,
    raw: true,
  });

it works correctly for excel files. The bug related with .csv files only

Expected behavior: return string instead of incorrect number

]]>
ledeneveugene 47379: https://git.sheetjs.com/sheetjs/sheetjs/issues/3347 Mon, 02 Feb 2026 12:20:51 +0000
Asad Karimov created pull request <a href="https://git.sheetjs.com/sheetjs/sheetjs/pulls/3346">sheetjs/sheetjs#3346</a> https://git.sheetjs.com/sheetjs/sheetjs/pulls/3346 3346#throw error while reading PDF file# Asad Karimov 47097: https://git.sheetjs.com/sheetjs/sheetjs/pulls/3346 Sat, 31 Jan 2026 19:26:22 +0000 Asad Karimov pushed to <a href="https://git.sheetjs.com/sheetjs/sheetjs/src/branch/reject-pdf-read">reject-pdf-read</a> at <a href="https://git.sheetjs.com/sheetjs/sheetjs">sheetjs/sheetjs</a> https://git.sheetjs.com/sheetjs/sheetjs/commit/789e2d68703f95b3e6470e6cf934b4b82c44bcaa <a href="https://git.sheetjs.com/sheetjs/sheetjs/commit/789e2d68703f95b3e6470e6cf934b4b82c44bcaa">789e2d68703f95b3e6470e6cf934b4b82c44bcaa</a> throw error while reading PDF file 789e2d68703f95b3e6470e6cf934b4b82c44bcaa throw error while reading PDF file]]> Asad Karimov 47028: https://git.sheetjs.com/sheetjs/sheetjs/commit/789e2d68703f95b3e6470e6cf934b4b82c44bcaa Sat, 31 Jan 2026 19:25:57 +0000 Asad Karimov created branch <a href="https://git.sheetjs.com/sheetjs/sheetjs/src/branch/reject-pdf-read">reject-pdf-read</a> in <a href="https://git.sheetjs.com/sheetjs/sheetjs">sheetjs/sheetjs</a> https://git.sheetjs.com/sheetjs/sheetjs/src/branch/reject-pdf-read Asad Karimov 46959: https://git.sheetjs.com/sheetjs/sheetjs/src/branch/reject-pdf-read Sat, 31 Jan 2026 19:25:56 +0000 k1rnt opened issue <a href="https://git.sheetjs.com/sheetjs/sheetjs/issues/3345">sheetjs/sheetjs#3345</a> https://git.sheetjs.com/sheetjs/sheetjs/issues/3345 3345#Add optional link protocol validation for HTML export# As discussed via email, it would be helpful to have an optional opt-in flag
for sheet_to_html(), write(), and writeFile() to restrict hyperlink
protocols when exporting to HTML.

This would be particularly useful for web applications that preview
untrusted Excel files, helping reduce the risk of unsafe URL schemes
(e.g. javascript:) being included in generated HTML.

Suggested API shape (example):

XLSX.utils.sheet_to_html(worksheet, { sanitizeLinks: true });
XLSX.write(workbook, { bookType: "html", sanitizeLinks: true });

When enabled, the option could allow only:

  • http / https URLs
  • internal links (e.g. #sheet1!A1)

The default behavior would remain unchanged to preserve Excel
compatibility, while offering a safer opt-in path for web-facing use cases.

]]>
k1rnt 46850: https://git.sheetjs.com/sheetjs/sheetjs/issues/3345 Thu, 22 Jan 2026 18:36:50 +0000
Wolfspirat opened issue <a href="https://git.sheetjs.com/sheetjs/sheetjs/issues/3344">sheetjs/sheetjs#3344</a> https://git.sheetjs.com/sheetjs/sheetjs/issues/3344 3344#formula removed from /xl/worksheets/sheet3.xml-Part for no reason# im trying to set formulas to my worksheet, but everytime i download it and open it in excel afterwards, excel tell me it had to remove korrupted data from the file, which is always the formula i set right there. when i console log everything it looks exactly like the worksheet thats already in there and has formulas that work just fine. and if i dont get an error at all i open the excel-file only to find that it straightup ignored all formulas, despite the setting "cellFormula: true".
if anyone has any idea what to try next, please explain it to me like i was 5.

The thing is, the formulas are not supposed to immediately start and realize the theres no data to process. theyre supposed to act like all the other excel formula that just sits there and only acts when theres a change made in the cells in their range.

]]>
Wolfspirat 46568: https://git.sheetjs.com/sheetjs/sheetjs/issues/3344 Tue, 20 Jan 2026 14:35:48 +0000
beenotung created pull request <a href="https://git.sheetjs.com/sheetjs/sheetjs/pulls/3343">sheetjs/sheetjs#3343</a> https://git.sheetjs.com/sheetjs/sheetjs/pulls/3343 3343#patch: add missing type on optional error in the callback# When we write a file using the async function, it return the error in the first argument.
This patch allows getting the error value.

]]>
beenotung 46491: https://git.sheetjs.com/sheetjs/sheetjs/pulls/3343 Fri, 16 Jan 2026 12:33:28 +0000
ExcelJungle closed issue <a href="https://git.sheetjs.com/sheetjs/sheetjs/issues/3340">sheetjs/sheetjs#3340</a> https://git.sheetjs.com/sheetjs/sheetjs/issues/3340#issuecomment-12031 Uncaught (in promise) RangeError ExcelJungle 46228: https://git.sheetjs.com/sheetjs/sheetjs/issues/3340#issuecomment-12031 Fri, 09 Jan 2026 14:38:43 +0000 ExcelJungle commented on issue <a href="https://git.sheetjs.com/sheetjs/sheetjs/issues/3340">sheetjs/sheetjs#3340</a> https://git.sheetjs.com/sheetjs/sheetjs/issues/3340#issuecomment-12030 Uncaught (in promise) RangeError <p dir="auto">Many thanks for reply and the pointer to the exact error documentation<br/> I switched to <strong>XLSB</strong> (binary) format and could work-around the issue.</p> <p dir="auto"><strong>Of note:</strong> the documentation mentions 100M…</p> Many thanks for reply and the pointer to the exact error documentation
I switched to XLSB (binary) format and could work-around the issue.

Of note: the documentation mentions 100M…

]]>
ExcelJungle 46158: https://git.sheetjs.com/sheetjs/sheetjs/issues/3340#issuecomment-12030 Fri, 09 Jan 2026 14:38:42 +0000
ExcelJungle opened issue <a href="https://git.sheetjs.com/sheetjs/sheetjs/issues/3340">sheetjs/sheetjs#3340</a> https://git.sheetjs.com/sheetjs/sheetjs/issues/3340 3340#Uncaught (in promise) RangeError# I am encountering an issue in Chrome browser where the line
return n.join("")
(function function Qv(e, r, t, a) in minified version)
gives an error:
Uncaught (in promise) RangeError: Invalid string length

It seems similar to general Javascript error related to Chrome/V8
https://github.com/nodejs/node/issues/35973
Or searching for "rangeError invalid string length"

The Excel file is created without error in Firefox.
I am working with large files - 83 Mb when sucessful?

Has anyone had similar issue and have any work-arounds?

]]>
ExcelJungle 46005: https://git.sheetjs.com/sheetjs/sheetjs/issues/3340 Wed, 07 Jan 2026 14:01:07 +0000
ErdyMurphy opened issue <a href="https://git.sheetjs.com/sheetjs/sheetjs/issues/3339">sheetjs/sheetjs#3339</a> https://git.sheetjs.com/sheetjs/sheetjs/issues/3339 3339#Looks like the deployment pipeline of scripts is buggy# When visiting https://cdn.sheetjs.com/ and selecting latest or any version from dopdown, the link to

xlsx.full.min.js does not serve the latest release.

Instead, it delivers a build that contains:

cptable = { version: "1.15.0" } This indicates the file is from version 1.15.0, not the current release.

Steps to reproduce:

Go to https://cdn.sheetjs.com/
Under latest, click the link for xlsx.full.min.js
Download or open the file
Search for the string cptable – it shows version:"1.15.0"
Expected behavior:

The latest link should point to the actual latest release of SheetJS, matching the current version number in npm and GitHub.

Actual behavior:

The latest link currently serves an old build (1.15.0).

Possible cause:

The CDN file mapping for latest might not have been updated after newer releases.

]]>
ErdyMurphy 45610: https://git.sheetjs.com/sheetjs/sheetjs/issues/3339 Thu, 04 Dec 2025 08:52:40 +0000
jjanvier opened issue <a href="https://git.sheetjs.com/sheetjs/sheetjs/issues/3338">sheetjs/sheetjs#3338</a> https://git.sheetjs.com/sheetjs/sheetjs/issues/3338 3338#Problem with notes styling# Hello there 👋

I'm working on an Excel file that contains notes. Here is an example Screenshot 2025-11-24 at 17.04.04.png.

When loading this file to be able to add rows to it, here's what I do

          workbook = XLSX.read(buffer, {
            bookVBA: bookType === 'xlsm',
            type: 'buffer',
            cellStyles: true,
          });

// ...
// here I write data
// ...

        const buffer = Buffer.from(
          XLSX.write(workbook, {
            type: 'buffer',
            bookType: bookType,
            bookVBA: bookType === 'xlsm',
            cellStyles: true,
          })
        );

The output file is properly written with the data I added. But the notes' style is different. Moreover, notes are always displayed. Normally, they should be displayed only on hover.

See this screenshot Screenshot 2025-11-24 at 17.08.18.png.

What am I doing wrong?

]]>
jjanvier 45404: https://git.sheetjs.com/sheetjs/sheetjs/issues/3338 Mon, 24 Nov 2025 16:08:40 +0000
grant commented on issue <a href="https://git.sheetjs.com/sheetjs/sheetjs/issues/3336">sheetjs/sheetjs#3336</a> https://git.sheetjs.com/sheetjs/sheetjs/issues/3336#issuecomment-11956 Registry Is Down <p dir="auto">Fuller logs:</p> <pre class="code-block"><code class="chroma language-text display">------ &gt; [prod-deps 6/6] RUN pnpm install --prod --frozen-lockfile --filter @edm/dashboard...: 59.44 ../.. </code></pre> Fuller logs:

------
 > [prod-deps 6/6] RUN pnpm install --prod --frozen-lockfile --filter @edm/dashboard...:
59.44 ../..                                    
]]>
grant 44882: https://git.sheetjs.com/sheetjs/sheetjs/issues/3336#issuecomment-11956 Mon, 27 Oct 2025 20:24:32 +0000
grant opened issue <a href="https://git.sheetjs.com/sheetjs/sheetjs/issues/3336">sheetjs/sheetjs#3336</a> https://git.sheetjs.com/sheetjs/sheetjs/issues/3336 3336#Registry Is Down# When installing via pnpm, we're seeing the following error as of recent:

61.67  ERR_PNPM_FETCH_403  GET https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz: Forbidden - 403

We have the following package:

"xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz",

Is there any status page for the registry? Any status page?

]]>
grant 44820: https://git.sheetjs.com/sheetjs/sheetjs/issues/3336 Mon, 27 Oct 2025 20:23:54 +0000
daiyam commented on issue <a href="https://git.sheetjs.com/sheetjs/sheetjs/issues/3335">sheetjs/sheetjs#3335</a> https://git.sheetjs.com/sheetjs/sheetjs/issues/3335#issuecomment-11932 `FDIST` replaced with `F.DIST` <p dir="auto">FYI, I&#39;m using <a href="https://raw.githubusercontent.com/LibreOffice/core/master/sc/source/filter/oox/formulabase.cxx" rel="nofollow">https://raw.githubusercontent.com/LibreOffice/core/master/sc/source/filter/oox/formulabase.cxx</a> as reference for translating the formula functions.</p> FYI, I'm using https://raw.githubusercontent.com/LibreOffice/core/master/sc/source/filter/oox/formulabase.cxx as reference for translating the formula functions.

]]>
daiyam 44583: https://git.sheetjs.com/sheetjs/sheetjs/issues/3335#issuecomment-11932 Tue, 21 Oct 2025 20:58:31 +0000
daiyam commented on issue <a href="https://git.sheetjs.com/sheetjs/sheetjs/issues/3335">sheetjs/sheetjs#3335</a> https://git.sheetjs.com/sheetjs/sheetjs/issues/3335#issuecomment-11928 `FDIST` replaced with `F.DIST` <p dir="auto">Ok, I understand now. It&#39;s an issue of the LibreOffice ODS parser...</p> <p dir="auto">Looking at the <code>content.xml</code>, I can see:</p> <ul dir="auto"> <li><code>table:formula=&#34;of:=FDIST(1;1;20)&#34;</code> which is translated to <code>=F.DIST(1,1,20)</code><br/> -…</li> </ul> Ok, I understand now. It's an issue of the LibreOffice ODS parser...

Looking at the content.xml, I can see:

  • table:formula="of:=FDIST(1;1;20)" which is translated to =F.DIST(1,1,20)
    -…
]]>
daiyam 44457: https://git.sheetjs.com/sheetjs/sheetjs/issues/3335#issuecomment-11928 Tue, 21 Oct 2025 18:53:26 +0000
daiyam closed issue <a href="https://git.sheetjs.com/sheetjs/sheetjs/issues/3335">sheetjs/sheetjs#3335</a> https://git.sheetjs.com/sheetjs/sheetjs/issues/3335#issuecomment-11929 `FDIST` replaced with `F.DIST` daiyam 44519: https://git.sheetjs.com/sheetjs/sheetjs/issues/3335#issuecomment-11929 Tue, 21 Oct 2025 18:53:26 +0000 daiyam commented on issue <a href="https://git.sheetjs.com/sheetjs/sheetjs/issues/3335">sheetjs/sheetjs#3335</a> https://git.sheetjs.com/sheetjs/sheetjs/issues/3335#issuecomment-11926 `FDIST` replaced with `F.DIST` <p dir="auto">Thanks for the answer.</p> <p dir="auto">Is there a way to disable the translation of the ODS writer?<br/> Or is there a list of functions that are replaced by the ODS writer?</p> <p dir="auto">My objective to to generate the 2…</p> Thanks for the answer.

Is there a way to disable the translation of the ODS writer?
Or is there a list of functions that are replaced by the ODS writer?

My objective to to generate the 2…

]]>
daiyam 44334: https://git.sheetjs.com/sheetjs/sheetjs/issues/3335#issuecomment-11926 Tue, 21 Oct 2025 18:09:20 +0000
daiyam opened issue <a href="https://git.sheetjs.com/sheetjs/sheetjs/issues/3335">sheetjs/sheetjs#3335</a> https://git.sheetjs.com/sheetjs/sheetjs/issues/3335 3335#`FDIST` replaced with `F.DIST`# Hi,

When writing a workbook with theods bookType, the formula =FDIST(5,1,2) is replaced with =F.DIST(5,1,2) (extra .).
In LibreOffice, FDIST != F.DIST.

When writing as a xlsx, the formula isn't modified.

Did I missed an option when writing the file? Thx

How I write the file: writeFile(workbook, filePathOutput, { bookType });
How I set the formula: sheet[cellRef] = { t: 'n', v: '', f: formula };

]]>
daiyam 44209: https://git.sheetjs.com/sheetjs/sheetjs/issues/3335 Tue, 21 Oct 2025 12:45:50 +0000
smcefee commented on issue <a href="https://git.sheetjs.com/sheetjs/sheetjs/issues/3333">sheetjs/sheetjs#3333</a> https://git.sheetjs.com/sheetjs/sheetjs/issues/3333#issuecomment-11899 Code Scanning Errors <p dir="auto">Any movement on this? I&#39;d love to get rid of those errors.</p> Any movement on this? I'd love to get rid of those errors.

]]>
smcefee 44092: https://git.sheetjs.com/sheetjs/sheetjs/issues/3333#issuecomment-11899 Thu, 16 Oct 2025 19:07:33 +0000
flaushi commented on issue <a href="https://git.sheetjs.com/sheetjs/sheetjs/issues/3120">sheetjs/sheetjs#3120</a> https://git.sheetjs.com/sheetjs/sheetjs/issues/3120#issuecomment-11894 Does sheetjs support streaming write large xlsx file in browser <p dir="auto">The streaming write feature for XLSX would be very interesting for me, too!<br/> I am working in node, so the browser capabilities - for me - are of minor importance.<br/> Thanks for your time and work in…</p> The streaming write feature for XLSX would be very interesting for me, too!
I am working in node, so the browser capabilities - for me - are of minor importance.
Thanks for your time and work in…

]]>
flaushi 44021: https://git.sheetjs.com/sheetjs/sheetjs/issues/3120#issuecomment-11894 Tue, 14 Oct 2025 21:57:38 +0000
amcsi opened issue <a href="https://git.sheetjs.com/sheetjs/sheetjs/issues/3334">sheetjs/sheetjs#3334</a> https://git.sheetjs.com/sheetjs/sheetjs/issues/3334 3334#Percentage information lost when parsing HTML table# When using utils.table_to_sheet() with raw: false, although it recognizes percentages (e.g. 12.34%), it parses the string as number as a number divided by 100 without the percentage sign (e.g. 0.1234), but then it does not retain any information about the number having been a percentage. I.e. I'm expecting the cell's z value to be '0.00%' or something similar; instead it's just undefined.

The result is that a cell with 12.34% ends up indistinguishable from a cell with 0.1234 in it.

Is there anything I'm missing? I would like parsing of percentages to not lose information about the cell having a number in it. I would not like to use raw: true if possible, because all other cases of parsing work well.

The failing tests:

describe("xlsx.utils.table_to_sheet", () => {
  it("parses percentages as expected", () => {
    const tableElement = document.createElement("table");
    tableElement.innerHTML = `<tr><td>12.34%</td><td>0.1234</td></tr>`;

    const sheet = utils.table_to_sheet(tableElement);

    expect(sheet.B1.v).toBe(0.1234);
    expect(sheet.B1.z).toBeUndefined();
    expect(sheet.A1.v).toBe(0.1234);
    expect(sheet.A1.z).toBe("0.00%"); // fails here; actual: undefined
  });
  it("parses percentages distinguished from regular numbers", () => {
    const tableElement = document.createElement("table");
    tableElement.innerHTML = `<tr><td>12.34%</td><td>0.1234</td></tr>`;

    const sheet = utils.table_to_sheet(tableElement);

    expect(sheet.B1).not.toEqual(sheet.A1); // fails here
  });
});
]]>
amcsi 43897: https://git.sheetjs.com/sheetjs/sheetjs/issues/3334 Mon, 13 Oct 2025 11:22:07 +0000
smcefee commented on issue <a href="https://git.sheetjs.com/sheetjs/sheetjs/issues/3333">sheetjs/sheetjs#3333</a> https://git.sheetjs.com/sheetjs/sheetjs/issues/3333#issuecomment-11886 Code Scanning Errors <p dir="auto">Are you able to release a new version of the following file that doesn&#39;t trip the checks? xlsx.full.min.js</p> Are you able to release a new version of the following file that doesn't trip the checks? xlsx.full.min.js

]]>
smcefee 43828: https://git.sheetjs.com/sheetjs/sheetjs/issues/3333#issuecomment-11886 Thu, 09 Oct 2025 23:16:11 +0000