Restituzione data (formula) excel in java

di imparareJava il
5 risposte
Ciao a tutti,


Visto che una cella in excel è stata inserita la formula per creare una data in base al formato.
Non mi restituisce il valore della cella cioè 12/02/2019 ma restituisce la formula.
Non capisco dove sbaglio, mi potete aiutare??

public void fillVeicoloDataFineValidita() {
		for (int rowIndex = 1; rowIndex < dataTypeSheet.getPhysicalNumberOfRows(); rowIndex++) {
			currentRow = dataTypeSheet.getRow(rowIndex);
			try {
				cell_data_fine_validita = currentRow.getCell(29).getCellFormula().toString(); // Cella AD
				if (cell_data_fine_validita != null)
					data_fine_validita.add(cell_data_fine_validita.toString());
			} catch (NotImplementedException e) {
				e.printStackTrace();
			}

		}

		System.out.println(data_fine_validita.toString());
	}

Error:
Exception in thread "main" java.lang.IllegalStateException: Cannot get a FORMULA value from a BLANK cell
at org.apache.poi.xssf.usermodel.XSSFCell.typeMismatch(XSSFCell.java:1075)
at org.apache.poi.xssf.usermodel.XSSFCell.getCellFormula(XSSFCell.java:483)
at org.apache.poi.xssf.usermodel.XSSFCell.getCellFormula(XSSFCell.java:470)
at it.clienteUno.Cliente.fillVeicoloDataFineValidita(Cliente.java:513)
at it.clienteUno.Test.main(Test.java:19)

Errore riga 513 --> cell_data_fine_validita = currentRow.getCell(29).getCellFormula().toString(); // Cella AD

le celle nel file excel sono tutte piene cioè tutti hanno dei valori in base alla loro data

5 Risposte

  • imparareJava ha scritto:


    Non mi restituisce il valore della cella cioè 12/02/2019 ma restituisce la formula.
    
    				cell_data_fine_validita = currentRow.getCell(29).getCellFormula().toString();
    
    getCellFormula() restituisce appunto la formula (es. "SUM(A1:D1)" ). Se tu dici "voglio il valore e NON la formula" ... ovviamente getCellFormula() NON è il metodo da usare ....
  • Ci sono riuscito
    
    public void fillVeicoloDataFineValidita() {
    		for (int rowIndex = 1; rowIndex < dataTypeSheet.getPhysicalNumberOfRows(); rowIndex++) {
    			currentRow = dataTypeSheet.getRow(rowIndex);
    			try {
    				cell_data_fine_validita = currentRow.getCell(29).getDateCellValue(); // Cella AD
    				if (cell_data_fine_validita != null)
    					data_fine_validita.add(cell_data_fine_validita.toString());
    			} catch (NotImplementedException e) {
    				e.printStackTrace();
    			}
    
    		}
    
    		System.out.println(data_fine_validita.toString());
    	}
    
    
  • imparareJava ha scritto:


    Ci sono riuscito
    Non ho ancora capito se stai andando "a caso" con la Apache POI. Comunque il javadoc è qui: https://poi.apache.org/apidocs/4.1
    Leggilo.
  • Il fatto che ho problema di logica, perciò mi sto esercitando tanto per capite il tutto
  • imparareJava ha scritto:


    Il fatto che ho problema di logica, perciò mi sto esercitando tanto per capite il tutto
    "logica" nel senso di come ragionare per realizzare certi programmi e algoritmi?
    Esercitarsi va ovviamente bene ma tieni presente che stai usando una libreria molto particolare, la Apache POI che "banale" non lo è.
    Se ti servissero "esercizi" su cui ragionare, se ne possono fare "mille" altri, anche senza dover usare librerie esterne specifiche o particolarmente complesse.
Devi accedere o registrarti per scrivere nel forum
5 risposte