相关疑难解决方法(0)

在Apache POI中设置列宽

我正在使用Apache POI API编写一个Java工具,将XML转换为MS Excel.在我的XML输入中,我以磅为单位接收列宽.但Apache POI API有一个稍微奇怪的逻辑,用于根据字体大小等设置列宽(请参阅API文档)

是否存在将点转换为Excel预期宽度的公式?有没有人这样做过?

setRowHeightInPoints()虽然有一种方法:(但没有列.

PS:输入XML是ExcelML格式,我必须转换为MS Excel.

excel apache-poi

55
推荐指数
3
解决办法
10万
查看次数

Apache POI autoSizeColumn调整为最小宽度

使用公式的值时,我很难让列正确地自动调整大小.

我通过创建一个具有最大值作为常量字符串值的隐藏行来"解决"这个问题,但这远非优雅,并且通常需要评估每个单元格中的公式以获取生成的最大字符串.虽然这种小型电子表格适用于这种情况,但对于大约16列x~6000行的纸张来说,它变得非常不切实际.

以下代码在OpenOffice中呈现.

package com.shagie.poipoc;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import java.io.FileOutputStream;

public class SimpleBug {
    public static void main(String[] args) {
        try {

            Workbook wb = new HSSFWorkbook();
            FileOutputStream fileOut = new FileOutputStream("workbook.xls");
            Sheet sheet = wb.createSheet("new sheet");

            Row row = sheet.createRow(0);
            CellStyle style = wb.createCellStyle();
            style.setDataFormat(wb.createDataFormat().getFormat("[h]:mm"));
            Cell cell = row.createCell(0);
            cell.setCellValue(123.12);
            cell.setCellStyle(style);

            row.createCell(1).setCellFormula("A1");

            row.createCell(2)
              .setCellFormula("TRUNC(A1) & \"d \" & TRUNC(24 * MOD(A1,1))" +
              " & \"h \" & TRUNC(MOD(60 * 24 * MOD(A1,1),60)) & \"m\"");

            row.createCell(3).setCellValue("foo");

            for(int i = …
Run Code Online (Sandbox Code Playgroud)

java excel apache-poi

9
推荐指数
1
解决办法
1万
查看次数

Apache POI autoSizeColumn()无法正常工作

我正在创建一个程序,使用apache poi将信息写入excel文件.在我将所有数据输入文件后,我在文件的每一列上调用autoSizeColumn方法.但它会将列调整为输入的最后一个单元格的宽度,这有时不会像列中的其他单元格那么大.我知道我正在使用它,不幸的是我现在没有互联网发布任何代码,但我会尽快更新.

好的,我希望我正在使用代码标签,但在这里它是:

public void writeFile() {
    Workbook wb = new HSSFWorkbook();
    Sheet s = wb.createSheet();
    try {

        FileOutputStream out = new FileOutputStream(
                this.getSelectedFile());
        // create a new workbook

        // create a new sheet

        // declare a row object reference
        Row r = null;
        // declare a cell object reference
        Cell c = null;
        // in case of plain ascii
        wb.setSheetName(0, "Street Light Report");
        // create a sheet with 30 rows (0-29)
        // int rownum;
        // short rownum;
        // PrintWriter …
Run Code Online (Sandbox Code Playgroud)

java apache excel apache-poi

8
推荐指数
2
解决办法
3万
查看次数

自动宽度不适用于合并列

{
row=sheet.createRow(0);
cell=row.createCell(0);
cell.setCellValue("header");
cell=row.createCell(1);
sheet.addMergedRegion(new CellRangeAddress(0,0,0,1));
row=sheet.createRow(1);
cell=row.createCell(0);
cell.setCellValue("Keys");
cell=row.createCell(1);
cell=row.setCellValue("Values");
row=sheet.createRow(2);
cell=row.createCell(0);
cell.setCellValue("No data");
cell=row.createCell(1);
sheet.addMergedRegion(new CellRangeAddress(1,1,0,1);
sheet.autoSizeColumn(0);
}
Run Code Online (Sandbox Code Playgroud)

当我合并两行第0行时,autosize正在工作,但在合并第二行的两列后,自动调整大小不起作用..提前感谢...

apache-poi

5
推荐指数
1
解决办法
2994
查看次数

在Linux(Servicemix)下运行时在工作表上调用autoSizeColumn时崩溃

我编写了生成excel的模块,并在Servicemix下部署了它.在Windows环境中一切都很好,但在Linux Servicemix下意外崩溃后跟随调用:

    for (short i=0;i<=3;i++) {
        log.trace("AutoSize column {}", i);
        worksheet.autoSizeColumn(i);
    }
Run Code Online (Sandbox Code Playgroud)

我正在使用POI版本4.2-FINAL,FuseESB 4.2,Java 5.0.但是,没有hs_err*.pid文件.Servicemix日志在第一次autoSizeColumn调用结束.

有没有人遇到过这种行为并且知道它是如何引起的以及如何绕过这个?

java linux crash apache-poi apache-servicemix

4
推荐指数
1
解决办法
2687
查看次数

如何在apache POI中自动调整excel中的列

我正在使用apache poi创建一个excel文件,生成excel但我无法根据单元格值调整列我发布代码到目前为止我所做的

这就是我在excel中创建标题的方法

HSSFWorkbook wb = new HSSFWorkbook();
        HSSFSheet sheet = wb.createSheet();
        sheet.protectSheet("password");
        sheet.autoSizeColumn(15);
        HSSFFont hSSFFont = wb.createFont();
        hSSFFont.setFontName(HSSFFont.FONT_ARIAL);
        hSSFFont.setFontHeightInPoints((short) 8);

        CellStyle style = wb.createCellStyle();
        /* cell style for locking */
        CellStyle lockedCellStyle = wb.createCellStyle();
        lockedCellStyle.setLocked(true);

        HSSFRow row = null;

        HSSFCell cell = null;

        row = sheet.createRow(0);
        int headercolumnNo = 0;



        //1st Column Header for Indicator
        cell = row.createCell(headercolumnNo);
        cell.setCellValue(new HSSFRichTextString(listOfActiveCarrierUserHeader.get(0)));
        style.setWrapText(true);
        style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex());
        style.setFont(hSSFFont);
        style.setFillPattern(CellStyle.SOLID_FOREGROUND);
        cell.setCellStyle(style);
        headercolumnNo = 1;

        cell = row.createCell(headercolumnNo);  //2nd Column Header for Firstname
        cell.setCellValue(new HSSFRichTextString(listOfActiveCarrierUserHeader.get(1)));
        style.setWrapText(true); …
Run Code Online (Sandbox Code Playgroud)

java excel apache-poi

3
推荐指数
1
解决办法
2万
查看次数

标签 统计

apache-poi ×6

excel ×4

java ×4

apache ×1

apache-servicemix ×1

crash ×1

linux ×1