Проблема в том, что List<XWPFTableCell> cell = rows.get(0).getTableCells();
возвращает вновь созданный список, XWPFTableRow.getTableCells () говорит:
создает и возвращает список всех XWPFTableCell, которые принадлежат этой строке
И комментарии, конечно, лгут, а код - нет, поэтому sources говорят:
public List<XWPFTableCell> getTableCells(){
if(tableCells == null){
//Here it is created
List<XWPFTableCell> cells = new ArrayList<XWPFTableCell>();
for (CTTc tableCell : ctRow.getTcList()) {
cells.add(new XWPFTableCell(tableCell, this, table.getPart()));
}
this.tableCells = cells;
}
return tableCells;
}
И для вашей помощи есть XWPFTableRow.getTableCell (ячейка CTTc) , где вы передаете ячейку CTTc
, и метод определенно возвращает существующий объект:
public XWPFTableCell getTableCell(CTTc cell) {
for(int i=0; i<tableCells.size(); i++){
if(tableCells.get(i).getCTTc() == cell) return tableCells.get(i);
}
return null;
}
Вы можете получить ячейку CTTc, вызвав XWPFTableCell.getCTTc () и затем измените его напрямую.
Код для прямого доступа к существующей ячейке будет выглядеть следующим образом:
XWPFTableCell cell =
rows.getTableCell(rows.get(0).getTableCells().get(3).getCTTc());
Я не пробовал или не компилировал этот код, поэтому я не уверен, что онправильно, но я доверяю своим знаниям и источникам ОО.Конечно, это должно сделать это.Если да - исправьте код, чтобы убедиться, что он правильный и компилируемый.
FTR, я думаю, что должен быть более удобный способ сделать это, довольно часто редактировать ячейки, и я думаю, что это должноНе будь таким сложным, я бы предложил попробовать некоторые учебники по XWPFTable и его манипуляциям.