java 读取Excel

Excel有两种后缀名的:

一种是:.xls

二种是:xlsx

下面我们就分别读取一下吧。

先做好准备工作,导入我们需要的jar包

<dependency>  
		    <groupId>org.apache.poi</groupId>  
		    <artifactId>poi</artifactId>  
		    <version>3.16</version>  
		</dependency> 
		<dependency>
           <groupId>org.apache.poi</groupId>
           <artifactId>poi-ooxml</artifactId>
           <version>3.16</version>
        </dependency>

这里我们选用的版本是3.16的。不知道为什么小编使用3.17的会出问题。

        HSSFWorkBook:操作2003版本以前的(包括2003版本),扩展名.xls,该类在org.apache.poi:poi中

XSSFWorkBook:操作2007版本以后的(包括2007版本),拓展名.xlsx,该类在org.apache.poi:poi-ooxml中

下面我们看代码来实际操作一下。

package Se_01;

import java.io.File;
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;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

/*	              实现操作 excel
 * 
 * 
 * 
	 * 	HSSFWorkBook:操作2003版本以前的(包括2003版本),扩展名.xls,该类在org.apache.poi:poi中
	
		XSSFWorkBook:操作2007版本以后的(包括2007版本),拓展名.xlsx,该类在org.apache.poi:poi-ooxml中
	
		SXSSFWorkBook:对于海量的数据进行操作
	
		对于不同版本的EXCEL文档要使用不同的工具类,如果使用错了,会提示如下错误信息。
	
		org.apache.poi.openxml4j.exceptions.InvalidOperationException
	
		org.apache.poi.poifs.filesystem.OfficeXmlFileException
 * */
public class DqExcel {
	
	public static void main(String[]arge){
		read();
		System.out.println("----------下面是 .xlsx---------");
		read1();
	}
	
	/* 实现读取  excel   .xls  为后缀的
	 * **
	 */
	public static void read() {
		  File file = new File("C:\\Users\\Administrator\\Desktop\\poi.xls");
	        if (!file.exists())
	            System.out.println("文件不存在");
	        try {
	            //1.读取Excel的对象
	            POIFSFileSystem poifsFileSystem = new POIFSFileSystem(new FileInputStream(file));
	            //2.Excel工作薄对象
	            HSSFWorkbook hssfWorkbook = new HSSFWorkbook(poifsFileSystem);
	            //3.Excel工作表对象
	            HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(0);
	            //总行数
	            int rowLength = hssfSheet.getLastRowNum()+1;
	            //4.得到Excel工作表的行
	            HSSFRow hssfRow = hssfSheet.getRow(0);
	            //总列数
	            int colLength = hssfRow.getLastCellNum();
	            //得到Excel指定单元格中的内容
	            HSSFCell hssfCell = hssfRow.getCell(0);
	            //得到单元格样式
	            CellStyle cellStyle = hssfCell.getCellStyle();
	            System.out.println("----------下面是 .xls---------");
	            for (int i = 0; i < rowLength; i++) {
	                //获取Excel工作表的行
	                HSSFRow hssfRow1 = hssfSheet.getRow(i);
	                for (int j = 0; j < colLength; j++) {
	                    //获取指定单元格
	                    HSSFCell hssfCell1 = hssfRow1.getCell(j);

	                    //Excel数据Cell有不同的类型,当我们试图从一个数字类型的Cell读取出一个字符串时就有可能报异常:
	                    //Cannot get a STRING value from a NUMERIC cell
	                    //将所有的需要读的Cell表格设置为String格式
	                    if (hssfCell1 != null) {
	                        hssfCell1.setCellType(CellType.STRING);
	                    }

	                    //获取每一列中的值
	                    
	                    System.out.print(hssfCell1.getStringCellValue()+"\t");
	                }
	                System.out.println();
	            }
	        } catch (IOException e) {
	            e.printStackTrace();
	        }
	}
	
	
	/***
	 *    实现读取    后缀为  .xlsx  的excel
	 */
	
	public static void read1() {
		 File file = new File("C:\\Users\\Administrator\\Desktop\\测试数据.xlsx");  
	      
	       
	        try {  
	        	
	            Workbook workbook = new XSSFWorkbook(file);
	           
	            //工作表对象  
	            org.apache.poi.ss.usermodel.Sheet sheet = workbook.getSheetAt(0);  
	            //总行数  
	            int rowLength = sheet.getLastRowNum()+1;  
	            //工作表的列  
	            Row row = sheet.getRow(0);  
	            //总列数  
	            int colLength = row.getLastCellNum();  
	            //得到指定的单元格  
	            Cell cell = row.getCell(0);  
	            //得到单元格样式  
	            CellStyle cellStyle = cell.getCellStyle();  
	            System.out.println("行数:" + rowLength + ",列数:" + colLength);  
	            for (int i = 0; i < rowLength; i++) {  
	                row = sheet.getRow(i);  
	                for (int j = 0; j < colLength; j++) {  
	                    cell = row.getCell(j);  
	                    //Excel数据Cell有不同的类型,当我们试图从一个数字类型的Cell读取出一个字符串时就有可能报异常:  
	                    //Cannot get a STRING value from a NUMERIC cell  
	                    //将所有的需要读的Cell表格设置为String格式  
	                    if (cell != null)  
	                        cell.setCellType(CellType.STRING);  
	  
	                    //对Excel进行修改  
	                   // if (i > 0 && j == 1)  
	                       // cell.setCellValue("1000");  
	                    System.out.print(cell.getStringCellValue() + "\t");  
	                }  
	                System.out.println();  
	            }  
	  
	            //将修改好的数据保存  
//	            OutputStream out = new FileOutputStream(file);  
//	            workbook.write(out);  
	        } catch (Exception e) {  
	            e.printStackTrace();  
	        }  
	}
	
	

}





猜你喜欢

转载自blog.csdn.net/qq_38318622/article/details/80234583