JXL尝试在设置背景颜色时修改引用的格式

Ste*_*gas 3 java exception jxl

在尝试执行以下代码时:

Colour selectedColour = Colour.WHITE;
myWritableCellFormat.setBackground(selectedColour);
Run Code Online (Sandbox Code Playgroud)

我得到了这个例外:

jxl.write.biff.JxlWriteException: Attempt to modify a referenced format
Run Code Online (Sandbox Code Playgroud)

为什么是这样?作为参考,我在这两行之前使用了相同的对象来编写具有另一种颜色的单元格.这有什么重要意义吗?

小智 5

如果要更改不同单元格的颜色,则需要创建不同的WritableFont对象,并且必须传递给WritableCellFormat构造函数.

即每次需要为WritableFont,WritableCellFormat类创建新对象时.

WritableFont font = new WritableFont(WritableFont.createFont("Calibri"), 11);
WritableCellFormat format = new WritableCellFormat(font);
format.setBackground(Colour.LIGHT_GREEN, Pattern.SOLID);
Run Code Online (Sandbox Code Playgroud)