views:

44

answers:

1

Hi to all,

          i want to set comments for 3 excel cells using apache poi.

This is my source code...

import java.io.; import org.apache.poi.hssf.usermodel.; import org.apache.poi.hssf.util.HSSFColor;

public class CellComments { public static void main(String[] args) throws IOException {

      HSSFWorkbook wb = new HSSFWorkbook();
      HSSFSheet sheet = wb.createSheet("Cell comments in POI HSSF");


      HSSFPatriarch patr = sheet.createDrawingPatriarch();
      HSSFCell cell1 = sheet.createRow(3).createCell((short)1);
      cell1.setCellValue(new HSSFRichTextString("Hello, World"));

      //anchor defines size and position of the comment in worksheet
      HSSFComment comment1 = patr.createComment(new HSSFClientAnchor(100, 100, 100, 100, (short)1, 1, (short) 6, 5));
      comment1.setString(new HSSFRichTextString("FirstComments"));
      cell1.setCellComment(comment1);
      System.out.println("Cell comments: "+cell1.getCellComment().getString());

      patr = sheet.createDrawingPatriarch();
      comment1 = patr.createComment(new HSSFClientAnchor(100, 100, 100, 100, (short)1, 1, (short) 6, 5));
      //HSSFComment comment2=patr.createComment(new HSSFClientAnchor(100, 100, 100, 100, (short)1, 1, (short) 6, 5));
      HSSFCell cell2 = sheet.createRow(6).createCell((short)1);
      cell2.setCellValue(36.6);
      comment1.setString(new HSSFRichTextString("second commetns"));
      cell2.setCellComment(comment1);
      System.out.println("Cell comments: "+cell2.getCellComment().getString());

      patr = sheet.createDrawingPatriarch();
      comment1 = patr.createComment(new HSSFClientAnchor(100, 100, 100, 100, (short)1, 1, (short) 6, 5));
      //HSSFComment comment3=patr.createComment(new HSSFClientAnchor(100, 100, 100, 100, (short)1, 1, (short) 6, 5));
      cell2 = sheet.createRow(10).createCell((short)1);
      cell2.setCellValue(150);
      comment1.setString(new HSSFRichTextString("Third commetns"));
      cell2.setCellComment(comment1);
      System.out.println("Cell comments: "+cell2.getCellComment().getString());

      FileOutputStream out = new FileOutputStream("C:/Documents and Settings/saravanan/Desktop/cellcomments.xls");
      wb.write(out);
      out.close();

  }

}

while run the program, comments set only for last cell.but i printed the comments for the first two cells it was printed fine.but not shown in the excel sheet.

anybody help me...

thanks a lot to all

Saravanan

+1  A: 

For once you've asked a question which had me trying out the code for a while.

Your problem is this line appears 3 times, once before each comment.

patr = sheet.createDrawingPatriarch();

From the docs for this method,

Creates the top-level drawing patriarch. This will have the effect of removing any existing drawings on this sheet.

So whats happening is that your earlier comments are getting removed each time you create the DrawingPatriarch.

So do this only once, before comment1. The other 2 times, remove or comment out this line.

JoseK
thanks jose....
Saravanan
may i know ur mailid....this is [email protected]
Saravanan
@Saravanan: no private tuitions on offer here. Ask a proper question, you will get a reply from the community. See this URL for how to ask good questions. www.tinyurl.com/so-hints
JoseK