使用jxl库将注释添加到使用Java的Excel文件中的单元格
我正在尝试向Excel中的单元格添加注释。 我正在使用jxl库来做到这一点:
cell = sheet.getWritableCell(1, 2); // cols, rows WritableCellFeatures wcf = cell.getWritableCellFeatures(); wcf.setComment("comment2");
最后一行返回: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
。 尽pipe许多尝试,我无法修复它。 帮助将不胜感激。 谢谢。
– 编辑 –
这是修改后的addNumber方法:
private static void addNumber(WritableSheet sheet, int column, int row, double d) throws WriteException, RowsExceededException { Number number; number = new Number(column, row, d, timesStandard); //sheet.addCell(number); // need to add the cell first if (user wants to add a comment) { WritableCellFeatures wcf = new WritableCellFeatures(); wcf.setComment("the comment"); number.setCellFeatures(wcf); } //sheet.addCell(number); // but may need to add the cell with comments as well }
你以前在那个地方加过一个单元吗? 问题是你不能在EmptyCell
上设置单元格的特性,它总是会返回null
作为单元格的特性。
如果您先添加一个单元格,它会起作用(为了清晰起见,省略了try / catch),如下面的代码所示。 请注意,它也首先在新的Label
单元格上设置一个WritableCellFeatures
,因为最初单元格的特征总是null
。
WritableWorkbook book = Workbook.createWorkbook(new File("output.xls")); WritableSheet sheet = book.createSheet("Some Sheet", 0); Label label = new Label(1, 2, "Some label"); sheet.addCell(label); // add cell! WritableCellFeatures wcf = new WritableCellFeatures(); wcf.setComment("Hello!"); // set cell features! label.setCellFeatures(wcf); book.write(); book.close();
在OP中使用这个方法:
我修改了这个方法来返回创build的(和添加!) Number
实例。 如果你不想这样做,你可以使用相同的行/列使用WritableWorkbook.getWritableCell()
检索相同的单元格。
public static void main(String[] args) throws IOException, RowsExceededException, WriteException { File file = new File("output.xls"); WritableWorkbook workbook = Workbook.createWorkbook(file); WritableSheet sheet = workbook.createSheet("First Sheet", 0); Number number = addNumber(sheet, 3, 2, 565d); WritableCellFeatures wcf = number.getWritableCellFeatures(); if (wcf == null) wcf = new WritableCellFeatures(); wcf.setComment("the comment"); number.setCellFeatures(wcf); workbook.write(); workbook.close(); } private static Number addNumber(WritableSheet sheet, int column, int row, double d) throws WriteException, RowsExceededException { Number number = new Number(column, row, d, timesStandard); sheet.addCell(number); // need to add the cell first return number; }
从评论和:
- http://www.docjar.org/html/api/jxl/demo/ReadWrite.java.html
- http://kickjava.com/src/jxl/demo/Write.java.htm
我做的 :
private static void addNumber(WritableSheet sheet, int column, int row, double d) throws WriteException, RowsExceededException { Number number; number = new Number(column, row, d, timesStandard); sheet.addCell(number); if (user wants to add a comment) { WritableCell cell = sheet.getWritableCell(column, row) Label l = (Label) cell; WritableCellFeatures cellFeatures = new WritableCellFeatures(); cellFeatures.setComment("the cell comment"); l.setCellFeatures(cellFeatures); sheet.addCell(l); } }