Android修行手册-POI操作Excel实现超链接并且变为蓝色

👉关于作者

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎底部卡片私我,交流让学习不再孤单

👉实践过程

😜问题

我有个 Excel 文档,里面有很多的图片链接,需要进行内容提取分类,并且保存为新的 Excel 文件。写入保存后看到里面的超链接是默认的文本形式。失去了原 Excel 的超链接蓝色以及跳转功能。

😜解决

超链接

翻了翻 POI 的文档, 很容易就找到了解决方案。在 POI 中让单元格实现超链接功能, 可以用Hyperlink 函数。

方式一:

java 复制代码
CreationHelper createHelper = yesOrNoWorkBook.getCreationHelper(); // 创建一个超链接对象
Hyperlink hyperlink = createHelper.createHyperlink(XSSFHyperlink.LINK_URL);
hyperlink.setAddress(str); // 设置超链接的地址
newCell.setHyperlink(hyperlink); // 在单元格中添加超链接

如代码所示,实现起来超级简单,借住了 Hyperlink 对象进行操作。

yesOrNoWorkBook 就是你的 workbook 操作对象,newCell 是你的列对象,

方式二:

java 复制代码
newCell.setCellType(HSSFCell.CELL_TYPE_FORMULA);
//第一个参数是指向的地址,第二个参数是显示的字符串
newCell.setCellFormula("HYPERLINK(\"" + "https://zhima.blog.csdn.net/"+ "\",\"" + "Google Canada"+ "\")");
//或者下面的方式  []里面是你的excel文档,第二个是你的页,A1 表示的 第一行A列。 
newCell.setCellFormula("HYPERLINK(\"[workbook.xls]'sheet2'!A1\",\"芝麻粒儿\")"); 
//其中excel文档指定还可以利用 # 表示当前文档
newCell.setCellFormula("\"#Sheet!B2\",\"芝麻粒儿\""); 
//上面代码表示本文档的Sheet页,第二行B列是超链接,字体显示为 芝麻粒儿

这段代码中各有优劣,newCell 是你的列对象。 第二行代码可以指定具体的超链接内容,下面两行代码是指定原 Excel 中的指定单元格为超链接。

字体样式

上面超链接是插入了,但是超链接单元格看起来和一般的单元格没有分别, 除非你把鼠标放上去才会变成手行光标。肉眼一看无法看出来是超链接。

为了和一般的习惯相符, 还需要把字符颜色变成蓝色和加上下划线。 这就要用到 style了。

java 复制代码
CellStyle linkStyle = yesOrNoWorkBook.createCellStyle();
Font cellFont = yesOrNoWorkBook.createFont();
cellFont.setUnderline((byte) 1);
cellFont.setColor(IndexedColors.BLUE.getIndex());
linkStyle.setFont(cellFont);
newCell.setCellStyle(linkStyle);

上面的代码实现也很简单,yesOrNoWorkBook 是你自己的 workbook 对象,setUnderline 是设置下划线,setColor 是设置字体颜色,借住了 IndexedColors 类。有的文章教程使用的其他的类,我尝试了下 Android 平台不一定支持。

弄完字体样式后利用 setCellStyle 给对应的列设置即可。

👉其他

📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:https://zhima.blog.csdn.net/
📢这位道友请留步 ☁️,我观你气度不凡 ,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞 👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

温馨提示点击下方卡片获取更多意想不到的资源。

相关推荐
阿巴斯甜12 小时前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker13 小时前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq952714 小时前
Andorid Google 登录接入文档
android
黄林晴15 小时前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
冬奇Lab1 天前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
城东米粉儿1 天前
Android MediaPlayer 笔记
android
Jony_1 天前
Android 启动优化方案
android
阿巴斯甜1 天前
Android studio 报错:Cause: error=86, Bad CPU type in executable
android
张小潇1 天前
AOSP15 Input专题InputReader源码分析
android
_小马快跑_1 天前
Kotlin | 协程调度器选择:何时用CoroutineScope配置,何时用launch指定?
android