package com.ruoyi.web.controller.tool;
|
|
import org.apache.poi.hssf.usermodel.DVConstraint;
|
import org.apache.poi.hssf.usermodel.HSSFDataValidation;
|
import org.apache.poi.ss.usermodel.*;
|
import org.apache.poi.ss.util.CellRangeAddressList;
|
|
public final class ExcelUtil {
|
|
/**
|
* firstRow 开始行号(下标0开始)
|
* lastRow 结束行号,最大65535
|
* firstCol 区域中第一个单元格的列号 (下标0开始)
|
* lastCol 区域中最后一个单元格的列号
|
* dataArray 下拉内容
|
* sheetHidden 影藏的sheet编号(例如1,2,3),多个下拉数据不能使用同一个
|
* */
|
public static void selectList(Workbook workbook, int firstRow, int lastRow, int firstCol, int lastCol, String[] dataArray, int sheetHidden){
|
String hiddenName = "hidden_" + (int)((Math.random()*9+1)*100);
|
Sheet sheet = workbook.getSheetAt(0);
|
Sheet hidden = workbook.createSheet(hiddenName);
|
Cell cell = null;
|
for (int i = 0, length = dataArray.length; i < length; i++)
|
{
|
String name = dataArray[i];
|
Row row = hidden.createRow(i);
|
cell = row.createCell(0);
|
cell.setCellValue(name);
|
}
|
|
Name namedCell = workbook.createName();
|
namedCell.setNameName(hiddenName);
|
namedCell.setRefersToFormula(hiddenName + "!$A$1:$A$" + dataArray.length);
|
//加载数据,将名称为hidden的
|
DVConstraint constraint = DVConstraint.createFormulaListConstraint(hiddenName);
|
|
// 设置数据有效性加载在哪个单元格上,四个参数分别是:起始行、终止行、起始列、终止列
|
CellRangeAddressList addressList = new CellRangeAddressList(firstRow, lastRow, firstCol, lastCol);
|
HSSFDataValidation validation = new HSSFDataValidation(addressList, constraint);
|
|
// 将sheet设置为隐藏
|
workbook.setSheetHidden(sheetHidden, true);
|
sheet.addValidationData(validation);
|
}
|
|
}
|