我想知道如何在jxl库中为单元格设置对齐方式,它的默认对齐方式是bottom,当我为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);
这让我在第三行遇到异常。提前谢谢
最佳答案
如果要在电子表格中创建或添加具有指定格式的单元格,则需要创建一个WritableCellFormat对象并将其作为参数传递。
步骤1:
您可以从另一个单元格读取格式(就像下面的代码或自己创建一个新的),然后创建一个可写的CellFormat对象[下面代码中的newFormat对象]
步骤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中添加具有特定格式的单元格)时,请将格式作为参数添加。
new format(writeablecellformat对象)将是要设置的新格式。
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;