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中的超链接有以下几种功能:

  1. 链接外部文件
  2. 添加网页链接
  3. 单元格跳转,即定位链接
  4. 发送邮件
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

回到顶部