2014-12-17 2 views
-3

Мне нужно прочитать одну ячейку (пример A1) в моей программе java. Я могу прочитать весь контент в моей программе, но как я могу читать только определенную ячейку?Как читать одну ячейку из листа excel в java-программу,

import java.io.*; 
import java.util.Iterator; 
import org.apache.poi.hssf.usermodel.HSSFSheet; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import org.apache.poi.ss.usermodel.Cell; 
import org.apache.poi.ss.usermodel.Row; 
import org.apache.poi.xssf.usermodel.XSSFSheet; 
import org.apache.poi.xssf.usermodel.XSSFWorkbook; 

class JavaApplication2 
{ 
static void readXlsx(File inputFile) 
{ 
try 
{ 
    // Get the workbook instance for XLSX file 
    XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream(inputFile)); 

    // Get first sheet from the workbook 
    XSSFSheet sheet = wb.getSheetAt(0); 

    Row row; 
    Cell cell; 

    // Iterate through each rows from first sheet 
    Iterator<Row> rowIterator = sheet.iterator(); 

    while (rowIterator.hasNext()) 
    { 
      row = rowIterator.next(); 

      // For each row, iterate through each columns 
      Iterator<Cell> cellIterator = row.cellIterator(); 

      while (cellIterator.hasNext()) 
      { 
      cell = cellIterator.next(); 

      switch (cell.getCellType()) 
      { 

      case Cell.CELL_TYPE_BOOLEAN: 
        System.out.println(cell.getBooleanCellValue()); 
        break; 

      case Cell.CELL_TYPE_NUMERIC: 
        System.out.println(cell.getNumericCellValue()); 
        break; 

      case Cell.CELL_TYPE_STRING: 
        System.out.println(cell.getStringCellValue()); 
        break; 

      case Cell.CELL_TYPE_BLANK: 
        System.out.println(" "); 
        break; 

      default: 
        System.out.println(cell); 

      } 
      } 
    } 
} 
catch (Exception e) 
{ 
    System.err.println("Exception :" + e.getMessage()); 
} 
} 

static void readXls(File inputFile) 
{ 
try 
{ 
    // Get the workbook instance for XLS file 
    HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(inputFile)); 
    // Get first sheet from the workbook 
    HSSFSheet sheet = workbook.getSheetAt(0); 
    Cell cell; 
    Row row; 

    // Iterate through each rows from first sheet 
    Iterator<Row> rowIterator = sheet.iterator(); 

    while (rowIterator.hasNext()) 
    { 
      row = rowIterator.next(); 

      // For each row, iterate through each columns 
      Iterator<Cell> cellIterator = row.cellIterator(); 

      while (cellIterator.hasNext()) 
      { 
      cell = cellIterator.next(); 

      switch (cell.getCellType()) 
      { 

      case Cell.CELL_TYPE_BOOLEAN: 
        System.out.println(cell.getBooleanCellValue()); 
        break; 

      case Cell.CELL_TYPE_NUMERIC: 
        System.out.println(cell.getNumericCellValue()); 
        break; 

      case Cell.CELL_TYPE_STRING: 
        System.out.println(cell.getStringCellValue()); 
        break; 

      case Cell.CELL_TYPE_BLANK: 
        System.out.println(" "); 
        break; 

      default: 
        System.out.println(cell); 
      } 
      } 
    } 

} 

catch (FileNotFoundException e) 
{ 
    System.err.println("Exception" + e.getMessage()); 
} 
catch (IOException e) 
{ 
    System.err.println("Exception" + e.getMessage()); 
} 
} 

public static void main(String[] args) 
{ 
    File inputFile = new File("C://users/admin/Desktop/Content.xls"); 

    readXls(inputFile); 

} 
} 

это то, что я сделал, я читаю весь контент, но мне нужно конкретную ячейку

+3

Это может быть полезно, если вы добавите, что вы сделали. –

+0

какую библиотеку вы используете для чтения excel? JXL? – MihaiC

+0

С POI потоковым API вы можете переместить книгу, пока не найдете то, что вам нужно. Но из-за того, что файлы Excel структурированы, вы, очевидно, не можете найти данные «A1», не читая много другой информации. Далее, что, если 'A1' содержит формулу? –

ответ

2

Вы можете использовать row.getCell() метод.
Попробуйте это:

Workbook workbook = WorkbookFactory.create(yourFile.getInputstream()); 

Sheet sheet = workbook.getSheet(0);//1,2,3 

Iterator<Row> rowIterator = sheet.iterator(); 

     while (rowIterator.hasNext()) { 

      Row row = rowIterator.next(); 

      row.getCell(0); 
      row.getCell(1); 
} 
+0

Не следует прерывать после первого запуска цикла while, так как вам нужно всего лишь получить 1 значение no нужно ли ему запускать больше? – db579

+1

Я просто указываю на метод getCell. Ну, мы можем изменить код как необходимость программы. –

Смежные вопросы