M. P. Halpin 2 месяцев назад
Родитель
Сommit
21adc6057c
Аккаунт пользователя с таким Email не найден

+ 19
- 0
poi/src/main/java/org/apache/poi/hssf/record/BoundSheetRecord.java Просмотреть файл

@@ -39,6 +39,7 @@ public final class BoundSheetRecord extends StandardRecord {
public static final short sid = 0x0085;
private static final BitField hiddenFlag = BitFieldFactory.getInstance(0x01);
private static final BitField veryHiddenFlag = BitFieldFactory.getInstance(0x02);
private static final BitField xl4Flag = BitFieldFactory.getInstance(0x100);

private int field_1_position_of_BOF;
private int field_2_option_flags;
@@ -186,6 +187,24 @@ public final class BoundSheetRecord extends StandardRecord {
field_2_option_flags = veryHiddenFlag.setBoolean(field_2_option_flags, veryHidden);
}

/**
* Is the sheet an Excel 4 macro sheet?
*
* @return {@code true} if very hidden
*/
public boolean isExcel4Macro() {
return xl4Flag.isSet(field_2_option_flags);
}

/**
* Is the sheet an Excel 4 macro sheet?
*
* @param xl4flag {@code true} if an excel 4 macro sheet
*/
public void setExcel4Macro(boolean xl4flag) {
field_2_option_flags = xl4Flag.setBoolean(field_2_option_flags, xl4flag);
}

/**
* Converts a List of {@link BoundSheetRecord}s to an array and sorts by the position of their
* BOFs.

+ 22
- 0
poi/src/test/java/org/apache/poi/hssf/eventusermodel/TestHSSFEventFactory.java Просмотреть файл

@@ -166,4 +166,26 @@ final class TestHSSFEventFactory {
Biff8EncryptionKey.setCurrentUserPassword(null);
}
}

@Test
void testXL4Workbook() throws Exception {
// This document has a single Excel 4 macro in it
openSample("66503.xls");
assertEquals(records.stream()
.filter(r -> r instanceof BoundSheetRecord)
.map(r -> (BoundSheetRecord)r)
.filter(BoundSheetRecord::isExcel4Macro)
.count(), 1);
}

@Test
void testXL4Workbook_false() throws Exception {
// This document does not have an Excel 4 macro in it
openSample("42844.xls");
assertEquals(records.stream()
.filter(r -> r instanceof BoundSheetRecord)
.map(r -> (BoundSheetRecord)r)
.filter(BoundSheetRecord::isExcel4Macro)
.count(), 0);
}
}

Двоичные данные
test-data/spreadsheet/66503.xls Просмотреть файл


Загрузка…
Отмена
Сохранить