Search in sources :

Example 6 with NameRecord

use of org.apache.poi.hssf.record.NameRecord in project poi by apache.

the class HSSFWorkbook method createName.

/** creates a new named range and add it to the model
     * @return named range high level
     */
@Override
public HSSFName createName() {
    NameRecord nameRecord = workbook.createName();
    HSSFName newName = new HSSFName(this, nameRecord);
    names.add(newName);
    return newName;
}
Also used : NameRecord(org.apache.poi.hssf.record.NameRecord)

Example 7 with NameRecord

use of org.apache.poi.hssf.record.NameRecord in project poi by apache.

the class HSSFSheet method getRepeatingRowsOrColums.

private CellRangeAddress getRepeatingRowsOrColums(boolean rows) {
    NameRecord rec = getBuiltinNameRecord(NameRecord.BUILTIN_PRINT_TITLE);
    if (rec == null) {
        return null;
    }
    Ptg[] nameDefinition = rec.getNameDefinition();
    if (nameDefinition == null) {
        return null;
    }
    int maxRowIndex = SpreadsheetVersion.EXCEL97.getLastRowIndex();
    int maxColIndex = SpreadsheetVersion.EXCEL97.getLastColumnIndex();
    for (Ptg ptg : nameDefinition) {
        if (ptg instanceof Area3DPtg) {
            Area3DPtg areaPtg = (Area3DPtg) ptg;
            if (areaPtg.getFirstColumn() == 0 && areaPtg.getLastColumn() == maxColIndex) {
                if (rows) {
                    return new CellRangeAddress(areaPtg.getFirstRow(), areaPtg.getLastRow(), -1, -1);
                }
            } else if (areaPtg.getFirstRow() == 0 && areaPtg.getLastRow() == maxRowIndex) {
                if (!rows) {
                    return new CellRangeAddress(-1, -1, areaPtg.getFirstColumn(), areaPtg.getLastColumn());
                }
            }
        }
    }
    return null;
}
Also used : Ptg(org.apache.poi.ss.formula.ptg.Ptg) Area3DPtg(org.apache.poi.ss.formula.ptg.Area3DPtg) UnionPtg(org.apache.poi.ss.formula.ptg.UnionPtg) MemFuncPtg(org.apache.poi.ss.formula.ptg.MemFuncPtg) NameRecord(org.apache.poi.hssf.record.NameRecord) Area3DPtg(org.apache.poi.ss.formula.ptg.Area3DPtg) CellRangeAddress(org.apache.poi.ss.util.CellRangeAddress)

Example 8 with NameRecord

use of org.apache.poi.hssf.record.NameRecord in project poi by apache.

the class TestFormulaParser method testParseComplexName.

/**
     * In bug 47078, POI had trouble evaluating a defined name flagged as 'complex'.
     * POI should also be able to parse such defined names.
     */
