java导入使用Apache导入Excel的简单实现
package com.bruce.geekway.tonglian.job; import java.io.File; import java.io.FileInputStream; import java.io.Serializable; import java.lang.reflect.Field; import java.math.BigDecimal; import java.util.Date; import java.util.Iterator; import org.apache.commons.lang3.StringUtils; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import com.bruce.geekway.utils.SeasonUtils; public class TestImportHS300ExcelData { public static void main(String[] args) throws Exception { String[] fieldList = new String[]{"stockDate","open","high","low","close","turnover","volume"}; TestImportHS300ExcelData t = new TestImportHS300ExcelData(); t.importExcel(new File("/Users/yanghl/Downloads/hs30002.xlsx"),HS300StockData.class,fieldList); } public void importExcel(File file,Class clazz,String[] fieldList) throws Exception { try { Workbook book = null; Sheet sheet = null; // 得到工作表 if(file.getName().endsWith("xlsx")){ book = new XSSFWorkbook(new FileInputStream(file)); }else if(file.getName().endsWith("xls")){ book = new HSSFWorkbook(new FileInputStream(file)); } // 得到第一页 sheet = book.getSheetAt(0); // 得到第一面的所有行 Iterator<Row> row = sheet.rowIterator(); /** * 标题解析 */ // 得到第一行,也就是标题行 Row title = row.next(); // 得到第一行的所有列 Iterator<Cell> cellTitle = title.cellIterator(); // 循环标题所有的列 StringBuilder sb = new StringBuilder(); while (cellTitle.hasNext()) { Cell cell = cellTitle.next(); sb.append(cell.getStringCellValue().trim()).append(" "); } System.out.println(sb.toString()); /** * 解析内容行 */ while (row.hasNext()) { // 标题下的第一行 Row rown = row.next(); System.out.println(" row num = " + rown.getRowNum()); // 行的所有列 Iterator<Cell> cellbody = rown.cellIterator(); Object result = clazz.newInstance(); // 遍历一行的列 while (cellbody.hasNext()) { // System.out.println("lastRow = " + sheet.getLastRowNum() + " nowRown =" +rown.getRowNum()); //cell.getNumericCellValue() 会有默认值 cell.toString() 不会有默认值 //遍历每一列 Cell cell = cellbody.next(); //反射获取对象的字段 Field filed = result.getClass().getDeclaredField(fieldList[cell.getColumnIndex()]); filed.setAccessible(true); if(filed.getType() == Date.class){ filed.set(result, cell.getDateCellValue()); continue; } if(filed.getType() == Double.class){ filed.set(result, cell.getNumericCellValue()==0 ? null : cell.getNumericCellValue()); continue; } if(filed.getType() == BigDecimal.class){ filed.set(result, getRoundForString(cell.toString())); continue; } if(filed.getType() == Integer.class){ filed.set(result, StringUtils.isBlank(cell.toString()) ? null : Integer.parseInt(cell.toString())); continue; } if(filed.getType() == String.class){ filed.set(result, cell.getStringCellValue()); } } System.out.println("++++" + SeasonUtils.getGson().toJson(result)); } } catch (Exception e) { e.printStackTrace(); throw e; } } public static BigDecimal getRoundForString(String val) { if(StringUtils.isBlank(val)) return null; return new BigDecimal(val).setScale(2, BigDecimal.ROUND_HALF_UP); } } class HS300StockData implements Serializable{ /** * */ private static final long serialVersionUID = 1L; private Date stockDate; private String stockCode; private String stockName; private Double open ; //开盘价 private BigDecimal close; //收盘价 private BigDecimal high; //最低 private BigDecimal low; //最高 private BigDecimal preClose; //早日收盘价 private BigDecimal volume;//成交量 private BigDecimal turnover;//成交额 public Date getStockDate() { return stockDate; } public void setStockDate(Date stockDate) { this.stockDate = stockDate; } public String getStockCode() { return stockCode; } public void setStockCode(String stockCode) { this.stockCode = stockCode; } public String getStockName() { return stockName; } public void setStockName(String stockName) { this.stockName = stockName; } public Double getOpen() { return open; } public void setOpen(Double open) { this.open = open; } public BigDecimal getClose() { return close; } public void setClose(BigDecimal close) { this.close = close; } public BigDecimal getHigh() { return high; } public void setHigh(BigDecimal high) { this.high = high; } public BigDecimal getLow() { return low; } public void setLow(BigDecimal low) { this.low = low; } public BigDecimal getPreClose() { return preClose; } public void setPreClose(BigDecimal preClose) { this.preClose = preClose; } public BigDecimal getVolume() { return volume; } public void setVolume(BigDecimal volume) { this.volume = volume; } public BigDecimal getTurnover() { return turnover; } public void setTurnover(BigDecimal turnover) { this.turnover = turnover; } }
参考地址:
http://blog.csdn.net/hiping_cao/article/details/24460423
http://www.cnblogs.com/mabaishui/p/5826864.html
相关推荐
VMware workstation
光伏蓄电池单相并网模型:MPPT升压电路、桥式逆变与智能控制策略仿真结果展示,光伏蓄电池单相并网模型。 带参考文件,模型说明文件 模型内容: 1.光伏+MPPT+boost升压电路+桥式逆变 2.电池模型+电池控制器+直流母线控制 3.稳定交流负载+功率控制器+pwm调制 仿真结果: 1.直流母线380V稳定输出 2.逆变输出与单相220V电网同频同相 3.光伏功率充足时为电池充电,光伏输出不足电池放电 ,光伏蓄电池单相并网模型; 光伏MPPT; boost升压电路; 桥式逆变; 电池模型; 电池控制器; 直流母线控制; 稳定交流负载; 功率控制器; pwm调制; 380V直流母线稳定输出; 逆变输出与电网同频同相; 光伏充放电管理。,光伏储能单相并网模型:实现功率调度与电压稳定研究报告
欧洲新闻 English_Botox 肉毒杆菌行业分数据 英语 John.pdf
启蒙小游戏
基于MATLAB与Cplex求解器的冷热电多微网系统双层优化储能服务配置策略研究,MATLAB代码:基于储能电站服务的冷热电多微网系统双层优化配置 电网技术文章,《基于储能电站服务的冷热电多微网系统双层优化配置》复现 仿真平台:MATLAB,需要用到cplex求解器 ,关键词:基于储能电站服务;冷热电多微网系统;双层优化配置;MATLAB代码;cplex求解器;电网技术文章;复现;仿真平台。,"MATLAB仿真复现:多微网系统双层优化配置及其在储能电站服务的实践"
三相异步电机本体模型Matlab Simulink仿真模拟与性能研究参考模型,三相异步电机本体模型 Matlab Simulink仿真模型(成品) 本模型利用数学公式搭建了三相异步电机的模型,可以很好的模拟三相异步电机的运行性能,适合研究电机本体时修改参考,电机的各波形都很好可以很好的模拟三相电机 ,三相异步电机本体模型; Matlab Simulink仿真模型; 数学公式搭建模型; 运行性能模拟; 电机波形模拟。,基于Matlab Simulink的三相异步电机本体模型仿真研究
qt-opensource-windows-x86-5.12.12.zip.004
1、文件内容:google-guice-3.1.3-9.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/google-guice-3.1.3-9.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
1、文件内容:gnome-getting-started-docs-cs-3.28.2-1.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/gnome-getting-started-docs-cs-3.28.2-1.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
Matlab Simulink下的二阶线性自抗扰控制器(LADRC)仿真模型:快速响应与优异抗干扰性能,成功应用于电机速度控制,matlab simulink二阶线性自抗扰控制器(LADRC)仿真模型,已经封装完成,响应速度快,抗扰能力相较于传统pi更优秀。 采用线性ADRC相较于非线性ADRC大大减少了调参难度,已成功用于电机速度环替代传统pi。 ,关键词:Matlab Simulink;二阶线性自抗扰控制器(LADRC);仿真模型;封装完成;响应速度快;抗扰能力优秀;线性ADRC;调参难度低;电机速度环;传统PI替代。,Matlab Simulink:二阶线性自抗扰控制器(LADRC)仿真模型,调参简便,响应快速且抗扰性强
适用操作系统:linux。 适用CPU架构:x64。
欧洲新闻 RF Mixer(ENG) 射频混频器行业分数据 英语 Kira.pdf
1、文件内容:gnutls-c++-3.3.29-9.el7_6.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/gnutls-c++-3.3.29-9.el7_6.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
该工具主要实现jar包目录共享
RS422与MIL-STD-1553B协议转换:BU61580逻辑替代与扩展配置特性解析,RS422-MIL1553B 协议转 支持BC RT BM 1553B逻辑可以原位替BU61580协议芯片 配置寄存器和BU61580一样 存储器范围和BU61580一样4K*16bit 可外接扩展64K*16bit 实现过程:通过RS422去配置1553B寄存器和存储器 然后将数据通过RS422打印出来 PCI CPCI接口类似 可设计板卡也可以代码移植 ,核心关键词:RS422; MIL1553B协议转换; BC RT BM支持; 1553B逻辑原位替换BU61580协议芯片; 配置寄存器与BU61580相同; 存储器范围4K*16bit可扩展至64K*16bit; RS422配置1553B寄存器和存储器; 数据打印通过RS422; PCI CPCI接口; 设计板卡; 代码移植。,"RS422-MIL1553B协议转换卡:BU61580芯片替代方案"
内容概要:本研究围绕七鳃鳗(lamprey)适应性别比例机制,采用数学建模和生态系统评估的方法,探究了该机制对七鳃鳗种群及其所在生态系统的正面与负面影响。首先,在引入七鳃鳗生活史的基础上提出了两个模型:一是七鳃鳗种群迭代模型(Model I),二是包含物种丰富度、稳定性和生物量评估的BDS评价模型(Model II)。这两个模型共同用于量化适应性别比率对生态稳定性以及系统内部竞争动态的影响,并揭示出该比率能促进生物多样性和生物质量,但也会降低种群抵御环境压力的能力。随后,通过仿真验证,研究发现这种特性提高了整个生态系统的韧性并在环境改善时加快平衡重建速度;然而它同时也削弱了一些物种的竞争地位并减少了某些特定寄生鱼类的数量。 适用人群:对于从事生态学、动物学及相关跨学科研究人员而言是一份有价值的内容。此外,也适合作为高级生物课程的补充材料。 使用场景及目标:本文有助于深入理解入侵物种如何响应外部环境因素改变自身属性以达到适应性进化的效果,适用于那些希望进一步探索生态学中复杂互动关系的人士;也可作为教学案例,展示多维度视角下生态系统的定量研究方法和结论推导过程。 其他说明:本文提供的数据和模型不仅可用于七鳃鳗种群的具体研究中,还可以作为类似物种研究的一个通用框架来应用到其它生物类型的建模工作中去,从而提供广泛的参考价值。同时文章还指出了现有工作的局限性和未来改进的方向。
模块化多电平变换器(MMC)仿真研究:逼近调制与环流抑制策略及双闭环解耦控制揭秘,模块化多电平变器(MMC)matlab仿真 最近电平逼近调制-载波层叠-载波移相调制 二倍频负序环流抑制 子模块电容电压排序 整流 逆变—电压电流双闭环解耦控制 快速学习MMC必备 ,模块化多电平变换器(MMC); MATLAB仿真; 最近电平逼近调制; 载波层叠; 载波移相调制; 二倍频负序环流抑制; 子模块电容电压排序; 整流逆变; 电压电流双闭环解耦控制; 快速学习MMC必备。,"模块化多电平变换器(MMC)的Matlab仿真研究:多调制策略与环流抑制"
1、文件内容:glusterfs-6.0-61.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/glusterfs-6.0-61.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
重庆市公共数据资源授权运营管理实施办法(试行)(公开征求意见稿).docx
二自由度整车模型:状态空间方程与微分方程建模,质心侧偏角与横摆角速度分析,参数自定义及说明文档,二自由度整车模型 资料包含状态空间方程、微分方程两种建模方式 输入为前轮转角,输出为质心侧偏角、横摆角速度,以此进行车辆状态分析 可自定义前轮转角延时输出、自定义调节整车参数 附带说明文档 ,关键词:二自由度整车模型; 状态空间方程; 微分方程建模; 前轮转角输入; 质心侧偏角、横摆角速度输出; 车辆状态分析; 参数调节; 延时输出; 说明文档。,基于二自由度整车模型的车辆状态分析及其建模方式解析