2012-11-30 17 views

risposta

26

si deve saltare prime due righe utilizzando rownum() Qui è il codice di esempio

HSSFWorkbook  workBook = new HSSFWorkbook (fileSystem); 
HSSFSheet   sheet = workBook.getSheetAt (0); 
Iterator<HSSFRow> rows  = sheet.rowIterator(); 

while (rows.hasNext()) 
{ 
    HSSFRow row = rows.next(); 
    // display row number in the console. 
    System.out.println ("Row No.: " + row.getRowNum()); 
    if(row.getRowNum()==0 || row.getRowNum()==1){ 
    continue; //just skip the rows if row number is 0 or 1 
    } 
} 

Qui è un esempio completo

import org.apache.poi.hssf.usermodel.HSSFCell; 
import org.apache.poi.hssf.usermodel.HSSFRichTextString; 
import org.apache.poi.hssf.usermodel.HSSFRow; 
import org.apache.poi.hssf.usermodel.HSSFSheet; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import org.apache.poi.poifs.filesystem.POIFSFileSystem; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.io.InputStream; 

import java.util.Iterator; 

public class POIExcelReader 
{ 

/** Creates a new instance of POIExcelReader */ 
public POIExcelReader() 
{} 

@SuppressWarnings ("unchecked") 
public void displayFromExcel (String xlsPath) 
{ 
InputStream inputStream = null; 

try 
{ 
inputStream = new FileInputStream (xlsPath); 
} 
catch (FileNotFoundException e) 
{ 
System.out.println ("File not found in the specified path."); 
e.printStackTrace(); 
} 

POIFSFileSystem fileSystem = null; 

try 
{ 
fileSystem = new POIFSFileSystem (inputStream); 

HSSFWorkbook  workBook = new HSSFWorkbook (fileSystem); 
HSSFSheet   sheet = workBook.getSheetAt (0); 
Iterator<HSSFRow> rows  = sheet.rowIterator(); 

while (rows.hasNext()) 
{ 
HSSFRow row = rows.next(); 
if(row.getRowNum()==0 || row.getRowNum()==1){ 
     continue; //just skip the rows if row number is 0 or 1 
     } 
// once get a row its time to iterate through cells. 
Iterator<HSSFCell> cells = row.cellIterator(); 

while (cells.hasNext()) 
{ 
HSSFCell cell = cells.next(); 

System.out.println ("Cell No.: " + cell.getCellNum()); 

/* 
* Now we will get the cell type and display the values 
* accordingly. 
*/ 
switch (cell.getCellType()) 
{ 
    case HSSFCell.CELL_TYPE_NUMERIC : 
    { 

     // cell type numeric. 
     System.out.println ("Numeric value: " + cell.getNumericCellValue()); 

     break; 
    } 

    case HSSFCell.CELL_TYPE_STRING : 
    { 

     // cell type string. 
     HSSFRichTextString richTextString = cell.getRichStringCellValue(); 

     System.out.println ("String value: " + richTextString.getString()); 

     break; 
    } 

    default : 
    { 

     // types other than String and Numeric. 
     System.out.println ("Type not supported."); 

     break; 
    } 
} 
} 
} 
} 
catch (IOException e) 
{ 
e.printStackTrace(); 
} 
} 

public static void main (String[] args) 
{ 
POIExcelReader poiExample = new POIExcelReader(); 
String   xlsPath = "c://test//test.xls"; 

poiExample.displayFromExcel (xlsPath); 
} 
} 
+0

Ho bisogno di leggere il contenuto del file .xls e .xlsx, che ha 9 colonne e 100 righe. I contenuti letti devono essere aggiunti a un elenco e inseriti in un dl sql come inserto batch e il valore shud essere inserito nella colonna corrispondente. mi aiuti per favore !! – Priya

4

Apache POI fornisce due modi per accedere alle righe e le celle a un file Excel. Uno è un iteratore che ti dà tutte le voci, l'altro è di andare in loop per indice. (POI ti dirà anche le righe/colonne di inizio/fine). L'iteratore è spesso più semplice da utilizzare, ma entrambi sono altrettanto veloci.

Se si dispone di requisiti specifici per le righe da recuperare, suggerirei di utilizzare quest'ultimo. Il tuo codice dovrebbe essere qualcosa del tipo:

int FIRST_ROW_TO_GET = 2; // 0 based 

Sheet s = wb.getSheetAt(0); 
for (int i = FIRST_ROW_TO_GET; i < s.getLastRowNum(); i++) { 
    Row row = s.getRow(i); 
    if (row == null) { 
     // The whole row is blank 
    } 
    else { 
     for (int cn=row.getFirstCellNum(); cn<row.getLastCellNum(); cn++) { 
     Cell c = row.getCell(cn, Row.RETURN_BLANK_AS_NULL); 
     if (c == null) { 
      // The cell is empty 
     } else { 
      // Process the cell 
     } 
     } 
    } 
} 
+0

ciao signore, ho una domanda "come leggere solo l'ultima riga della prima cella" per favore aiutatemi –

Problemi correlati