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
相关推荐
java实现Excel导入
java 导入Excel 文件,兼容Excel 2003(后缀名:xls)及 2007(后缀名:xlsx)的文件,同时还支持csv格式的文件
Excel源代码,导入导出各种工具类 <groupId>org.apache.poi <artifactId>poi <groupId>org.apache.poi <artifactId>poi-scratchpad 代码实例: String path = ""; byte[] bytes; vo.setCurrentPage(0); vo....
java实现excel导入数据库
java jxl 通过excel模板创建新文件并将数据导入excel,实现按行、列插入数据
用Java实现的Excel的导入导出,简洁明了,高质量代码。
java_poi实现excel导入导出功能,有详细的注解
这个是使用java语言 poi导入excel到数据库中,同时使用了xml对excel的每个单元格数据进行了非空验证。经测试,导入数据库成功。
java实现Excel数据导入到数据库,如果数据库中存在就更新。 数据库数据导入到Excel表中。
java实现excel的导入导出(poi详解),经过测试poi效率要比jxl要高很多,特别是数据量大的时候jxl根本无法用肉眼入目,本资源是个可运行项目demo,很有参考价值!
Java实现Excel导入导出简介 Java实现Excel导入导出是通过Java语言编写的程序,将数据从Excel文件中读取或写入到Excel文件中。这种方式可以实现数据的批量处理和分析,提高工作效率。 Java实现Excel导入导出的应用...
java+Excel+使用方法,java上传excel 详解,java上传excel 实例分析
利用java 导入Excel表格数据到mysql数据库里,源码,直接导入eclipse就可以运行
Java导入excel文件,里面是一个完整的Java项目,包括了需要的jar包
此代码为java运用poi3.8插件实现运用模版导入导出复杂excel
测试环境:java 1.8 + poi 3.17+tomcat jar列表: commons-codec-1.10.jar commons-collections4-4.1.jar commons-fileupload-1.3.1.jar lib/commons-io-2.5.jar commons-lang-2.3.jar poi-3.17.jar poi-ooxml-3.17....
Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出
java实现excel导入导出
java Excel工具类,导入导出Excel数据,导入数据对合并表格有判断获取数据,导出数据到Excel,Excel文件不存在会创建。 博客:https://blog.csdn.net/qq_37902949/article/details/81230640
java实现在Excel中插入图片有时碰到下载excel中加入图片或已经制作好的图章。