2015-11-28 2 views
0

Я пытаюсь создать текстовый документ с использованием формата XWPF в apache poi. документ требует создания таблиц, поэтому мне нужно настроить ориентацию страницы на альбомную. Я использовал существующий код Landscape and portrait pages in the same word document using Apache POI XWPF in Java и включил в него вызов функции после создания документа, , но его выброс нулевого указателя. может ли кто-нибудь помочь мне в этом. благодарим вас заранее. я использовал следующий код:Невозможно изменить ориентацию файла ms-word (XWPF) с помощью apache poi

private void changeOrientation(XWPFDocument document, String orientation){ 
    CTDocument1 doc = document.getDocument(); 
    CTBody body = doc.getBody(); 
    CTSectPr section = body.addNewSectPr(); 
    XWPFParagraph para = document.createParagraph(); 
    CTP ctp = para.getCTP(); 
    CTPPr br = ctp.addNewPPr(); 
    br.setSectPr(section); 
    CTPageSz pageSize = section.getPgSz(); 
    if(orientation.equals("landscape")){ 
     pageSize.setOrient(STPageOrientation.LANDSCAPE); 
     pageSize.setW(BigInteger.valueOf(842 * 20)); 
     pageSize.setH(BigInteger.valueOf(595 * 20)); 
    } 
    else{ 
     pageSize.setOrient(STPageOrientation.PORTRAIT); 
     pageSize.setH(BigInteger.valueOf(842 * 20)); 
     pageSize.setW(BigInteger.valueOf(595 * 20)); 
    } 
} 

Сво метательные ошибку на линии:

pageSize.setOrient(STPageOrientation.LANDSCAPE); 
+0

Какая линия дает NPE? Это очень сложно исправить, если мы не знаем, откуда оно взялось! – Gagravarr

+0

@Gagravarr Я включил линию, где я получал ошибку! , пожалуйста, помогите мне !! –

ответ

1

Не все разделы будут иметь объект Размер страницы установите на них. Вы должны проверить, если кто-то там, и добавить его, если нет, то перед тем, как задать ориентацию для него

Итак, вы должны изменить строку

CTPageSz pageSize = section.getPgSz(); 

Чтобы вместо этого

CTPageSz pageSize; 
    if (section.isSetPgSz()) { 
     pageSize = section.getPgSz(); 
    } else { 
     pageSize = section.addNewPgSz(); 
    } 

И затем продолжайте свои звонки, как

pageSize.setOrient(STPageOrientation.LANDSCAPE); 
+0

спасибо товарищу !! это сработало. ценить это. –

+0

Отлично, рад, что помог! Чтобы другие знали, нажмите на отметку на вопросе, чтобы «принять» ее, чтобы отметить ее как правильную – Gagravarr

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