我有此代码,并且此错误不断出现。我只有一个excel,但是似乎没有任何作用,我已经尝试了很多在网上冲浪的选择,但是根据我想做的事似乎没有任何作用。

我使用不同的情况来简化我的业务逻辑,并且我不会更改它,所以我不确定如何解决此问题。

private static final String nombreArchivo = "casoPrueba.xlsx";
private static final String rutaArchivo = "src\\test\\resources\\data\\" + nombreArchivo;




 public static XSSFSheet SacaHojaSegunTipo(String tipo) throws IOException {
        if (workbook == null) {
            try (FileInputStream fis = new FileInputStream(new File(rutaArchivo))) {
                workbook = new XSSFWorkbook(fis);
            }
        }
        XSSFSheet spreadsheet = null;
        switch (tipo) {
            case "Candidatos Minorista":
                spreadsheet = workbook.getSheetAt(1);
                break;
            case "Conversion Candidatos":
                spreadsheet = workbook.getSheetAt(2);
                break;
            case "Cuentas":
                spreadsheet = workbook.getSheetAt(3);
                break;
            case "Detalle Cuenta":
                spreadsheet = workbook.getSheetAt(4);
                break;
            case "Historial de Cuentas":
                spreadsheet = workbook.getSheetAt(5);
                break;
            case "Cuentas Financieras":
                spreadsheet = workbook.getSheetAt(6);
                break;
            case "AR Estado Automático":
                spreadsheet = workbook.getSheetAt(7);
                break;
            case "Oportunidades":
                spreadsheet = workbook.getSheetAt(8);
                break;
            default:
                spreadsheet = workbook.getSheetAt(0);
                break;
        }
        return spreadsheet;
    }


我知道这不是一种有效的方法。希望有人可以帮助我。

最佳答案

这样的事情(我试图尽可能少地更改您的代码,所以它并不完美)

private static final String nombreArchivo = "casoPrueba.xlsx";
private static final String rutaArchivo = "src\\test\\resources\\data\\" + nombreArchivo;

private static XSSFWorkbook workbook = null;

public static XSSFSheet SacaHojaSegunTipo(String tipo) throws IOException {
    if (workbook == null) {
        try (FileInputStream fis = new FileInputStream(new File(rutaArchivo))) {
            workbook = new XSSFWorkbook(fis);
        }
    }
    XSSFSheet spreadsheet = null;
    switch (tipo) {
    case "Candidatos Minorista":
        spreadsheet  = workbook.getSheetAt(1);
        break;
    case "Conversion Candidatos":
        spreadsheet  = workbook.getSheetAt(2);
        break;
    case "Cuentas":
        spreadsheet  = workbook.getSheetAt(3);
        break;
    case "Detalle Cuenta":
        spreadsheet  = workbook.getSheetAt(4);
        break;
    case "Historial de Cuentas":
        spreadsheet  = workbook.getSheetAt(5);
        break;
    case "Navegar Cuentas":
        spreadsheet  = workbook.getSheetAt(6);
        break;
    case "Validar Número Operación":
        spreadsheet  = workbook.getSheetAt(7);
        break;
    case "Validar Tipos de Productos":
        spreadsheet  = workbook.getSheetAt(8);
        break;
    case "Validar Referencia y Cód. Auto.":
        spreadsheet  = workbook.getSheetAt(9);
        break;
    default:
        spreadsheet = workbook.getSheetAt(0);
    }
    return spreadsheet;
}

关于java - java.lang.OutOfMemoryError:Java堆空间-无法修复,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56961145/

10-12 02:57