首页 > 解决方案 > 有没有办法使在 IF 语句中定义的变量在语句本身之外可见和可用?

问题描述

我需要创建一个 HSSFWorkbook 或 XSSFWorkbook 对象,具体取决于我作为文件扩展名读取的内容,然后能够使用创建的对象进行操作和填充。如何使对象在 IF 语句之外可见,以便我可以“全局”使用它?

我尝试过一种方法,但我们知道一种方法只能返回一个对象类型,我正在处理 2 种可能的对象类型输出(HSSF/XSSF 工作簿)

String excelFilePath = "D://"; //path
String fileName = "BetsTable"; //filename
String extension = "xls"; //extension
String completePath = excelFilePath + fileName + "." + extension; //fullpath

FileInputStream inputStream = new FileInputStream(new 
File(completePath));

if(extension == "xls") { 
    HSSFWorkbook workbook = new HSSFWorkbook(inputStream);                      
}
if(extension == "xlsx") {
    XSSFWorkbook workbook = new XSSFWorkbook(inputStream);                      
}

Sheet firstSheet = workbook.getSheetAt(0); // !!! WORKBOOK IS NOW NOT 
"USABLE"

我什么都不期待,因为我知道在这种情况下范围是如何工作的,但我需要一种方法来实现这个选项

标签: javavariables

解决方案


简而言之,没有。

但是,您可以将 a 保留Sheet在内部范围之外,您只需在您需要的范围内定义它:

Sheet sheet = null;
if(extension == "xls") { 
    HSSFWorkbook workbook = new HSSFWorkbook(inputStream);     
    sheet = workbook.getSheetAt(0);                 
}
if(extension == "xlsx") {
    XSSFWorkbook workbook = new XSSFWorkbook(inputStream);       
    sheet = workbook.getSheetAt(0);               
}

// sheet is accessible from here
doSomething(sheet);

推荐阅读