【问题标题】:Jxl cell alignmentJxl 单元格对齐
【发布时间】:2019-08-26 23:31:53
【问题描述】:

我想知道如何为 jxl 库中的单元格设置对齐方式,它的默认对齐方式是底部,当我为 WritableCellFormat 设置对齐方式时,它会抛出这个异常:

jxl.write.biff.JxlWriteException: Attempt to modify a referenced format

我这样设置对齐方式:

WritableFont tahomaboldpt = new WritableFont(WritableFont.TAHOMA, 10,WritableFont.BOLD);
tahomaBold = new WritableCellFormat(tahomaboldpt);
tahomaBold.setAlignment(Alignment.CENTRE);

这会在第三行抛出异常。在此先感谢

【问题讨论】:

    标签: java android excel alignment jxl


    【解决方案1】:

    当您想在电子表格中创建或添加指定格式的单元格时,您需要创建一个 WritableCellFormat 对象并将其作为参数传递。

    第 1 步: 您可以从另一个单元格读取格式(就像下面的代码或自己创建一个新的),然后创建一个 WritableCellFormat 对象[newFormat object in below code]

    第 2 步: 添加您想要的所有格式,例如背景、边框、对齐方式等,如下面的代码所示。

    WritableCellFormat newFormat = null;
    WritableSheet sheet = workbook.getSheet(0);
    Cell readCell = sheet.getCell(column, row); //read format from another cell(if you want to copy its existing properties otherwise you can ignore).
    WritableCellFormat cellFormatObj = new WritableCellFormat(
                        noBoldFont);
    CellFormat readFormat = readCell.getCellFormat() == null ? cellFormatObj
                        : readCell.getCellFormat();
    newFormat = new WritableCellFormat(readFormat);
    newFormat.setBackground(Colour.WHITE);
    newFormat.setBorder(jxl.format.Border.BOTTOM,jxl.format.BorderLineStyle.THIN);
    newFormat.setAlignment(Alignment.CENTRE);
    

    第 3 步: 当您创建新单元格(或在 excel 中添加具有特定格式的单元格)时,将格式添加为参数。 newFormat(WritableCellFormat objectT) 将是您要设置的新格式。

    WritableSheet s = workbook.getSheet(0);
     //column, row , where you wan the new format , note newFormat is passed as parameter.
    s.addCell(new Label(column, row, request.getRuleId(), copyCellFormat(s, column,
                        newFormat))); 
    

    上述操作所需的进口。

    import jxl.Cell;
    import jxl.Workbook;
    import jxl.format.Alignment;
    import jxl.format.CellFormat;
    import jxl.format.Colour;
    import jxl.format.VerticalAlignment;
    import jxl.write.Label;
    import jxl.write.WritableCellFormat;
    import jxl.write.WritableFont;
    import jxl.write.WritableSheet;
    import jxl.write.WritableWorkbook;
    

    【讨论】:

    【解决方案2】:

    注意!如http://jexcelapi.sourceforge.net/resources/javadocs/current/docs/ 中所述,不推荐使用对齐类。所以,静态访问如下:

    format.setAlignment(Alignment.CENTRE);
    

    Alignment 类自动位于包jxl.write.Alignment 中,但这是不允许的。因此,在单元格中对齐文本的正确方法是使用 jxl 包jxl.format.Alignment。这样我们就可以写:

    format = new WritableCellFormat(); 
    format.setAlignment(Alignment.CENTRE);
    

    问候。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-20
      • 2020-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多