您的位置 首页 java

Java 用图片替换Excel工作表中的指定文本

功能需求

我有一个如下截图所示的Excel工作表,现在我想要使用Java代码一次性将 国旗 那一列的文本替换成图片。

解决方案

针对该需求,我使用了一款名为 Free Spire.XLS for Java 的免费控件来进行操作。首先,我们需要创建程序运行环境 —— 安装配置JDK 1.8.0 和 Intellij IDEA 。接着在E-iceblue中文官网上获取产品包,解压后在lib文件夹下找到Spire.Xls.jar,最后手动导入 IDEA ;除了手动导入外,也可直接通过 Maven 仓库来进行导入,只需在IDEA中创建Maven项目,然后在pom.xml中键入以下代码即可。

 <repositories>
        <repository>
            <id>com.e-iceblue</id>
            <url>
        </repository>
    </repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.xls.free</artifactId>
        <version>3.9.1</version>
    </dependency>
</dependencies>  

代码示例

实现图片替换指定文本这一功能的代码主要分以下几个步骤:

  • 创建Wordbook实例,加载 Excel 文档;
  workbook  workbook = new Workbook();
workbook.loadFromFile("C:\\Users\\Test1\\Desktop\\Sample.xlsx");  
  • 获取指定工作表;
 Worksheet worksheet = workbook.getWorksheets().get(0);  
  • 通过字符串查找文本内容,并将其清空;
  CellRange[] ranges1 = worksheet.findAllString("China", false, false);
        for (CellRange range1 : ranges1) {
           range1.setText("");  
  • 获取单元格所在的行列位置,并将图片添加到此位置;
   int row1 = range1.getRow();
  int column1 = range1.getColumn();
worksheet.getPictures().add(row1, column1, "C:\\Users\\Test1\\Desktop\\logo.png", ImageFormatType.Png);  
  • 保存结果文档。
  workbook.saveToFile("output/ReplaceTextWithImage.xlsx", ExcelVersion.Version2013);  

完整代码

 import com.spire.xls.*;
public class ReplaceTextWithImage {
    public static void main(String[] args) {
        //加载Excel示例文档
        Workbook workbook = new Workbook();
        workbook.loadFromFile("C:\\Users\\Test1\\Desktop\\Sample.xlsx");
        //获取第一张工作表
        Worksheet worksheet = workbook.getWorksheets().get(0);

        //查找文档中的字符串“China”
        CellRange[] ranges1 = worksheet.findAllString("China", false, false);
        for (CellRange range1 : ranges1) {
            //重置文本为空
            range1.setText("");

            //获取单元格所在的行列
            int row1 = range1.getRow();
            int column1 = range1.getColumn();
            //添加图片到获取的单元格
            worksheet.getPictures().add(row1, column1, "C:\\Users\\Test1\\Desktop\\logo.png", ImageFormatType.Png);

            //查找文档中的字符串“Canada”
            CellRange[] ranges2 = worksheet.findAllString("Canada", false, false);
            for (CellRange range2 : ranges2) {
                //重置文本为空
                range2.setText("");

                //获取单元格所在的行列
                int row2 = range2.getRow();
                int column2 = range2.getColumn();
                //添加图片到获取的单元格
                worksheet.getPictures().add(row2, column2, "C:\\Users\\Test1\\Desktop\\logo2.jpg", ImageFormatType.Jpeg);

                //查找文档中的字符串“America”
                CellRange[] ranges3 = worksheet.findAllString("America", false, false);
                for (CellRange range3 : ranges3) {
                    //重置文本为空
                    range3.setText("");

                    //获取单元格所在的行列
                    int row3 = range3.getRow();
                    int column3 = range3.getColumn();
                    //添加图片到获取的单元格
                    worksheet.getPictures().add(row3, column3, "C:\\Users\\Test1\\Desktop\\logo3.jpg", ImageFormatType.Jpeg);

                    //保存文档
                    workbook.saveToFile("output/ReplaceTextWithImage.xlsx", ExcelVersion.Version2013);
                }
            }
        }
    }
}  

替换效果

文章来源:智云一二三科技

文章标题:Java 用图片替换Excel工作表中的指定文本

文章地址:https://www.zhihuclub.com/181894.shtml

关于作者: 智云科技

热门文章

网站地图