码迷,mamicode.com
首页 > 编程语言 > 详细

java如何读取excel文件

时间:2015-03-30 19:10:57      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:java 读取 excel

我在测试的时候经常需要去改动case,如果把所有case直接写在单元测试中,非常冗余,我希望可以直接从excel去读取我的测试数据,经过几次试验终于成功了,读取excel主要借助poi jar包,源码如下所示。poi jar包下载地址http://down.51cto.com/data/2012838

ps:因为测试数据仅string类型已够用,所以代码只支持string类型的cell 内容,如果是想支持其他数据类型,需要进一步对cell内容进行判断,此处略过~

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;


public class readExcelSelf {
    
    public static void main (String[] args) throws IOException{
        
        String filePath = "F:\\ExcelDemo.xlsx";
        
        FileInputStream isr = new FileInputStream(filePath);
        
        BufferedInputStream bis = new BufferedInputStream(isr);
        
        int startRowIndex = 1;//从指定行开始读取数据,因为通常第一行都是作为标题行
        
        String[][] content = getContent(bis,startRowIndex);//excel的数据存如"行*列"的二维数组
        
        bis.close();
        
        int contentLength = content.length;
        
        for (int i=0;i<contentLength;i++){
            
            for(int j=0;j<content[i].length;j++){
                
                System.out.print(content[i][j]+"\t");
                
            }
            
            System.out.println();
            
        }
        
    }

    private static String[][] getContent(BufferedInputStream bis, int sri) throws IOException {
        
        XSSFWorkbook xw = new XSSFWorkbook(bis);
        
        XSSFRow row = null;
        
        XSSFCell cell = null;
        
        XSSFSheet sheet = null;
        
        List<String[]> rowArrays = new ArrayList<String[]>();
        
        int maxColumnSize = 0;
               
        for (int i=0;i<xw.getNumberOfSheets();i++){
            
            sheet = xw.getSheetAt(i);
            
            for (int rowIndex=sri;rowIndex<=sheet.getLastRowNum();rowIndex++){
                
                row = sheet.getRow(rowIndex);
                
                if(row == null){
                    
                    continue;
                    
                }
                
                int columnSize = row.getLastCellNum();
                
                if(columnSize>maxColumnSize){
                    
                    maxColumnSize = columnSize;
                    
                }
                
                String[] rowValue = new String[columnSize];
                
                Arrays.fill(rowValue, "");
                
                boolean isRowValueNull = false;
                
                for (int columnIndex=0;columnIndex<columnSize;columnIndex++){
                    
                    cell = row.getCell(columnIndex);
                    
                    if(cell== null || cell.getStringCellValue().trim().equals("")){
                        
                        continue;
                        
                    }
                    
                    else{
                        
                        rowValue[columnIndex]=cell.getStringCellValue();
                    }
                    
                    isRowValueNull = true;
                    
                }
                
                if(isRowValueNull){
                    
                    rowArrays.add(rowValue);
                    
                }
                
            }
            
        }
        
        String[][] rowColumnArray = new String[rowArrays.size()][maxColumnSize];
        
        for(int i=0;i<rowArrays.size();i++){
            
            rowColumnArray[i]=rowArrays.get(i);
            
        }
        
        return rowColumnArray;
    }

}

        
    

 





java如何读取excel文件

标签:java 读取 excel

原文地址:http://smileyes.blog.51cto.com/6027700/1626369

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!