我正在创建从数据库中检索名称列表的代码,并将其添加到Excel文件中,在下拉列表中供用户选择。
我遇到的问题是同一个excel文件包含多个不同的名称列表,我不知道如何将它们全部放在同一个(隐藏)工作表中。
代码
public void write()
{
ArrayList<ArrayList<String>> listsPlayers;
// Fill the list of players array lists from the database
// Set the address lists objects
for (int k = 0; k < Gender.values().length; k++)
{
createHiddenSheet(Category.values()[i].text() + "_" + Gender.values()[k].text(),
listsPlayers.get(k));
DataValidation validation = validationHelper.createValidation(listConstraints.get(constraintIndexes[k]), addressList[k]);
sheet.addValidationData(validation);
}
}
public void createHiddenSheet(String sheetName, ArrayList<String> listPlayerNames)
{
DataValidationConstraint constraint = null;
DataValidationHelper validationHelper = null;
// Creates and hides a sheet
Sheet hiddenSheet = workbook.createSheet(sheetName);
workbook.setSheetHidden(workbook.getSheetIndex(sheetName), Workbook.SHEET_STATE_VERY_HIDDEN);
hiddenSheet.protectSheet("Test");
Name namedCell = workbook.createName();
namedCell.setNameName(sheetName);
// Adds the list of player names in the sheet
for (int i = 0; i <= listPlayerNames.size(); i++)
{
String name = listPlayerNames.get(i);
Row row = hiddenSheet.createRow(i);
Cell cell = row.createCell(0);
cell.setCellValue(name);
}
namedCell.setRefersToFormula(sheetName + "!$A$1:$A$" + (listPlayerNames.size() + 1));
validationHelper = hiddenSheet.getDataValidationHelper();
constraint = validationHelper
.createFormulaListConstraint(sheetName + "!$A$1:$A$" + (listPlayerNames.size() + 1));
listConstraints.add(constraint);
}
我的问题是,由于有三个类别和两个性别,因此该代码将创建六个隐藏的表格以从中获取验证。我希望创建一个更清洁的解决方案,只创建一个隐藏的工作表。
当我尝试在一张纸上使用六列(而不是一列使用六张纸)时,我遇到了指定单元格对象的多个问题。
提前致谢!
答案 0 :(得分:1)
在AxelRichter的评论之后,我意识到我的代码根本不需要命名范围对象。
以下是修改后的工作代码:
Schema::create('company_user', function(Blueprint $table){
$table->integer('user_id')->unsigned();
$table->integer('company_id')->unsigned();
});