@Test
public void testParseComplexName() throws IOException {
    // Mock up a spreadsheet to match the critical details of the sample
    HSSFWorkbook wb = new HSSFWorkbook();
    wb.createSheet("Sheet1");
    HSSFName definedName = wb.createName();
    definedName.setNameName("foo");
    definedName.setRefersToFormula("Sheet1!B2");
    // Set the complex flag - POI doesn't usually manipulate this flag
    NameRecord nameRec = TestHSSFName.getNameRecord(definedName);
    // 0x10 -> complex
    nameRec.setOptionFlag((short) 0x10);
    Ptg[] result;
    try {
        result = HSSFFormulaParser.parse("1+foo", wb);
    } catch (FormulaParseException e) {
        if (e.getMessage().equals("Specified name 'foo' is not a range as expected.")) {
            fail("Identified bug 47078c");
        }
        wb.close();
        throw e;
    }
    confirmTokenClasses(result, IntPtg.class, NamePtg.class, AddPtg.class);
    wb.close();
}
Also used : FormulaParseException(org.apache.poi.ss.formula.FormulaParseException) TestHSSFName(org.apache.poi.hssf.usermodel.TestHSSFName) HSSFName(org.apache.poi.hssf.usermodel.HSSFName) NumberPtg(org.apache.poi.ss.formula.ptg.NumberPtg) ArrayPtg(org.apache.poi.ss.formula.ptg.ArrayPtg) AttrPtg(org.apache.poi.ss.formula.ptg.AttrPtg) PercentPtg(org.apache.poi.ss.formula.ptg.PercentPtg) RangePtg(org.apache.poi.ss.formula.ptg.RangePtg) AddPtg(org.apache.poi.ss.formula.ptg.AddPtg) EqualPtg(org.apache.poi.ss.formula.ptg.EqualPtg) UnaryMinusPtg(org.apache.poi.ss.formula.ptg.UnaryMinusPtg) NameXPtg(org.apache.poi.ss.formula.ptg.NameXPtg) RefPtg(org.apache.poi.ss.formula.ptg.RefPtg) DividePtg(org.apache.poi.ss.formula.ptg.DividePtg) GreaterThanPtg(org.apache.poi.ss.formula.ptg.GreaterThanPtg) MultiplyPtg(org.apache.poi.ss.formula.ptg.MultiplyPtg) Ref3DPtg(org.apache.poi.ss.formula.ptg.Ref3DPtg) StringPtg(org.apache.poi.ss.formula.ptg.StringPtg) ErrPtg(org.apache.poi.ss.formula.ptg.ErrPtg) Ptg(org.apache.poi.ss.formula.ptg.Ptg) Area3DPtg(org.apache.poi.ss.formula.ptg.Area3DPtg) NamePtg(org.apache.poi.ss.formula.ptg.NamePtg) MemAreaPtg(org.apache.poi.ss.formula.ptg.MemAreaPtg) ConcatPtg(org.apache.poi.ss.formula.ptg.ConcatPtg) UnaryPlusPtg(org.apache.poi.ss.formula.ptg.UnaryPlusPtg) BoolPtg(org.apache.poi.ss.formula.ptg.BoolPtg) IntersectionPtg(org.apache.poi.ss.formula.ptg.IntersectionPtg) AbstractFunctionPtg(org.apache.poi.ss.formula.ptg.AbstractFunctionPtg) IntPtg(org.apache.poi.ss.formula.ptg.IntPtg) UnionPtg(org.apache.poi.ss.formula.ptg.UnionPtg) FuncVarPtg(org.apache.poi.ss.formula.ptg.FuncVarPtg) SubtractPtg(org.apache.poi.ss.formula.ptg.SubtractPtg) FuncPtg(org.apache.poi.ss.formula.ptg.FuncPtg) MissingArgPtg(org.apache.poi.ss.formula.ptg.MissingArgPtg) MemFuncPtg(org.apache.poi.ss.formula.ptg.MemFuncPtg) PowerPtg(org.apache.poi.ss.formula.ptg.PowerPtg) AreaPtg(org.apache.poi.ss.formula.ptg.AreaPtg) ParenthesisPtg(org.apache.poi.ss.formula.ptg.ParenthesisPtg) NameRecord(org.apache.poi.hssf.record.NameRecord) HSSFWorkbook(org.apache.poi.hssf.usermodel.HSSFWorkbook) Test(org.junit.Test)

Example 9 with NameRecord

use of org.apache.poi.hssf.record.NameRecord in project poi by apache.

the class TestLinkTable method testNameCommentRecordBetweenNameRecords.

/**
	 *
	 */
