我需要创建一个 HSSFWorkbook 或 XSSFWorkbook 对象,具体取决于我读取的文件扩展名,然后能够继续操作并使用创建的对象进行填充。如何使对象在 IF 语句之外可见,以便我可以“全局”使用它?
我尝试过一种方法,但我们知道一种方法只能返回一种对象类型,而我正在处理 2 种可能的对象类型输出(HSSF/XSSF Workbook)
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"
我什么都不期待,因为我知道在这种情况下范围是如何工作的,但我需要一种方法来实现这个选项
最佳答案
简而言之,不。
但是,您可以在内部范围之外保留一个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);
关于java - 有没有办法使 IF 语句中定义的变量在语句本身之外可见并可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57492055/