-
Excel HYPERLINK 语法
其格式为:
其中:HYPERLINK(link_location,friendly_name)
.HYPERLINK
为函数名,link_location
为链接位置,friendly_name
为显示文本. -
代码示例
import org.apache.poi.xssf.usermodel.*;import java.io.File;import java.io.FileOutputStream;public class TestExcelFormula { public static void main(String[] args) throws Exception { formula(); } public static void formula() throws Exception { XSSFWorkbook workbook = new XSSFWorkbook(); XSSFSheet sheet = workbook.createSheet("formula"); int rowIdx = 0; // row0 XSSFRow row = sheet.createRow(rowIdx++); XSSFCell cell_00 = row.createCell(0); XSSFCell cell_01 = row.createCell(1); cell_00.setCellValue("A ="); cell_01.setCellValue(2); // row1 row = sheet.createRow(rowIdx++); XSSFCell cell_11 = row.createCell(0); XSSFCell cell_12 = row.createCell(1); cell_11.setCellValue("B ="); cell_12.setCellValue(4); // row2 reate SUM formula row = sheet.createRow(rowIdx++); XSSFCell cell_20 = row.createCell(0); XSSFCell cell_21 = row.createCell(1); XSSFCell cell_22 = row.createCell(2); cell_20.setCellValue("Total ="); cell_21.setCellType(XSSFCell.CELL_TYPE_FORMULA); cell_21.setCellFormula("SUM(B1:B2)"); cell_22.setCellValue("SUM(B1:B2)"); // row3 create POWER formula row = sheet.createRow(rowIdx++); XSSFCell cell_30 = row.createCell(0); XSSFCell cell_31 = row.createCell(1); XSSFCell cell_32 = row.createCell(2); cell_30.setCellValue("POWER ="); cell_31.setCellType(XSSFCell.CELL_TYPE_FORMULA); cell_31.setCellFormula("POWER(B1,B2)"); cell_32.setCellValue("POWER(B1,B2)"); // row4 Create MAX formula row = sheet.createRow(rowIdx++); XSSFCell cell_40 = row.createCell(0); XSSFCell cell_41 = row.createCell(1); XSSFCell cell_42 = row.createCell(2); cell_40.setCellValue("MAX ="); cell_41.setCellType(XSSFCell.CELL_TYPE_FORMULA); cell_41.setCellFormula("MAX(B1,B2)"); cell_42.setCellValue("MAX(B1,B2)"); // row5 Create FACT formula row = sheet.createRow(rowIdx++); XSSFCell cell_50 = row.createCell(0); XSSFCell cell_51 = row.createCell(1); XSSFCell cell_52 = row.createCell(2); cell_50.setCellValue("FACT ="); cell_51.setCellType(XSSFCell.CELL_TYPE_FORMULA); cell_51.setCellFormula("FACT(B2)"); cell_52.setCellValue("FACT(B2)"); // row6 Create SQRT formula row = sheet.createRow(rowIdx++); XSSFCell cell_60 = row.createCell(0); XSSFCell cell_61 = row.createCell(1); XSSFCell cell_62 = row.createCell(2); cell_60.setCellValue("SQRT ="); cell_61.setCellType(XSSFCell.CELL_TYPE_FORMULA); cell_61.setCellFormula("SQRT(B4)"); cell_62.setCellValue("SQRT(B4)"); // 单元格居中样式 XSSFCellStyle style = workbook.createCellStyle(); style.setAlignment(XSSFCellStyle.ALIGN_CENTER); style.setVerticalAlignment(XSSFCellStyle.VERTICAL_TOP); // row7 超链接 打开 Internet URL row = sheet.createRow(rowIdx++); // 设置行高 row.setHeightInPoints(100); XSSFCell cell_70 = row.createCell(0); XSSFCell cell_71 = row.createCell(1); XSSFCell cell_72 = row.createCell(2); cell_70.setCellValue("Internet URL"); cell_71.setCellType(XSSFCell.CELL_TYPE_FORMULA); cell_71.setCellFormula("HYPERLINK(\"https://www.baidu.com\", \"百度\")"); cell_71.setCellStyle(style); cell_72.setCellValue("https://www.baidu.com"); // row8 超链接 打开(本地)文件 String relativeUrl = "..\\picture\\user_001\\test.jpg"; row = sheet.createRow(rowIdx++); row.setHeightInPoints(30); XSSFCell cell_80 = row.createCell(0); XSSFCell cell_81 = row.createCell(1); XSSFCell cell_82 = row.createCell(2); cell_80.setCellValue("打开(本地)文件"); cell_81.setCellType(XSSFCell.CELL_TYPE_FORMULA); cell_81.setCellFormula("HYPERLINK(\"..\\picture\\user_001\\test.jpg\", \"test.jpg\")"); cell_81.setCellStyle(style); cell_82.setCellValue(relativeUrl); // 设置列宽 sheet.setColumnWidth(0, 5000); sheet.setColumnWidth(1, 4000); sheet.setColumnWidth(2, relativeUrl.getBytes().length * 500); workbook.getCreationHelper().createFormulaEvaluator().evaluateAll(); FileOutputStream out = new FileOutputStream(new File("formula.xlsx")); workbook.write(out); out.close(); System.out.println("fromula.xlsx written successfully"); }}复制代码