Изменение существующего excel с использованием jxl

Я не могу редактировать существующий лист excel с помощью jxl. Он всегда создает новый. Может кто-нибудь, пожалуйста, помогите мне с этим. Пожалуйста, дайте небольшой пример кода.

Ответы

Ответ 1

jxl предназначен для повышения эффективности чтения (поскольку это основное использование API). Чтобы повысить производительность, данные, относящиеся к выходной информации (например, вся информация форматирования, такая как шрифты), не интерпретируются при чтении электронной таблицы, поскольку это является излишним при опросе значений необработанных данных.

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

Workbook workbook = Workbook.getWorkbook(new File("myfile.xls"));
WritableWorkbook copy = Workbook.createWorkbook(new File("temp.xls"), workbook);

Это копирует информацию, которая уже была прочитана, а также выполняет дополнительную обработку для интерпретации полей, необходимых для написания электронных таблиц. Недостатком этой стратегии, оптимизированной для чтения, является то, что у нас есть две таблицы, хранящиеся в памяти, а не только одна, что удваивает требования к памяти.

Но после этого вы можете делать все, что хотите. Как:

WritableSheet sheet2 = copy.getSheet(1); 
WritableCell cell = sheet2.getWritableCell(1, 2); 

if (cell.getType() == CellType.LABEL) 
{ 
  Label l = (Label) cell; 
  l.setString("modified cell"); 
}
copy.write(); 
copy.close();
workbook.close();

Примечание: это непосредственно взято из учебная страница Энди Хана.

Ответ 2

Я знаю, что это довольно старый вопрос, но если кто-то столкнется с той же проблемой, то сохранить правильное форматирование (тип шрифта, раскраска и т.д.), вы должны сохранить формат ячейки, прежде чем бросать ее в Label, а затем принудительно привязать ячейку к предыдущему форматированию. Код:

CellFormat cfm = cell.getCellFormat();
Label l = (Label) cell; 
l.setString("modified cell");
cell.setCellFormat(cfm);

Ответ 3

//there is god example of it, you can copy in ur project and check it out, to 
//understand how  it works

Workbook wk = Workbook.getWorkbook(new File("ex.xls"));
// 
WritableWorkbook wkr = Workbook.createWorkbook(new File("modifed.xls"), wk);
/* second line makes copy of wk excel file object /creates a readable spreadsheet.
both are now similar and i can Modify exiting wkr spreadsheets */



 //next 2 line retrieve sheet number 0  and cell (1,1)


 WritableSheet getsht = wkr.getSheet(0);
 WritableCell getcl = getsht.getWritableCell(1, 1);


 //making own font 

WritableFont ft = new WritableFont(WritableFont.ARIAL, 20 , WritableFont.BOLD, true , UnderlineStyle.SINGLE); 
//making Format, which uses font
WritableCellFormat   form   =   new WritableCellFormat( ft);

Number nb = ( Number ) getcl ;          
nb.setCellFormat( form );    


wkr.write();
wkr.close();