java - 有没有办法使在 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"
我什么都不期待,因为我知道在这种情况下范围是如何工作的,但我需要一种方法来实现这个选项
解决方案
简而言之,没有。
但是,您可以将 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);
推荐阅读
- javascript - Javascript如何识别单击的按钮
- matlab - 通过MATLAB图中的数据点绘制平滑线
- java - 以双格式获取日期 43318.4847916667 而不是 06-08-2018 11:38:06
- excel - 在 VBA 中嵌套 If
- r - 如果我指定的列值以“1”开头,如何删除整行
- mysql - 404 Not Found:源服务器没有找到目标资源的当前表示或不愿意透露存在的表示
- php - 如何使用 PHP 屏蔽文件的云 URL?
- python - Python tkinter 应用程序在 0 错误时运行时没有响应?
- ios - iOS 文件模式:`source_files` 模式与任何文件都不匹配
- google-app-engine - 托管 google 应用引擎中的一个应用程序,用于在特定时间工作