|
|
|
@ -1,6 +1,7 @@
|
|
|
|
|
package com.alibaba.excel.util; |
|
|
|
|
|
|
|
|
|
import com.alibaba.excel.exception.ExcelRuntimeException; |
|
|
|
|
|
|
|
|
|
import org.apache.poi.hssf.record.RowRecord; |
|
|
|
|
import org.apache.poi.hssf.usermodel.HSSFRow; |
|
|
|
|
import org.apache.poi.ss.usermodel.Row; |
|
|
|
@ -22,7 +23,7 @@ public class PoiUtils {
|
|
|
|
|
*/ |
|
|
|
|
public static final BitField CUSTOM_HEIGHT = BitFieldFactory.getInstance(0x640); |
|
|
|
|
|
|
|
|
|
private static Field ROW_RECORD_FIELD; |
|
|
|
|
private static final Field ROW_RECORD_FIELD = FieldUtils.getField(HSSFRow.class, "row", true); |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Whether to customize the height |
|
|
|
@ -32,30 +33,17 @@ public class PoiUtils {
|
|
|
|
|
*/ |
|
|
|
|
public static boolean customHeight(Row row) { |
|
|
|
|
if (row instanceof XSSFRow) { |
|
|
|
|
XSSFRow xssfRow = (XSSFRow) row; |
|
|
|
|
XSSFRow xssfRow = (XSSFRow)row; |
|
|
|
|
return xssfRow.getCTRow().getCustomHeight(); |
|
|
|
|
} |
|
|
|
|
if (row instanceof HSSFRow) { |
|
|
|
|
HSSFRow hssfRow = (HSSFRow) row; |
|
|
|
|
HSSFRow hssfRow = (HSSFRow)row; |
|
|
|
|
try { |
|
|
|
|
if (ROW_RECORD_FIELD == null) { |
|
|
|
|
initRowRecordField(); |
|
|
|
|
} |
|
|
|
|
RowRecord record = (RowRecord) ROW_RECORD_FIELD.get(hssfRow); |
|
|
|
|
RowRecord record = (RowRecord)ROW_RECORD_FIELD.get(hssfRow); |
|
|
|
|
return CUSTOM_HEIGHT.getValue(record.getOptionFlags()) == 1; |
|
|
|
|
} catch (IllegalAccessException ignore) { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static void initRowRecordField() { |
|
|
|
|
try { |
|
|
|
|
ROW_RECORD_FIELD = HSSFRow.class.getDeclaredField("row"); |
|
|
|
|
ROW_RECORD_FIELD.setAccessible(true); |
|
|
|
|
} catch (NoSuchFieldException e) { |
|
|
|
|
throw new ExcelRuntimeException(e); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|