1. 程式人生 > >poi建立excel檔案時,生成單元格下拉選

poi建立excel檔案時,生成單元格下拉選

最近在專案中使用poi建立excel檔案時,需要生成單元格下拉選。

下面是一個demo,註釋比較清楚,以此參考。

package poi;


import java.io.FileOutputStream;
import org.apache.poi.hssf.usermodel.DVConstraint;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDataValidation;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.util.CellRangeAddressList;


public class ExcelSetCheckbox {
public static void main(String[] args) {
String[] list={"廣州","深圳","東莞","珠海"};
new ExcelSetCheckbox().createListBox(list);
return ;
}

private void createListBox(String[] list) {
//檔案初始化 
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");
/**
設定單元格格式為文字格式*/ HSSFCellStyle textStyle = workBook.createCellStyle(); HSSFDataFormat format = workBook.createDataFormat(); textStyle.setDataFormat(format.getFormat("@"));

//在第一行第一個單元格,插入下拉框
for (int i = 0; i < 10; i++) {
HSSFRow row = sheet.createRow(i);
for (int j = 0; j < 15; j++) {
HSSFCell cell = row.createCell(j);
//普通寫入操作

cell.setCellValue("請選擇"+i+j);//這是實驗

cell.setCellStyle(textStyle);//設定單元格格式為"文字"
cell.setCellType(HSSFCell.CELL_TYPE_STRING);

}
}


// 設定資料有效性載入在哪個單元格上,四個引數分別是:起始行、終止行、起始列、終止列
CellRangeAddressList regions = new CellRangeAddressList(0,2,2,4);

//生成下拉框內容
DVConstraint constraint = DVConstraint.createExplicitListConstraint(list);
//繫結下拉框和作用區域
HSSFDataValidation data_validation = new HSSFDataValidation(regions,constraint);
//對sheet頁生效

sheet.addValidationData(data_validation);

//針對生效/失效日期單元格有效日期的限定
//生成日期類有效性
DVConstraint constraint3 = DVConstraint.createDateConstraint(DVConstraint.OperatorType.BETWEEN, "1970-1-1",
"2100-1-1", "yyyy-mm-dd");
//建立一個區域
CellRangeAddressList regions3 = new CellRangeAddressList(1,100,3,4);
//有效性--區域 組合
HSSFDataValidation data_validation3 = new HSSFDataValidation(regions3, constraint3);
//對sheet頁生效
sheet.addValidationData(data_validation3);

//寫入檔案
FileOutputStream fileOut;
try {
fileOut = new FileOutputStream("d://workbook.xls");  
wb.write(fileOut);  
fileOut.close();  
 
} catch (Exception e) {  
e.printStackTrace();  
}

System.out.println("over");
}
}