`

Java导入Excel的简单实现

    博客分类:
  • JAVA
 
阅读更多

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导入导出

    Excel源代码,导入导出各种工具类 &lt;groupId&gt;org.apache.poi &lt;artifactId&gt;poi &lt;groupId&gt;org.apache.poi &lt;artifactId&gt;poi-scratchpad 代码实例: String path = ""; byte[] bytes; vo.setCurrentPage(0); vo....

    java_poi实现excel导入导出

    Java POI 实现 Excel 导入导出 Java POI 是一个流行的 Java 库,用于处理 Microsoft Office 文件格式,包括 Excel 文件。在本文中,我们将详细介绍如何使用 Java POI 实现 Excel 导入导出功能。 1. 什么是 Java ...

    java 导入Excel 文件,支持xls、xlsx、csv格式

    综上所述,Java导入Excel文件涉及的关键技术包括Apache POI库的使用,对HSSF和XSSF的理解,以及对CSV文件处理的技巧。通过熟练掌握这些知识,你可以编写出高效且健壮的文件导入程序,满足各种需求。

    java 通过excel模板创建新文件并将数据导入excel,实现按行、列插入数据

    java jxl 通过excel模板创建新文件并将数据导入excel,实现按行、列插入数据

    java实现Excel导入(POI)

    在Java编程环境中,实现Excel数据的导入是一项常见的任务,尤其在数据处理、报表生成或数据分析等领域。Apache POI是一个流行的库,它允许开发者读写Microsoft Office格式的文件,包括Excel(.xls和.xlsx)。本篇...

    最新java实现Excel导入导出

    用Java实现的Excel的导入导出,简洁明了,高质量代码。

    Java 使用poi导入excel 并使用xml做数据验证

    在Java开发中,处理Excel数据是一项常见的任务,尤其是在数据导入导出、数据分析或者报表生成等场景。Apache POI是一个流行的库,它允许开发者使用Java来读取、写入和修改Microsoft Office格式的文件,包括Excel(....

    java实现excel导入数据库

    在Java编程中,将Excel数据导入到MySQL数据库是一项常见的任务,尤其在数据处理和分析的场景下。要完成这个过程,我们需要使用特定的库来读取Excel文件,并使用JDBC(Java Database Connectivity)来与MySQL数据库...

    java实现Excel数据导入到数据库

    在Java中,实现Excel数据导入到数据库的步骤如下: 1. **读取Excel文件**:使用POI的`XSSFWorkbook`(针对.xlsx文件)或`HSSFWorkbook`(针对.xls文件)类打开Excel文件,然后通过`Sheet`和`Row`对象遍历并获取数据...

    java导入excel到数据库

    以上就是关于“Java导入Excel到数据库”的详细知识点,涵盖了文件路径配置、合并单元格处理、数据库连接、Excel操作和数据导入等多个方面。这个过程需要对Java、数据库操作以及Excel处理有深入理解,才能有效地完成...

    Java实现Excel导入导出操作详解.pptx.pptx

    Java实现Excel导入导出是Java开发中常见的任务,主要用于数据的批量处理和分析,尤其在数据分析、报表生成和数据备份等方面具有广泛应用。要熟练掌握这一技术,开发者需要了解Excel文件的结构,熟悉Java的文件操作,...

    java 导入及判断的Excel 使用方法

    本文将深入探讨Java中导入和判断Excel的使用方法,结合实例分析,帮助你全面理解这一技术。 首先,Java与Excel的交互通常依赖于第三方库,如Apache POI或JExcelAPI。Apache POI是目前最常用的一个,它提供了丰富的...

    java实现excel导入导出.pdf

    Java 实现 Excel 导入导出 Java 是一种流行的编程语言,Excel 是一种常用的电子表格软件。在 Java 中,实现 Excel 导入导出可以使用多种方式,本文将介绍使用 JXL 和 POI 两个库实现 Excel 导入导出的方法。 使用 ...

    java导入excel表格

    在Java编程中,导入Excel表格是一项常见的任务,特别是在数据处理、数据分析或系统集成等领域。Excel文件通常用于存储结构化数据,而Java作为一种强大的后端语言,提供了多种方式来读取和操作这些数据。本篇文章将...

    java实现Excel导入导出

    Java 实现 Excel 导入导出是指使用 Java 语言编写程序来实现将 Excel 文件中的数据导入到 Java 程序中,并将 Java 程序中的数据导出到 Excel 文件中。这种操作可以使用 Apache POI 库来实现。 POI 库简介 Apache ...

    java导入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 POI EXCEL导入导出

    java Excel工具类,导入导出Excel数据

    java Excel工具类,导入导出Excel数据,导入数据对合并表格有判断获取数据,导出数据到Excel,Excel文件不存在会创建。 博客:https://blog.csdn.net/qq_37902949/article/details/81230640

    java实现在Excel中插入图片

    总结起来,Java实现Excel中插入图片的核心步骤包括:导入Apache POI库,创建并操作工作簿和工作表,读取和创建图片对象,创建绘图工作表,设置图片位置,最后保存工作簿。在实际开发中,可能还需要处理图片格式转换...

Global site tag (gtag.js) - Google Analytics