Author: fanningpj
Date: Wed Aug 21 11:35:20 2024
New Revision: 1920107
URL: http://svn.apache.org/viewvc?rev=1920107&view=rev
Log:
[github-657] SXSSF: support setting an arbitrary extra width value for column
widths
Modified:
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/AutoSizeColumnTracker.java
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFSheet.java
Modified:
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/AutoSizeColumnTracker.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/AutoSizeColumnTracker.java?rev=1920107&r1=1920106&r2=1920107&view=diff
==============================================================================
---
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/AutoSizeColumnTracker.java
(original)
+++
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/AutoSizeColumnTracker.java
Wed Aug 21 11:35:20 2024
@@ -60,6 +60,8 @@ import org.apache.poi.util.Internal;
// Using a HashSet instead of a TreeSet because we don't care about order.
private final Set<Integer> untrackedColumns = new HashSet<>();
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
@@ -116,7 +118,27 @@ import org.apache.poi.util.Internal;
// If sheet needs to be saved, use a java.lang.ref.WeakReference to
avoid garbage collector gridlock.
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.
* 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
*/
private void updateColumnWidth(final Cell cell, final ColumnWidthPair
pair) {
- final double unmergedWidth = SheetUtil.getCellWidth(cell,
defaultCharWidth, dataFormatter, false);
- final double mergedWidth = SheetUtil.getCellWidth(cell,
defaultCharWidth, dataFormatter, true);
+ final double unmergedWidth =
+ SheetUtil.getCellWidth(cell, defaultCharWidth, dataFormatter,
false) + arbitraryExtraWidth;
+ final double mergedWidth =
+ SheetUtil.getCellWidth(cell, defaultCharWidth, dataFormatter,
true) + arbitraryExtraWidth;
pair.setMaxColumnWidths(unmergedWidth, mergedWidth);
}
}
Modified:
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFSheet.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFSheet.java?rev=1920107&r1=1920106&r2=1920107&view=diff
==============================================================================
---
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFSheet.java
(original)
+++
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFSheet.java
Wed Aug 21 11:35:20 2024
@@ -379,7 +379,6 @@ public class SXSSFSheet implements Sheet
_sh.setDefaultRowHeightInPoints(height);
}
-
/**
* Get VML drawing for this sheet (aka 'legacy' drawing).
*
@@ -1452,6 +1451,33 @@ public class SXSSFSheet implements Sheet
_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.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]