Author: fanningpj
Date: Wed Mar 12 14:53:23 2025
New Revision: 1924335
URL: http://svn.apache.org/viewvc?rev=1924335&view=rev
Log:
add arbitrary extra width support to XSSFSheet
Modified:
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFSheet.java
Modified:
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java?rev=1924335&r1=1924334&r2=1924335&view=diff
==============================================================================
---
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
(original)
+++
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
Wed Mar 12 14:53:23 2025
@@ -104,6 +104,7 @@ public class XSSFSheet extends POIXMLDoc
private final XSSFDataValidationHelper dataValidationHelper;
private XSSFVMLDrawing xssfvmlDrawing;
private CellRangeAddress dimensionOverride;
+ private double arbitraryExtraWidth = 0.0;
/**
* Creates new XSSFSheet - called by XSSFWorkbook to create a sheet from
scratch.
@@ -498,6 +499,7 @@ public class XSSFSheet extends POIXMLDoc
if (width != -1) {
width *= 256;
+ width += arbitraryExtraWidth;
int maxColumnWidth = 255*256; // The maximum column width for an
individual cell is 255 characters
if (width > maxColumnWidth) {
width = maxColumnWidth;
@@ -508,6 +510,30 @@ public class XSSFSheet extends POIXMLDoc
}
/**
+ * Set the extra width added to the best-fit column width (default 0.0).
+ * <p>
+ * Only applied to auto-sized columns.
+ * </p>
+ * @param arbitraryExtraWidth the extra width added to the best-fit column
width
+ * @since 5.4.1
+ */
+ public void setArbitraryExtraWidth(final double arbitraryExtraWidth) {
+ this.arbitraryExtraWidth = arbitraryExtraWidth;
+ }
+
+ /**
+ * Get the extra width added to the best-fit column width.
+ * <p>
+ * Only applied to auto-sized columns.
+ * </p>
+ * @return the extra width added to the best-fit column width
+ * @since 5.4.0
+ */
+ public double getArbitraryExtraWidth() {
+ return arbitraryExtraWidth;
+ }
+
+ /**
* Return the sheet's existing drawing, or null if there isn't yet one.
*
* Use {@link #createDrawingPatriarch()} to get or create
Modified:
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFSheet.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFSheet.java?rev=1924335&r1=1924334&r2=1924335&view=diff
==============================================================================
---
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFSheet.java
(original)
+++
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFSheet.java
Wed Mar 12 14:53:23 2025
@@ -241,6 +241,26 @@ public final class TestXSSFSheet extends
}
}
+ @Test
+ void autoSizeColumnWithArbitraryExtraWidth() throws IOException {
+ try (XSSFWorkbook workbook = new XSSFWorkbook()) {
+ XSSFSheet sheet = workbook.createSheet("Sheet 1");
+ XSSFCell cell = sheet.createRow(0).createCell(13);
+ cell.setCellValue("test");
+ sheet.autoSizeColumn(13);
+ final int size1 = sheet.getColumnWidth(13);
+
+ sheet.setArbitraryExtraWidth(10.0);
+ sheet.autoSizeColumn(13);
+ final int size2 = sheet.getColumnWidth(13);
+
+ assertEquals(size1 + 10, size2);
+
+ ColumnHelper columnHelper = sheet.getColumnHelper();
+ CTCol col = columnHelper.getColumn(13, false);
+ assertTrue(col.getBestFit());
+ }
+ }
@Test
void setCellComment() throws IOException {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]