public void testNameCommentRecordBetweenNameRecords() {
    final Record[] recs = { new NameRecord(), new NameCommentRecord("name1", "comment1"), new NameRecord(), new NameCommentRecord("name2", "comment2") };
    final List<Record> recList = Arrays.asList(recs);
    final WorkbookRecordList wrl = new WorkbookRecordList();
    final Map<String, NameCommentRecord> commentRecords = new LinkedHashMap<String, NameCommentRecord>();
    final LinkTable lt = new LinkTable(recList, 0, wrl, commentRecords);
    assertNotNull(lt);
    assertEquals(2, commentRecords.size());
    //== is intentionally not .equals()!
    assertTrue(recs[1] == commentRecords.get("name1"));
    //== is intentionally not .equals()!
    assertTrue(recs[3] == commentRecords.get("name2"));
    assertEquals(2, lt.getNumNames());
}
Also used : ExternalNameRecord(org.apache.poi.hssf.record.ExternalNameRecord) NameRecord(org.apache.poi.hssf.record.NameRecord) Record(org.apache.poi.hssf.record.Record) SupBookRecord(org.apache.poi.hssf.record.SupBookRecord) SSTRecord(org.apache.poi.hssf.record.SSTRecord) EOFRecord(org.apache.poi.hssf.record.EOFRecord) ExternalNameRecord(org.apache.poi.hssf.record.ExternalNameRecord) NameRecord(org.apache.poi.hssf.record.NameRecord) CountryRecord(org.apache.poi.hssf.record.CountryRecord) NameCommentRecord(org.apache.poi.hssf.record.NameCommentRecord) BOFRecord(org.apache.poi.hssf.record.BOFRecord) ExternSheetRecord(org.apache.poi.hssf.record.ExternSheetRecord) NameCommentRecord(org.apache.poi.hssf.record.NameCommentRecord) LinkedHashMap(java.util.LinkedHashMap)

Example 10 with NameRecord

use of org.apache.poi.hssf.record.NameRecord in project poi by apache.

the class TestBugs method assertNames.

private void assertNames(HSSFWorkbook wb1, InternalWorkbook w) {
    for (int i = 0; i < w.getNumNames(); i++) {
        NameRecord r = w.getNameRecord(i);
        assertTrue(r.getSheetNumber() <= wb1.getNumberOfSheets());
        Ptg[] nd = r.getNameDefinition();
        assertEquals(1, nd.length);
        assertTrue(nd[0] instanceof DeletedArea3DPtg);
    }
}
Also used : DeletedArea3DPtg(org.apache.poi.ss.formula.ptg.DeletedArea3DPtg) Ptg(org.apache.poi.ss.formula.ptg.Ptg) Area3DPtg(org.apache.poi.ss.formula.ptg.Area3DPtg) DeletedArea3DPtg(org.apache.poi.ss.formula.ptg.DeletedArea3DPtg) NameRecord(org.apache.poi.hssf.record.NameRecord)

Aggregations

NameRecord (org.apache.poi.hssf.record.NameRecord)23 Area3DPtg (org.apache.poi.ss.formula.ptg.Area3DPtg)9 Test (org.junit.Test)9 Ptg (org.apache.poi.ss.formula.ptg.Ptg)7 InternalWorkbook (org.apache.poi.hssf.model.InternalWorkbook)4 Record (org.apache.poi.hssf.record.Record)3 MemFuncPtg (org.apache.poi.ss.formula.ptg.MemFuncPtg)3 NameXPtg (org.apache.poi.ss.formula.ptg.NameXPtg)3 Ref3DPtg (org.apache.poi.ss.formula.ptg.Ref3DPtg)3 UnionPtg (org.apache.poi.ss.formula.ptg.UnionPtg)3 CellRangeAddress (org.apache.poi.ss.util.CellRangeAddress)3 InternalSheet (org.apache.poi.hssf.model.InternalSheet)2 AutoFilterInfoRecord (org.apache.poi.hssf.record.AutoFilterInfoRecord)2 BOFRecord (org.apache.poi.hssf.record.BOFRecord)2 CommonObjectDataSubRecord (org.apache.poi.hssf.record.CommonObjectDataSubRecord)2 EOFRecord (org.apache.poi.hssf.record.EOFRecord)2 UnicodeString (org.apache.poi.hssf.record.common.UnicodeString)2 HSSFName (org.apache.poi.hssf.usermodel.HSSFName)2 HSSFWorkbook (org.apache.poi.hssf.usermodel.HSSFWorkbook)2 OperandPtg (org.apache.poi.ss.formula.ptg.OperandPtg)2