Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Column Formulas Cause Empty Rows When Importing #2718

Open
crazyjat opened this issue Jun 15, 2022 · 1 comment
Open

Column Formulas Cause Empty Rows When Importing #2718

crazyjat opened this issue Jun 15, 2022 · 1 comment

Comments

@crazyjat
Copy link

crazyjat commented Jun 15, 2022

I am experiencing an issue when trying to read an xlsx file from user upload that contains column formulas that have an expression that inserts an empty string into a cell. For example, a column formula such as =IF(ISBLANK(A12),"", "Yes") will cause the imported data to have hundreds of empty rows. The imported cells look like { t: "s", v: "" } and none of the import options will filter them out.

This is what my import function looks like:

const getXlsxData = (file: File): Promise<WorkBook> => {
  return new Promise(resolve => {
    let reader = new FileReader();
    reader.onload = (e) => {
      if (e.target?.result) {
        let workbook = read(e.target.result, {
          cellDates: true,
          cellFormula: false,
          cellNF: false,
          cellHTML: false,
          cellText: false,
        });
        resolve(workbook);
      }
    };
    reader.readAsArrayBuffer(file);
  });
};

I'm on version 0.17.5. Please help.

@SheetJSDev
Copy link
Contributor

If you can share a file we can take a closer look, but it's likely the case that the cells are explicitly specified and explicitly have an empty string cell value.

To see this behavior, select cell A1 and select the formula bar and type ' and hit enter. Then set B1 to the formula =TYPE(A1) and set cell C1 to =LEN(A1):

issue2718formulae

issue2718values

(TYPE 2 is "Text" and TYPE 1 is "Number" since no value was assigned to the cell)

This is a tricky case because, in all likelihood, the cell itself specifies an empty string value. It's similar to JS in that "" !== null

If you are unable to upgrade, the obvious option is just to delete the cells in question by walking the worksheet and deleting all cell objects with type s and empty string value.

If you are able to upgrade, sheetStubs behavior could be modified to omit blank string cells without formulae (or when cellFormula is false).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants