2013-12-04 2 views
2

я хочу знать, как я могу установить выравнивание для ячейки в JXL библиотеки, это выравнивание по умолчанию нижнее и когда я установить выравнивание для WritableCellFormat он бросает мне это исключение:JXL выравнивание ячейки

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); 

это бросает мне исключение в третьем line.Thanks в Advance

ответ

3

Вы должны создать объект WritableCellFormat и передать его в качестве аргумента, Whe n вы хотите создать или добавить ячейку в электронную таблицу с указанным форматом.

Шаг 1: вы можете прочитать формат из другой ячейки (так же, как приведенный ниже код или создать новый по своему усмотрению), а затем создать WritableCellFormat Object [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), добавьте формат в качестве параметра. newFormat (WritableCellFormat objecT) будет новый формат, который вы хотите установить.

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; 
+0

Вот отличный учебник: [*** Будь кодер: ** Как выравнивать текст по горизонтали в ячейках Excel *] (http://bethecoder.com/applications/tutorials/excel/jexcel-api/how- чтобы выровнять-текст горизонтально-в-первенствовать-cells.html). –

0

Внимание! Как указано в 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); 

Reguards.

Смежные вопросы