mirror of https://github.com/apache/poi.git
[github-657] SXSSF: support setting an arbitrary extra width value for column widths
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1920107 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
f33b2cbd51
commit
41453f3916
|
@ -60,6 +60,8 @@ import org.apache.poi.util.Internal;
|
||||||
// Using a HashSet instead of a TreeSet because we don't care about order.
|
// Using a HashSet instead of a TreeSet because we don't care about order.
|
||||||
private final Set<Integer> untrackedColumns = new HashSet<>();
|
private final Set<Integer> untrackedColumns = new HashSet<>();
|
||||||
private boolean trackAllColumns;
|
private boolean trackAllColumns;
|
||||||
|
// arbitraryExtraWidth is the extra width added to the best-fit column width (since POI 5.3.1)
|
||||||
|
private double arbitraryExtraWidth = 0.0d;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tuple to store the column widths considering and not considering merged cells
|
* Tuple to store the column widths considering and not considering merged cells
|
||||||
|
@ -117,6 +119,26 @@ import org.apache.poi.util.Internal;
|
||||||
defaultCharWidth = SheetUtil.getDefaultCharWidthAsFloat(sheet.getWorkbook());
|
defaultCharWidth = SheetUtil.getDefaultCharWidthAsFloat(sheet.getWorkbook());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the extra width added to the best-fit column width (default 0.0).
|
||||||
|
*
|
||||||
|
* @param arbitraryExtraWidth the extra width added to the best-fit column width
|
||||||
|
* @since 5.3.1
|
||||||
|
*/
|
||||||
|
public void setArbitraryExtraWidth(final double arbitraryExtraWidth) {
|
||||||
|
this.arbitraryExtraWidth = arbitraryExtraWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the extra width added to the best-fit column width.
|
||||||
|
*
|
||||||
|
* @return the extra width added to the best-fit column width
|
||||||
|
* @since 5.3.1
|
||||||
|
*/
|
||||||
|
public double getArbitraryExtraWidth() {
|
||||||
|
return arbitraryExtraWidth;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the currently tracked columns, naturally ordered.
|
* Get the currently tracked columns, naturally ordered.
|
||||||
* Note if all columns are tracked, this will only return the columns that have been explicitly or implicitly tracked,
|
* Note if all columns are tracked, this will only return the columns that have been explicitly or implicitly tracked,
|
||||||
|
@ -369,8 +391,10 @@ import org.apache.poi.util.Internal;
|
||||||
* @since 3.14beta1
|
* @since 3.14beta1
|
||||||
*/
|
*/
|
||||||
private void updateColumnWidth(final Cell cell, final ColumnWidthPair pair) {
|
private void updateColumnWidth(final Cell cell, final ColumnWidthPair pair) {
|
||||||
final double unmergedWidth = SheetUtil.getCellWidth(cell, defaultCharWidth, dataFormatter, false);
|
final double unmergedWidth =
|
||||||
final double mergedWidth = SheetUtil.getCellWidth(cell, defaultCharWidth, dataFormatter, true);
|
SheetUtil.getCellWidth(cell, defaultCharWidth, dataFormatter, false) + arbitraryExtraWidth;
|
||||||
|
final double mergedWidth =
|
||||||
|
SheetUtil.getCellWidth(cell, defaultCharWidth, dataFormatter, true) + arbitraryExtraWidth;
|
||||||
pair.setMaxColumnWidths(unmergedWidth, mergedWidth);
|
pair.setMaxColumnWidths(unmergedWidth, mergedWidth);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -379,7 +379,6 @@ public class SXSSFSheet implements Sheet, OoxmlSheetExtensions {
|
||||||
_sh.setDefaultRowHeightInPoints(height);
|
_sh.setDefaultRowHeightInPoints(height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get VML drawing for this sheet (aka 'legacy' drawing).
|
* Get VML drawing for this sheet (aka 'legacy' drawing).
|
||||||
*
|
*
|
||||||
|
@ -1452,6 +1451,33 @@ public class SXSSFSheet implements Sheet, OoxmlSheetExtensions {
|
||||||
_sh.setDefaultColumnStyle(column, style);
|
_sh.setDefaultColumnStyle(column, style);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the extra width added to the best-fit column width (default 0.0).
|
||||||
|
*
|
||||||
|
* @param arbitraryExtraWidth the extra width added to the best-fit column width
|
||||||
|
* @throws IllegalStateException if autoSizeColumnTracker failed to initialize (possibly due to fonts not being installed in your OS)
|
||||||
|
* @since 5.3.1
|
||||||
|
*/
|
||||||
|
public void setArbitraryExtraWidth(final double arbitraryExtraWidth) {
|
||||||
|
if (_autoSizeColumnTracker == null) {
|
||||||
|
throw new IllegalStateException("Cannot trackColumnForAutoSizing because autoSizeColumnTracker failed to initialize (possibly due to fonts not being installed in your OS)");
|
||||||
|
}
|
||||||
|
_autoSizeColumnTracker.setArbitraryExtraWidth(arbitraryExtraWidth);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the extra width added to the best-fit column width.
|
||||||
|
*
|
||||||
|
* @return the extra width added to the best-fit column width
|
||||||
|
* @throws IllegalStateException if autoSizeColumnTracker failed to initialize (possibly due to fonts not being installed in your OS)
|
||||||
|
* @since 5.3.1
|
||||||
|
*/
|
||||||
|
public double getArbitraryExtraWidth() {
|
||||||
|
if (_autoSizeColumnTracker == null) {
|
||||||
|
throw new IllegalStateException("Cannot trackColumnForAutoSizing because autoSizeColumnTracker failed to initialize (possibly due to fonts not being installed in your OS)");
|
||||||
|
}
|
||||||
|
return _autoSizeColumnTracker.getArbitraryExtraWidth();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Track a column in the sheet for auto-sizing.
|
* Track a column in the sheet for auto-sizing.
|
||||||
|
|
Loading…
Reference in New Issue