• jxl读取Excel表格数据


    调用jxl包实现Excel表格数据的读取,代码如下:

    import java.io.File;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.HashMap;
    
    import jxl.Sheet;
    import jxl.Workbook;
    import jxl.read.biff.BiffException;
    
    /**
     * @Description: Excel数据处理(使用中)
     * @author 
     * @date 创建时间:2016年10月11日下午12:49:46
     * @version 1.0
     */
    public class ExcelData {
        private Workbook workbook;
        private Sheet sheet;
        private int rows;
        private int columns;
        private String fileName;
        private String caseName;
        private ArrayList<String> arrkey = new ArrayList<String>();
        private String sourceFile;
        
        private Log log = new Log(this.getClass());
        /**
         * @param fileName excel文件名
         * @param caseName sheet名
         */
        public ExcelData(String fileName, String caseName) {
            super();
            this.fileName = fileName;
            this.caseName = caseName;
        }
    
        /**
         * 获得excel表中的数据
         */
        public Object[][] getExcelData() throws BiffException, IOException {
            workbook = Workbook.getWorkbook(new File(getPath()));
            sheet = workbook.getSheet(caseName);
            rows = sheet.getRows();
            columns = sheet.getColumns();
            // 为了返回值是Object[][],定义一个多行单列的二维数组
            HashMap<String, String>[][] arrmap = new HashMap[rows - 1][1];
            // 对数组中所有元素hashmap进行初始化
            if (rows > 1) {
                for (int i = 0; i < rows - 1; i++) {
                    arrmap[i][0] = new HashMap<String , String>();
                }
            } else {
                log.error("excel中没有数据");
            }
    
            // 获得首行的列名,作为hashmap的key值
            for (int c = 0; c < columns; c++) {
                String cellvalue = sheet.getCell(c, 0).getContents();
                arrkey.add(cellvalue);
            }
            // 遍历所有的单元格的值添加到hashmap中
            for (int r = 1; r < rows; r++) {
                for (int c = 0; c < columns; c++) {
                    String cellvalue = sheet.getCell(c, r).getContents();
                    arrmap[r - 1][0].put(arrkey.get(c), cellvalue);
                }
            }
            return arrmap;
        }
        
        /**
         * 获得excel文件的路径
         * @return
         * @throws java.io.IOException
         */
    
        public String getPath() throws IOException {       
            sourceFile = "test-data/" + fileName + ".xls"; 
            log.info("sourceFile = "+sourceFile);
            return sourceFile;
        }
    
    }

    调用方式如下:

        /**
         * 从对应Excel表格读取数据
         * 
         * @param 
         * @return
         * @throws Exception 
         */
        @DataProvider(name = "componentMessageQueryCase")
        private Object[][] QueryComponentMessageNumbers() throws Exception {
            // 获取Excel数据,得到一个map,依次传给test
            ExcelData e = new ExcelData("ComponentMessageTestCase", "componentMessageQueryCase");
            log.info("componentMessageQueryCase e.getExcelData() = " + e.getExcelData());
            return e.getExcelData();
        }    
        /**
         * 测试配件管理页面的查询功能
         * 
         * @param data 从对应Excel获取的测试数据
         * @return
         * @throws Exception 
         */
        @Test(dataProvider = "componentMessageQueryCase")
        private void componentMessageQueryCase(HashMap<String, String> data) throws Exception{
            log.info("测试配件查询功能");
            
            String OEMCode = data.get("OEMCode");
            String brandName = data.get("brandName");
            String seriesId = data.get("seriesId");
            String modelId = data.get("modelId");
            String componentNo = data.get("componentNo");
            String componentName = data.get("componentName");
            ComponentManageQuery.componentMessageQuery( OEMCode, brandName, seriesId, modelId, componentNo, componentName);
       }
  • 相关阅读:
    对面向对象设计原则的总结
    sql server连接字符串
    js页面加载进度条
    Yui.Compressor高性能ASP.NET开发:自动压缩CSS、JS
    asp.net利用多线程执行长时间的任务,客户端显示出任务的执行进度的示例(一)_转
    asp.net删除目录,Session丢失
    extjs ComboBox使用注意
    转:使Eclipse的智能感知可以像 Visual Studio 一样快速提示
    Android ContentProvider 填删改查 实例
    Windows Phone StackPanel 布局示例
  • 原文地址:https://www.cnblogs.com/dingziyin/p/6092824.html
Copyright © 2020-2023  润新知