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;
            }
        }
    }
    
    
    
  • 相关阅读:
    网络爬虫学习软件篇-Python(一)下载安装(超详细教程,傻瓜式说明)
    Vue.js+BootStrap+.Net Core开发后台管理系统 初次接触学习记录(11-7)
    形参 ref 到底是做什么用的?
    SweetAlert拒绝单一的弹出警告框
    轻松学习C语言编程之函数知识详解
    C语言的这个小知识点,竟然连开发多年的老司机都了解的不完全
    「C语言」编程学习—控制语句goto语句解析!
    数学思维+C语言画小猪佩奇,来试试?
    抖音很火的告白编程程序,C语言一样也能做
    世界最强的编程语言:C语言
  • 原文地址:https://www.cnblogs.com/achievec/p/7922018.html
Copyright © 2011-2022 走看看