zoukankan      html  css  js  c++  java
  • 【11-29】excel reader

    package com.ka.common;
    
    import java.io.InputStream;
    import java.util.ArrayList;
    
    import org.apache.poi.hssf.usermodel.HSSFCell;
    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;
    
    import com.bucketing.common.business.entity.curve.IRCurveValue;
    import com.ka.common.pricingutils.CurveFactory;
    
    public abstract class DiscountCurveExcelReader {
    
        public static IRCurveValue readIRCurveValueFromExcel(String path) {
            InputStream is = DiscountCurveExcelReader.class.getClassLoader().getResourceAsStream(path);
            ArrayList<ArrayList<Object>> excelContent = readExcel2007(is);
            excelContent.remove(0);
            int[] terms = new int[excelContent.size()];
            double[] rates = new double[excelContent.size()];
            for (int i = 0; i < excelContent.size(); ++i) {
                ArrayList<Object> innerList = excelContent.get(i);
                terms[i] = Double.valueOf((Double.valueOf((String) innerList.get(1)) * 365)).intValue();
                double temp = Math.log(1 + 0.01 * (Double.valueOf((String) innerList.get(2)))) / Math.log(Math.E);
                rates[i] = temp;
            }
            IRCurveValue discountCurveValue = CurveFactory.getInstance().createIRCurveValue(terms, rates);
            return discountCurveValue;
        }
    
        public static ArrayList<ArrayList<Object>> readExcel2007(InputStream is) {
            ArrayList<ArrayList<Object>> rowList = new ArrayList<ArrayList<Object>>();
            ArrayList<Object> colList;
            try (XSSFWorkbook wb = new XSSFWorkbook(is)) {
                XSSFSheet sheet = wb.getSheetAt(0);
                XSSFRow row;
                XSSFCell cell;
                Object value;
                for (int i = sheet.getFirstRowNum(), rowCount = 0; rowCount < sheet.getPhysicalNumberOfRows(); i++) {
                    row = sheet.getRow(i);
                    colList = new ArrayList<Object>();
                    if (row == null) {
                        if (i != sheet.getPhysicalNumberOfRows()) {
                            rowList.add(colList);
                        }
                        continue;
                    } else {
                        rowCount++;
                    }
                    for (int j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) {
                        cell = row.getCell(j);
                        if (cell == null || cell.getCellType() == HSSFCell.CELL_TYPE_BLANK) {
                            if (j != row.getLastCellNum()) {
                                colList.add("");
                            }
                            continue;
                        }
                        switch (cell.getCellType()) {
                        case XSSFCell.CELL_TYPE_STRING:
                            value = cell.getStringCellValue();
                            break;
                        case XSSFCell.CELL_TYPE_NUMERIC:
                            value = String.valueOf(cell.getNumericCellValue());
                            break;
                        case XSSFCell.CELL_TYPE_BOOLEAN:
                            value = Boolean.valueOf(cell.getBooleanCellValue());
                            break;
                        case XSSFCell.CELL_TYPE_BLANK:
                            value = "";
                            break;
                        default:
                            value = cell.toString();
                        }
                        colList.add(value);
                    }
                    rowList.add(colList);
                }
                return rowList;
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
    }
    
    
    
  • 相关阅读:
    【转帖】asp.net mvc与webform区别
    [学习jquery]深入了解jquery(1)jquery对象
    windows ce 4.2/5.0/6.0/windows mobile设备直接连接PC端的SQLserver
    dotNet dispose 和 close的区别
    简易快速理解 ERP
    互联网盈利模式77种创新 [转]
    软件开发的基础知识[1]
    什么是 SHTML
    ASP.NET 2.0:弃用 DataGrid 吧,有新的网格控件了![msdn]
    主页制作五十式[好帖就要转]
  • 原文地址:https://www.cnblogs.com/achievec/p/7922018.html
Copyright © 2011-2022 走看看