Java 中如何给 Excel 的单元格设置超链接?
Java 中如何给 Excel 的单元格设置超链接
我想导入一个excel文件,并且通过java代码给某个单元格设置超链接(业务需求)。请问大家有什么思路没
回答:
你如果使用poi 组件来写入Excel 直接有方法调用,例如
XSSFRow row3 = sheet.createRow(5); XSSFCell cell3 = row3.createCell(0);
cell3.setCellValue("链接到百度网站");
XSSFHyperlink hyperlink2 = creationHelper.createHyperlink(HyperlinkType.URL);
hyperlink2.setAddress("https://www.baidu.com/");
cell3.setHyperlink(hyperlink2);
import org.apache.poi.common.usermodel.HyperlinkType;import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.*;
import java.awt.Color;
import java.io.File;
import java.io.FileOutputStream;
public class StyleStudy {
public static void main(String[] args) {
FileOutputStream out = null;
XSSFWorkbook xSSFWorkbook = null;
try {
xSSFWorkbook = new XSSFWorkbook();
margeCell(xSSFWorkbook);
out = new FileOutputStream(new File("C:\\Users\\Administrator\\Desktop\\test\\study\\"+System.currentTimeMillis()+".xlsx"));
xSSFWorkbook.write(out);
System.out.println("EXCEL文件已生成=========");
}catch (Exception e){
e.printStackTrace();
}
}
/**
* 单元格设置
* @param workbook
*/
private static void margeCell(XSSFWorkbook workbook) {
XSSFSheet sheet = workbook.createSheet();
// 合并单元格,1到4行,1到4列进行合并
XSSFRow row1 = sheet.createRow(0);
row1.createCell(0).setCellValue("合并单元格");
sheet.addMergedRegion(new CellRangeAddress(0,3,0,3));
/**
* 设置超链接
*/
XSSFRow row2 = sheet.createRow(4);
XSSFCell cell2 = row2.createCell(0);
cell2.setCellValue("另一个sheet页的指定位置");
XSSFCreationHelper creationHelper = workbook.getCreationHelper();
XSSFHyperlink hyperlink = creationHelper.createHyperlink(HyperlinkType.DOCUMENT);
// 链接到此Excel的任何地方,以“!”分割,前面表示sheet的名字,没有则本sheet页进行跳转
hyperlink.setAddress("跳转sheet页!A10");
cell2.setHyperlink(hyperlink);
// 创建第二个sheet页提供跳转
XSSFSheet sheet1 = workbook.createSheet("跳转sheet页");
sheet1.createRow(9).createCell(0).setCellValue("跳转到这里");
// 链接到指定网站
XSSFRow row3 = sheet.createRow(5);
XSSFCell cell3 = row3.createCell(0);
cell3.setCellValue("链接到百度网站");
XSSFHyperlink hyperlink2 = creationHelper.createHyperlink(HyperlinkType.URL);
hyperlink2.setAddress("https://www.baidu.com/");
cell3.setHyperlink(hyperlink2);
// 打开指定文件
XSSFRow row4 = sheet.createRow(5);
XSSFCell cell4 = row4.createCell(0);
cell4.setCellValue("链接到指定文件");
XSSFHyperlink hyperlink3 = creationHelper.createHyperlink(HyperlinkType.FILE);
File file = new File("C:\\Users\\Administrator\\Desktop\\test\\4、图片文件\\01.jpg");
String filePath = file.toURI().toString();
System.out.println("文件路径:"+filePath);
hyperlink3.setAddress(filePath);
cell4.setHyperlink(hyperlink3);
}
回答:
一般Excel中的超链接有以下几种功能:
- 链接外部文件
- 添加网页链接
- 单元格跳转,即定位链接
- 发送邮件
public void AddHyperLink() { Workbook wb = new Workbook();
IWorksheet sheet = wb.getActiveSheet();
// 添加外部文件链接
sheet.getRange("A1:B2").getHyperlinks().add(sheet.getRange("A1"),
"C:/SampleFile.xlsx",
null, "链接至SampleFile.xlsx文件.", "SampleFile.xlsx");
// 添加网页链接
sheet.getRange("A3:B4").getHyperlinks().add(sheet.getRange("A3"),
"https://www.baidu.com/", null,
"打开百度.", "百度");
// 添加定位链接
sheet.getRange("A5:B6").getHyperlinks().add(sheet.getRange("A5"),
null, "Sheet1!$C$3:$E$4", "跳转至 sheet1 C3:E4", "");
// 添加邮件链接
sheet.getRange("A7:B8").getHyperlinks().add(sheet.getRange("A7"),
"mailto:example@example.com", null,
"发送邮件", "发送邮件");
wb.save("output/hyperlinks.xlsx");
}
参考文档:https://demo.grapecity.com.cn/documents-api-excel-java/demos/...
以上是 Java 中如何给 Excel 的单元格设置超链接? 的全部内容, 来源链接: utcz.com/p/945466.html