Uploaded image for project: 'ZK Spreadsheet'
  1. ZK Spreadsheet
  2. ZSS-1410

insert a row takes an unexpected long time


    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Normal Normal
    • None
    • 3.9.5
    • None
    • Security Level: Jimmy

      Steps to Reproduce

      1. run the attached zul

      Current Result

      it takes over 60s to show the page

      Expected Result

      speed up the performance

      Debug Information

      • One cause: unnecessary cell change
        in FormulaTunerHelper.extendCellRef(),
        the original formula: VLOOKUP(C4,sheet1!C:I,6,0)
        the formula after insertion: VLOOKUP(C4,sheet1!C$1:I$65537,6,0)
        The 2 formula are actually equivalent but their string are not equal (!fexpr.getFormulaString().equals(exprAfter.getFormulaString())) is false, it triggers cell change and calling getDependent() which takes a long time.
      • In FormulaEngineEx.adjustPtgs():
        Ptg[] tokens = org.zkoss.poi.ss.formula.Formula.create(fe.getPtgs()).getTokens();
        it only copies 2 bytes whose max value is 65535 (Excel97) but PtgShifter runs with EXCEL2007 which has larger max row. Such create() will reduce the max row to 65535

        1. t10526.zul
          0.4 kB
        2. t10526-sampling.png
          148 kB
        3. zss-1410.xlsx
          98 kB
        4. Zss1410Composer.java
          0.8 kB

            Unassigned Unassigned
            hawk hawk
            0 Vote for this issue
            2 Start watching this issue