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。