2010-05-07 1 views
3

Excel의 HSSF 셀에 주석을 추가해야합니다. 처음에는 모든 것이 잘 작동하지만 같은 파일을 열고 코드를 다시 실행하면 파일이 손상됩니다.Apache POI Comment Excel

나는 또한 내가 한 번만 시트에 그리기 개체를 만드는 데 필요한 것으로 나타났습니다 :

_sheet.createDrawingPatriarch를();

위의 행이 두 번 이상 실행되면 주석이 작동하지 않습니다.

누구나 파일을 닫고 파일을 다시 열고 다른 셀에 주석을 추가하려고하면 셀에 주석을 추가하려 했습니까?

아래 코드는 작동하지만 파일을 다시 열면 주석이 추가되지 않으며 파일이 손상됩니다 !!!

시트에서 기존 그리기 개체를 가져 오는 방법이 있습니까?

감사합니다. 감사!!

_drawing = (HSSFPatriarch) _sheet.createDrawingPatriarch(); 

Row row = _sheet.getRow(rowIndex_); 
Cell cell = row.getCell(0); 
CreationHelper factory = _workbook.getCreationHelper(); 

HSSFAnchor anchor = new HSSFClientAnchor(0, 0, 0, 0, (short)4, 2, (short)6, 5); 
     org.apache.poi.ss.usermodel.Comment comment = _drawing.createComment(anchor); 
RichTextString str = factory.createRichTextString("Hello, World "+rowIndex_); 
comment.setString(str); 

    cell.setCellComment(comment); 
+0

+1. 이 코드 샘플은 주석 작업에 필요한 모든 공백을 채 웁니다. 사이트 설명서의 예제가 작동하지 않습니다. 감사! – RMorrisey

답변

2

면책 조항 : 나는이와 특별한 경험이 없어했습니다.

그러나 그림에서 the Javadoc for createDrawingPatriarch()은 이전 그래픽 (주석이 그림 축복의 일부로 저장되어 있기 때문에 주석을 포함하여)을 파괴한다는 점에 유의합니다.

여전히이 comments in the documentation for getDrawingPatriarch() 주어진 다소 취약 할 수 있음을 보이지만,
HSSFPatriarch drawing = document.getDrawingPatriarch() 
if (drawing == null) 
    drawing = document.createDrawingPatriarch() 

나는 그것을 의심, 당신이 먼저하지 않는 경우 예를 들어, 그것을 만드는 문서가 그리기 족장을 가지고 있는지 여부를 확인 만 시도 귀하의 유스 케이스에 사용할 수 있습니다.

+0

그것은 정확히 WARNING이 말하는 것입니다. 두 번째로 파일을 저장할 때 저장된 이미지가 손상됩니다. 새 이미지 만 생성됩니다. 응답 해 주셔서 감사합니다. – Marquinio