本文介绍通过Java程序来操作Excel批注的方法。操作内容包括批注添加(添加批注文本、背景色、字体、自适应等)、修改、读取(文本、图片)、复制、删除等。

工具Free Spire.XLS for Java (免费版)

注:Jar文件获取可通过官网下载包,并解压将lib文件夹下的jar文件导入java程序;或通过maven下载导入。

导入结果如下:


Java代码示例

【示例1】添加批注

import com.spire.xls.*;

import java.awt.*;

public class AddComment {
public static void main(String[] args) {
//加载Excel文档
Workbook wb = new Workbook();
wb.loadFromFile("test.xlsx"); //获取工作表
Worksheet sheet = wb.getWorksheets().get(0); //创建字体
ExcelFont font = wb.createFont();
font.setFontName("Arial");
font.setSize(11);
font.setKnownColor(ExcelColors.Orange);
ExcelFont fontBlue = wb.createFont();
fontBlue.setKnownColor(ExcelColors.LightBlue);
ExcelFont fontGreen = wb.createFont();
fontGreen.setKnownColor(ExcelColors.LightGreen); //给指定的Excel单元格添加普通批注
CellRange range = sheet.getCellRange("H2");
range.getComment().setText("税前价格");
range.getComment().setTextRotation(TextRotationType.TopToBottom);
range.autoFitColumns();
range.getComment().setVisible(true);//设置批注是否隐藏
range.getComment().getFill().customPicture("logo.png");//背景图片填充
//range.getComment().getFill().setForeColor(new Color(255,228,225));//颜色填充 //给指定的Excel单元格添加富文本批注
range = sheet.getCellRange("F2");
range.getRichText().setFont(0, 8, font);
range.autoFitColumns();
range.getComment().getRichText().setText("已入库数量");
range.getComment().getRichText().setFont(0, 4, fontGreen);
range.getComment().getRichText().setFont(3, 4, fontBlue); //保存结果文档
wb.saveToFile("AddComments.xlsx", ExcelVersion.Version2013);
wb.dispose();
}
}

批注添加效果:

【示例2】修改批注

import com.spire.xls.*;

public class ModifyComment {
public static void main(String[] args) {
//加载excel文档
Workbook wb = new Workbook();
wb.loadFromFile("AddComments.xlsx"); //获取工作表
Worksheet sheet = wb.getWorksheets().get(0); //获取指定单元格中的批注,设置新的批注文本、填充色
sheet.getRange().get("H2").getComment().setText("不含税价");
sheet.getRange().get("F2").getComment().setText("最新数据"); //保存文档
wb.saveToFile("ModifyComment.xlsx",ExcelVersion.Version2013);
wb.dispose();
}
}

批注修改结果:

【示例3】读取批注

import com.spire.xls.*;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException; public class ExtractComment {
public static void main(String[] args)throws IOException {
//加载excel文档
Workbook wb = new Workbook();
wb.loadFromFile("AddComments.xlsx"); //获取工作表
Worksheet sheet = wb.getWorksheets().get(0); //打印指定单元格的文本批注内容
System.out.println("H2 的批注文本 = " + sheet.getCellRange("H2").getComment().getText());
System.out.println("F2 的批注文本 = " + sheet.getCellRange("F2").getComment().getRichText().getRtfText()); //获取指定单元格中批注背景颜色
Color color = sheet.getRange().get("H2").getComment().getFill().getForeColor();
System.out.print(color); //获取指定单元格中的批注背景图片
/*BufferedImage image = sheet.getRange().get("H2").getComment().getFill().getPicture();
ImageIO.write(image,"png",new File("ExtractedImages.png"));*/ }
}

批注读取结果:

读取的图片可在程序文件夹下查看。

【示例4】复制批注

import com.spire.xls.*;

import java.awt.*;
import java.awt.image.BufferedImage; public class CopyComment {
public static void main(String[] args) {
//加载Excel文档
Workbook wb = new Workbook();
wb.loadFromFile("AddComments.xlsx"); //获取指定工作表
Worksheet sheet = wb.getWorksheets().get(0); //获取源单元格批注内容
CellRange range = sheet.getRange().get("H2");//获取指定单元格
String commenttext = range.getComment().getText();//获取批注文本
BufferedImage image = range.getComment().getFill().getPicture();//获取批注填充图片
// Object object = range.getComment().getFill().getForeColor();//获取批注填充色 //获取新的单元格,添加批注文本和图片(颜色)填充
CellRange range1 = sheet.getRange().get("D3");
range1.getComment().setText(commenttext);
range1.getComment().getFill().customPicture(image," ");
//range1.getComment().getFill().setForeColor((Color) object); //保存文档
wb.saveToFile("CopyComment.xlsx",ExcelVersion.Version2013);
wb.dispose();
}
}

批注复制结果:

【示例5】删除批注

import com.spire.xls.ExcelVersion;
import com.spire.xls.FileFormat;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet; public class DeleteComment {
public static void main(String[] args) {
//加载Excel文档
Workbook wb = new Workbook();
wb.loadFromFile("AddComments.xlsx"); //获取工作表
Worksheet sheet = wb.getWorksheets().get(0); //获取指定单元格中的批注,并删除
sheet.getRange().get("H2").getComment().remove(); //保存文档
wb.saveToFile("DeleteComment.xlsx", ExcelVersion.Version2013);
wb.dispose();
}
}

批注删除结果:

(本文完)

