import org.apache.poi.hssf.usermodel.HSSFWorkbook; //导入方法依赖的package包/类
private void createSheetFromTemplate(final ProgressMonitor monitor, final HSSFWorkbook workbook, final ERDiagram diagram, final boolean useLogicalNameAsSheetName) throws InterruptedException {
initSheetNameMap(workbook);
int originalSheetNum = workbook.getNumberOfSheets();
int sheetIndexSheetNo = -1;
while (originalSheetNum > 0) {
final String templateSheetName = workbook.getSheetName(0);
final AbstractSheetGenerator sheetGenerator = getSheetGenerator(templateSheetName);
if (sheetGenerator != null) {
sheetGenerator.generate(monitor, workbook, 0, useLogicalNameAsSheetName, sheetNameMap, sheetObjectMap, diagram, loopDefinitionMap);
workbook.removeSheetAt(0);
} else {
if (!isExcludeTarget(templateSheetName)) {
moveSheet(workbook, 0);
final HSSFSheet sheet = workbook.getSheetAt(workbook.getNumberOfSheets() - 1);
sheetObjectMap.put(templateSheetName, new StringObjectModel(templateSheetName));
if (pictureSheetGenerator != null) {
pictureSheetGenerator.setImage(workbook, sheet);
}
if (sheetIndexSheetGenerator.getTemplateSheetName().equals(templateSheetName)) {
sheetIndexSheetNo = workbook.getNumberOfSheets() - originalSheetNum;
String name = sheetIndexSheetGenerator.getSheetName();
name = AbstractSheetGenerator.decideSheetName(name, sheetNameMap);
monitor.subTaskWithCounter(name);
workbook.setSheetName(workbook.getNumberOfSheets() - 1, name);
} else {
monitor.subTaskWithCounter(sheet.getSheetName());
}
} else {
monitor.subTaskWithCounter("Removing template sheet");
workbook.removeSheetAt(0);
}
monitor.worked(1);
}
originalSheetNum--;
}
if (sheetIndexSheetNo != -1) {
sheetIndexSheetGenerator.generate(monitor, workbook, sheetIndexSheetNo, useLogicalNameAsSheetName, sheetNameMap, sheetObjectMap, diagram, loopDefinitionMap);
}
}