⚡ Sangsakala Proxy 🏠 Home
Skip to content

Column Formulas Cause Empty Rows When Importing #2718

Open

Description

@crazyjat

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.

Activity

  1. SheetJSDev commented on Jun 20, 2022

    @SheetJSDev
    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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions