2012-11-30 12 views

Odpowiedz

26

trzeba pominąć dwa pierwsze rzędy za pomocą rownum() .Tutaj jest przykładowy kod

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 
    } 
} 

Oto kompletny przykład

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

Potrzebuję przeczytać zawartość. Xls i. Xlsx plik, który ma 9 kolumn i 100 wierszy. Treść odczytu musi zostać dodana do listy i wstawiona do pliku sql db jako wsadowego wsadu, a wartość musi zostać wstawiona do odpowiedniej kolumny. proszę pomóż mi !! – Priya

4

Apache POI zapewnia dwa sposoby, aby uzyskać dostęp do wierszy i komórek w plik Excel. Jednym z nich jest iterator, który podaje wszystkie wpisy, drugi to pętla w górę według indeksu. (POI będzie również wskazywać wiersze/kolumny początkowe/końcowe/kolumny). Iterator jest często prostszy w użyciu, ale oba są równie szybkie.

Jeśli masz konkretne wymagania dotyczące wierszy do pobrania, proponuję użyć tego drugiego. Twój kod chciałby być coś takiego:

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

cześć mam pytanie "jak czytać tylko ostatni wiersz tylko pierwsza komórka" proszę pomóż mi –

Powiązane problemy