Java 添加、修改、读取、复制、删除Excel批注的更多相关文章

  1. Java 添加、读取和删除 Excel 批注

    批注是一种富文本注释,常用于为指定的Excel单元格添加提示或附加信息. Free Spire.XLS for Java 为开发人员免费提供了在Java应用程序中对Excel文件添加和操作批注的功能. ...

  2. Java 添加、读取、删除Excel图片

    本文介绍在Java程序中如何添加图片到excel表格,添加图片时可设置图片大小.位置.旋转.超链接.可选文本等,以及如何读取.删除excel表格中已有的图片. 工具:Free Spire.XLS fo ...

  3. Java 添加、读取、删除Excel文档属性

    在文档属性中,可以设置诸多关于文档的信息,如创建时间.作者.单位.类别.关键词.备注等摘要信息以及一些自定义的文档属性.下面将通过Java程序来演示如何设置,同时对文档内的已有信息,也可以实现读取和删 ...

  4. Java 添加、读取、删除Excel形状

    本文介绍通过java程序在excel中操作形状(图形)的方法,包括: 1. 添加形状(如设置形状类型/位置/大小.形状颜色填充(单色/渐变色/纹理/图片填充).形状显示或隐藏.形状倾斜角度.添加文本到 ...

  5. Java 添加、读取、删除Excel文本框

    本文介绍通过Java程序添加文本框到Excel的方法,添加文本框时,可以添加文本.设置文本方向.文本对齐方式.设置文本框大小.位置.填充色/填充图片.文本框旋转角度.文本框名称.可选文本.文本框隐藏或 ...

  6. Java 添加、读取、删除Excel中的图表趋势线

    本文以Java示例介绍如何在Excel中添加趋势线,以及读取趋势线公式.通过文中的方法可支持添加6种不同类型的趋势线,包括Linear.Exponential.Logarithmic.Moving A ...

  7. C# 添加、读取、删除Excel文档属性

    在文档属性中,可以设置诸多关于文档的信息,如创建时间.作者.单位.类别.关键词.备注等摘要信息以及一些自定义的文档属性.下面将通过C#程序来演示如何设置,同时对文档内的已有信息,也可以实现读取或删除等 ...

  8. Java 添加、读取、删除PPT文档属性

    文档属性是一些描述性的信息,它未包含在文件的实际内容中,但提供了有关文件的信息,可用来帮助查找和整理文件.以下示例中将介绍通过Java程序来添加PPT文档属性.读取.删除PPT文档中已有属性的方法. ...

  9. Java 添加 、读取以及删除PPT幻灯片中的视频、音频文件

    在PPT中,可以操作很多种元素,如形状.图形.文字.图片.表格等,也可以插入视频或者音频文件,来丰富幻灯片的内容呈现方式.下面将介绍在Java程序中如何来添加视频.音频文件到PPT幻灯片,读取和删除幻 ...

  10. Java使用POI读取和写入Excel指南

    Java使用POI读取和写入Excel指南 做项目时经常有通过程序读取Excel数据,或是创建新的Excel并写入数据的需求: 网上很多经验教程里使用的POI版本都比较老了,一些API在新版里已经废弃 ...

随机推荐

  1. 2019-8-31-ASP.NET-Core-开启后台任务

    title author date CreateTime categories ASP.NET Core 开启后台任务 lindexi 2019-08-31 16:55:58 +0800 2019-3 ...

  2. 【a403】遍历树问题

    Time Limit: 1 second Memory Limit: 32 MB [问题描述] 我们都很熟悉二叉树的前序.中序.后序遍历,在数据结构中常提出这样的问题:已知一棵二叉树的前序和中序遍历, ...

  3. 从http到https--phpStudy2018

    0. 将SSL证书解压到以下目录,申请方式见 百度 Apache/cert/ 分别更名为 my_public.crt my.key my_chain.crt 1. phpStudy->其它选项菜 ...

  4. Java动态编译优化——提升编译速度(N倍)

    一.前言 最近一直在研究Java8 的动态编译, 并且也被ZipFileIndex$Entry 内存泄漏所困扰,在无意中,看到一个第三方插件的动态编译.并且编译速度是原来的2-3倍.原本打算直接用这个 ...

  5. dynamic web module version

    Ser vlet 3十二月2009开发平台标准版6,6可插性,易于开发,异步ser vlet,安全,文件上传 Ser vlet 2.5九月2005开发平台标准版5,5需要平台标准版5,支持注释 Ser ...

  6. Codeforces Round #524 (Div. 2) codeforces 1080A~1080F

    目录 codeforces1080A codeforces 1080B codeforces 1080C codeforces 1080D codeforces 1080E codeforces 10 ...

  7. 2020 中国 .NET 开发者调查问卷

    随着.NET Core 3.1的发布,国内2019 中国.NET开发者峰会在上海的成功举办.从技术采用生命周期的角度来说,随着.NET Core 3.1的发布,有越来越多的厂商开始采用.NET Cor ...

  8. docker mysql配置挂载到卷

    docker--将mysql配置挂载到卷 1.首先在根目录创建两个文件夹,其中config文件夹中创建my.cnf配置文件.data文件夹存放数据文件,一定要为空. /docker/mysql/con ...

  9. 在win64上使用bypy进行百度网盘文件上传

    阿里云服务器的带宽为2M,网站每日的备份包都3G多了,离线下载太费时间了,打算每日将备份包自动上传到自己的百度云盘里.1.先安装Python 执行python -V ,发现没安装python2.去py ...

  10. 面试官刁难:Java字符串可以引用传递吗?

    老读者都知道了,六年前,我从苏州回到洛阳,抱着一幅"海归"的心态,投了不少简历,也"约谈"了不少面试官,但仅有两三个令我感到满意.其中有一位叫老马,至今还活在我 ...