【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;
        }
    }
}
时间: 2024-11-13 07:56:48

【11-29】excel reader的相关文章

【游戏开发】Excel表格批量转换成lua的转表工具

一.简介 在上篇博客<[游戏开发]Excel表格批量转换成CSV的小工具> 中,我们介绍了如何将策划提供的Excel表格转换为轻便的CSV文件供开发人员使用.实际在Unity开发中,很多游戏都是使用Lua语言进行开发的.如果要用Lua直接读取CSV文件的话,又要写个对应的CSV解析类,不方便的同时还会影响一些加载速度,牺牲游戏性能.因此我们可以直接将Excel表格转换为lua文件,这样就可以高效.方便地在Lua中使用策划配置的数据了.在本篇博客中,马三将会和大家一起,用C#语言实现一个Exce

阮郎归&#183;华夏山河【11首】

阮郎归·华夏山河[11首] 杨森翔     阮郎归·交河古城(新韵) 大风独唱有豪雄,交河饮马盟.未销垒土御强攻,白杨岭上芃. 感天地,叹无穷,鬼神途道空.登楼佛拜旧留踪,画角幻碧穹. 阮郎归·八达岭 龙蟠万里气吞虹,八达自古雄.流连堡堞啸长风,群山驰目红. 秦时月,汉时风,唐时降异骢.豪情未减老村翁,登临再弄弓. 阮郎归·长城老龙头 关山万里似长龙,千年扼海雄.澄楼顶上沐天风,靖边雪浪惊. 舒望眼,阔开膺,远思百代功.龙头一揽慰余衷,秋高万里红. 阮郎归·长白山(新韵) 嵯峨远岫浴霞红,晴岚缥

【HANA系列】SAP 【第一篇】EXCEL连接SAP HANA的方法(ODBC)

公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP [第一篇]EXCEL连接SAP HANA的方法(ODBC) 前言部分 大家可以关注我的公众号,公众号里的排版更好,阅读更舒适. 正文部分 事前工作准备如下[office2016]: 1.Power Query在Excel 2016中称为Get&Transform.此处提供的信息适用于两者. 要了解更多信息,请参阅Excel

【HANA系列】SAP 【第二篇】EXCEL连接SAP HANA的方法(ODBC)

公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP [第二篇]EXCEL连接SAP HANA的方法(ODBC) 前言部分 大家可以关注我的公众号,公众号里的排版更好,阅读更舒适. 正文部分 前言介绍[office2010]: SAP HANA的最主要功能就是建模,建模后给BW或BO来展现结果. SAP HANA中的报表可以在SAP的BusinessObjects应用程序套件

【2016.11.29】HTML框架

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>框架</title> </head> <frameset rows="64,*" frameborder="no"> <frame src="top.html" /> <frameset co

【Python开发】Excel的操作之——读取

主要思路参考这篇博客的内容,把地址贴上: http://www.cnblogs.com/zhoujie/p/python18.html 下面贴上我自己的代码 读取excel数据的demo代码如下: 1 def read_excel_demo(): 2 # 打开文件 3 workbook = xlrd.open_workbook(r'C:\Users\wxz\Desktop\2018年信用卡花费(Kevin).xlsx') 4 # 获取所有sheet 5 print('打印所有sheet表名称:'

【游戏开发】Excel表格批量转换成CSV的小工具

一.前言 在工作的过程中,我们有时可能会面临将Excel表格转换成CSV格式文件的需求.这尤其在游戏开发中体现的最为明显,策划的数据文档大多是一些Excel表格,且不说这些表格在游戏中读取的速度,但就论占用内存来说,同样的数据量Excel表格所占用的内存要远远大于CSV,因此将Excel转换成CSV势在必行.如果单单转换一个Excel表格还好,直接另存为就搞定的,但是如何将一个文件下的N个Execl表格转成CSV呢?今天马三就来和大家一起用Python撸一个Excel表格批量转换CSV的小工具—

【BestCoder】【Round#29】

T1 啊……a^b 与 c^d比较大小,我们可以两边取对数,转化成 log(a^b)=b*log(a) 和d*log(c) 这样就能直接算了……然后稍微搞一下精度什么的就A了=.= 1 //BC #29 2 #include<cmath> 3 #include<cstdio> 4 #include<cstdlib> 5 #include<cstring> 6 #include<iostream> 7 #include<algorithm&g

【算法29】速算24

问题描述 题目来源:PAT ds 2-08 给定四个数字a, b, c, d,取值范围为[1, 13]:添加合适的运算符 + , - , * , /, 和括号(, )使得表达式等于24,给出一种可能的表达式方案:如果不可能则返回-1. 例如:输入2, 3, 12, 12, 输出 ((3-2)*12) + 12. 输入5, 5, 5, 2, 输出-1. 问题分析 这个题目似乎没有好的算法,只能暴力搜索. 首先对于所有给个数字进行全排列,总过有$A_4^4 = 24$中排列方式: 然后对于每一种排列