Jxl细胞alignment
我想知道如何设置单元格在jxl库中的alignment,它的默认alignment是底部,当我设置alignment的WritableCellFormat
它引发我这个exception:
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);
这在第三行抛出exception。感谢提前
您需要创build一个WritableCellFormat对象,并将其作为parameter passing,以在指定格式的电子表格中创build或添加单元格。
第一步:您可以从另一个单元格读取格式(就像下面的代码一样,或者自己创build一个新的格式),然后在下面的代码中创build一个WritableCellFormat对象[newFormat对象]
第2步:添加所有格式你想要的例子背景,边界,alignment等,如下面的代码所示。
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);
第三步:当你创build一个新的单元格(或者在Excel中添加一个特定格式的单元格)时,添加格式作为参数。 newFormat(WritableCellFormat对象)将会设置你想要的新格式。
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。
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;
注意! 正如http://jexcelapi.sourceforge.net/resources/javadocs/current/docs/中所报告的,alignment类已被弃用。 那么,静态访问如下:
format.setAlignment(Alignment.CENTRE);
类Alignment
自动位于包jxl.write.Alignment
,但不允许。 所以,纠正一个单元格中的文本是使用jxl包jxl.format.Alignment
。 这样我们可以写:
format = new WritableCellFormat(); format.setAlignment(Alignment.CENTRE);
Reguards。