[bug-63268] fix issue where CellUtil.setFont is adding unnecessary styles

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1855806 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
PJ Fanning 2019-03-19 05:59:00 +00:00
parent edd1f4c75e
commit f2d9c1a927
2 changed files with 25 additions and 1 deletions

View File

@ -84,9 +84,12 @@ public final class CellUtil {
FILL_BACKGROUND_COLOR,
INDENTION,
DATA_FORMAT,
FONT,
ROTATION
)));
private static final Set<String> intValues = Collections.unmodifiableSet(
new HashSet<>(Arrays.asList(
FONT
)));
private static final Set<String> booleanValues = Collections.unmodifiableSet(
new HashSet<>(Arrays.asList(
LOCKED,
@ -369,6 +372,8 @@ public final class CellUtil {
for (final String key : src.keySet()) {
if (shortValues.contains(key)) {
dest.put(key, getShort(src, key));
} else if (intValues.contains(key)) {
dest.put(key, getInt(src, key));
} else if (booleanValues.contains(key)) {
dest.put(key, getBoolean(src, key));
} else if (borderTypeValues.contains(key)) {

View File

@ -378,4 +378,23 @@ public abstract class BaseTestCellUtil {
wb1.close();
}
/**
* bug 63268
* @since POI 4.1.0
*/
@Test
public void setFontShouldNotCreateDuplicateStyle() throws IOException {
Workbook wb1 = _testDataProvider.createWorkbook();
Cell c = wb1.createSheet().createRow(1).createCell(1);
Font f = wb1.createFont();
CellUtil.setFont(c, f);
int num1 = wb1.getNumCellStyles();
CellUtil.setFont(c, f);
int num2 = wb1.getNumCellStyles();
assertEquals(num1, num2);
wb1.close();
}
}