mirror of https://github.com/apache/poi.git
Add flag for Excel 4 macros in composite documents
This commit is contained in:
parent
59b06fc126
commit
6340182c9e
|
@ -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.
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue