我想使用Apache POI为3个excel单元格设置注释.
这是我的源代码:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
在运行程序时,注释仅针对最后一个单元格设置.但是我打印了前两个单元格的评论.但是没有在excel表中显示?这里有什么不对?
一旦你问了一个让我试了一段时间代码的问题.
你的问题是这一行出现3次,每次评论前一次.
patr = sheet.createDrawingPatriarch();
Run Code Online (Sandbox Code Playgroud)
从这个方法的文档,
创建顶级绘图族长.这将删除此工作表上的任何现有图纸.
因此,每次创建DrawingPatriarch时都会删除您之前的注释.
所以之前只做过一次comment1.另外2次,删除或注释掉这一行.
| 归档时间: |
|
| 查看次数: |
5658 次 |
| 最近记录: |