Apache POI pobieranie typu komórki

0

Witam.
Mam takie pytanie używam biblioteki apache POI do edycji plików xls i mam problem z pobraniem typu danej komórki mianowicie:

row = sheet.getRow(0);
cell = row.getCell(0);

if(cell.getCellType() == Cell.CELL_TYPE_STRING){
        System.out.println("jestesmy w if");
        }else
            System.out.println("jetsesmy w else");      

obojętnie jaki typ danych jest w komórce cell nigdy nie wywołuje mi kodu z if, próbowałem porównywać cell.getCellType() z wszystkimi typami i nic. Także kod z strony apache nie działa

Sheet sheet1 = wb.getSheetAt(0);
for (Row row : sheet1) {
	for (Cell cell : row) {
		CellReference cellRef = new CellReference(row.getRowNum(), cell.getCellNum());
		System.out.print(cellRef.formatAsString());
		System.out.print(" - ");
		
		switch(cell.getCellType()) {
      case Cell.CELL_TYPE_STRING:
        System.out.println(cell.getRichStringCellValue().getString());
        break;
      case Cell.CELL_TYPE_NUMERIC:
        if(DateUtil.isCellDateFormatted(cell)) {
          System.out.println(cell.getDateCellValue());
        } else {
          System.out.println(cell.getNumericCellValue());
        }
        break;
      case Cell.CELL_TYPE_BOOLEAN:
        System.out.println(cell.getBooleanCellValue());
        break;
      case Cell.CELL_TYPE_FORMULA:
        System.out.println(cell.getCellFormula());
        break;
      default:
        System.out.println();
		}
	}
}

<url>http://poi.apache.org/spreadsheet/quick-guide.html#CellContents </url>

0

przekopiowałem oba kody i u mnie działa na xls i xlsx
oto kod:

package poi;

import java.io.File;
import java.io.FileInputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.apache.poi.ss.util.CellReference;

public class Main {

    public Main(FileInputStream in) throws Exception {
        Workbook wb = WorkbookFactory.create(in);

        Sheet sheet = wb.getSheetAt(0);
        for (Row row : sheet) {
            for (Cell cell : row) {
                CellReference cellRef = new CellReference(row.getRowNum(), cell.getColumnIndex());
                System.out.print(cellRef.formatAsString());
                System.out.print(" - ");

                switch (cell.getCellType()) {
                    case Cell.CELL_TYPE_STRING:
                        System.out.println("String: " + cell.getRichStringCellValue().getString());
                        break;
                    case Cell.CELL_TYPE_NUMERIC:
                        if (DateUtil.isCellDateFormatted(cell)) {
                            System.out.println("Date/Time: " + cell.getDateCellValue());
                        } else {
                            System.out.println("Numeric: " + cell.getNumericCellValue());
                        }
                        break;
                    case Cell.CELL_TYPE_BOOLEAN:
                        System.out.println("Boolean: " + cell.getBooleanCellValue());
                        break;
                    case Cell.CELL_TYPE_FORMULA:
                        System.out.println("Formula: " + cell.getCellFormula());
                        break;
                    default:
                        System.out.println();
                }
            }
        }


        Row row = sheet.getRow(0);
        Cell cell = row.getCell(0);

        if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
            System.out.println("jestesmy w if");
        } else {
            System.out.println("jetsesmy w else");
        }
    }

    public static void main(String[] args) {
        try {
            System.out.println("-------------------");
            new Main(new FileInputStream(new File("pecet.xlsx")));
            System.out.println("-------------------");
            new Main(new FileInputStream(new File("pecet3.xls")));
            System.out.println("-------------------");
        } catch (Exception ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

mam poi 3.6 a ty?, pokaż tworzenie lub wczytywanie Workbook

0

:-/ musiałem mieć coś namieszane w netbeans ponieważ dzisiaj po ponownym włączeniu wszystko działa poprawnie. Dzięki za odpowiedz.

A tak w odpowiedzi na Twoje pytanie używam poi 3.6 kod tworzenie wordbooka

String excel2007File = "plik.xlsx";//Plik z którego pobieramy dane
        XSSFWorkbook wb;
        wb = new XSSFWorkbook(excel2007File);
        Sheet sheet = wb.getSheetAt(0);
        Row row = sheet.getRow(0);
        Cell cell = row.getCell(0);

Pozdrawiam:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1