POI组件读Excel

2013/09/25 14:23
阅读数 210

所需Jar包:poi-3.9-20121203.jar
Excel文件存放路径:C:/Planet Power/demo.xls,这个可以根据你自己想要读取文件的路径而改变,

修改这条语句中的路径即可:

FileInputStream excelFIS = new FileInputStream("C:\\Planet Power\\demo.xls");

/**
 * @author Shaene M. Siders, Dragon Under Glass
 * http://www.DragonUnderGlass.com
 * date: 2010
 */

//Import the Java packages to use
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class ExcelReader {

	/**
	 * @param args is not used.  
	 */
	public static void main(String[] args) {
	
		
		   // Create a FileInputStream to hold the file.  Use double back-slashes to create one "escaped" slash.
		   // Use error handling (try/catch) around its creation in case 
		   // the file to read does not exist.
		   // Be sure to import java.io.FileNotFoundException and java.io.IOException, or just use 
		   // the superclass IOException to handle both.  
		
		try {
					FileInputStream excelFIS = new FileInputStream("C:\\Planet Power\\demo.xls");
	
		 // Create an Excel Workbook Object using the FileInputStream created above 
		 // (which contains the file).
		 // Use error handling around its creation in case of Input/Output Exception
	
			HSSFWorkbook excelWB = new HSSFWorkbook(excelFIS);//创建excel工作对象

			// Next, get information out of that Workbook.
			// Start by getting the Spreadsheet (Excel books can have several 
			// sheets).  Assuming there is just one sheet, it's the zero sheet.
			
			HSSFSheet topSheet = excelWB.getSheetAt(0); 
			

			// getRow() returns an HSSFRow object, but the numbering
			// system is logical, not physical, and zero based.
			// e.g. use getRow(2) to get the third row.
			
			HSSFRow thirdRow = topSheet.getRow(2);
			
	
			// Get the first two cells in the row
			HSSFCell lastnameCell = thirdRow.getCell(0);
			HSSFCell firstnameCell = thirdRow.getCell(1);
			
			// Get the string information in the cells
			String firstName = firstnameCell.getStringCellValue();
			String lastName = lastnameCell.getStringCellValue();
			
			// Print out the value of the cells
			System.out.println(firstName + "************** " + lastName);
					
			// Traverse the sheets by looping through sheets, rows, and cells.			
			// Remember, excelWB is the workbook object obtained earlier.
			// Outer Loop:  Loop through each sheet
			for (int sheetNumber = 0; sheetNumber < excelWB.getNumberOfSheets(); sheetNumber++) {
				HSSFSheet oneSheet = excelWB.getSheetAt(sheetNumber);//获取excel中的Sheet表对象
				System.out.println("The sheet num is " + excelWB.getNumberOfSheets());
				// Now get the number of rows in the sheet
				int rows = oneSheet.getPhysicalNumberOfRows();		//获取每一张Sheet表中的物理总行数
				System.out.println("the num of row is :" + rows);
				// Middle Loop:  Loop through rows in the sheet
				for (int rowNumber = 0; rowNumber < rows; rowNumber++) {
					HSSFRow oneRow = oneSheet.getRow(rowNumber);    //获取每一行对象
					
					// Skip empty (null) rows.
					if (oneRow == null) {
						continue;
					}
					
					// Get the number of cells in the row
					int cells = oneRow.getPhysicalNumberOfCells();	//获取每一行中的单元格
					System.out.println("the number of cells in the row "+ cells);
					// Inner Loop:  Loop through each cell in the row

					for (int cellNumber = 0; cellNumber < cells; cellNumber++) {
						HSSFCell oneCell = oneRow.getCell(cellNumber); //获取单元格对象
			
						// Test the value of the cell.
						// Based on the value type, use the proper 
						// method for working with the value.


				         // If the cell is blank, the cell object is null, so don't 
				         // try to use it.  It will cause errors.
						 // Use continue to skip it and just keep going.
						if (oneCell == null) {
							continue;
						}
						switch (oneCell.getCellType()) {	//获取单元格类型并判断
						
							case HSSFCell.CELL_TYPE_STRING:
								System.out.println(oneCell.getStringCellValue());	
								break;
						
			
							case HSSFCell.CELL_TYPE_FORMULA:
								System.out.println(oneCell.getCellFormula());
								break;

							case HSSFCell.CELL_TYPE_NUMERIC:
								System.out.println(oneCell.getNumericCellValue());
								break;
								
							case HSSFCell.CELL_TYPE_ERROR:
								System.out.println("Error!");
								break;
						
						}	
						

					// End Inner Loop
					}
				// End Middle Loop	
				}
			// End Outer Loop
			}
		// End Try	
		}
		catch (IOException e) {
			System.out.println("Input/Output Exception!");
		}
	

		
//End Main Method		
	}

	
//End Class Definition	
}


展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部