Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用poi自动调整列宽_Java_Excel_Apache Poi - Fatal编程技术网

Java 使用poi自动调整列宽

Java 使用poi自动调整列宽,java,excel,apache-poi,Java,Excel,Apache Poi,我正在使用POI将数据附加到现有excel。但在添加数据时,编辑之前已经存在的excel标题会压缩到小区域。有人能告诉我如何避免这种情况吗?我甚至在添加数据后应用了autoSize,但没有任何用处 FileInputStream inputStream = new FileInputStream(new File("dataexcel.xlsx")); XSSFWorkbook workbook = new XSSFWorkbook(intputStream); XSSFShe

我正在使用
POI
将数据附加到现有excel。但在添加数据时,编辑之前已经存在的excel标题会压缩到小区域。有人能告诉我如何避免这种情况吗?我甚至在添加数据后应用了
autoSize
,但没有任何用处

FileInputStream inputStream = new FileInputStream(new File("dataexcel.xlsx"));

    XSSFWorkbook workbook = new XSSFWorkbook(intputStream);
    XSSFSheet sheet = workbook.getSheetAt(0);
    int rowNum = sheet.getPhysicalNumberOfRows();

                    int cellNum = 1;
                    Row lastRow = sheet.createRow(rowNum);

    for(int i =0 ; i<7; i++)
    {
                    Cell cell = lastRow.createCell(cellNum++);
                    cell.setCellValue(value);
                    cell.setCellStyle(generalStyle);
    }
FileInputStream-inputStream=newfileinputstream(新文件(“dataexcel.xlsx”);
XSSF工作簿=新XSSF工作簿(intputStream);
XSSFSheet sheet=workbook.getSheetAt(0);
int rowNum=sheet.getPhysicalNumberOfRows();
int-cellNum=1;
Row lastRow=sheet.createRow(rowNum);
对于(int i=0;i使用
autoSizeColumn()
方法

下面是你的工作表的例子

+----------+----------+----------+-------------+
| Column A | Column B | Column C | Column D    |
+----------+----------+----------+-------------+
|   xxx    |    xxx   |This is very long text  |
|          |          |          |             |
+----------+----------+----------+-------------+
如果是这样,请为
列c
工作表自动调整列大小(2);
。结果将为

+----------+----------+------------------------+-------------+
| Column A | Column B | Column C               | Column D    |
+----------+----------+------------------------+-------------+
|   xxx    |    xxx   |This is very long text                |
|          |          |                        |             |
+----------+----------+------------------------+-------------+

我相信这是Apache POI 3.9及更早版本中的一个已知问题。问题是POI将列宽设置为0。请尝试更新到POI 3.10,看看这是否解决了您的问题


更多信息请访问POI 4.0:尝试调用
sheet.autoSizeColumn(*)
调用所有
createCell
方法后。

我在问题中已经提到,我使用了autosizeColumn,但不起作用。谢谢。关于此问题的任何更新。我正在使用3.10,但它不起作用。这可能是问题所在,让我更新到3.10并检查一下。谢谢