zoukankan      html  css  js  c++  java
  • JAVA处理Excel文件生成简单的Excel文件

         在现实的办公中,我们常常会有这样一个要求:要求把报表直接用excel打开。在实习中有这样一个需求。根据所选择的资源查询用户所提供附件的全部信息并生成excel供下载。但是在查询的时候我们需要来检测用户所提供的附件里面的信息是否有错误(身份证)。有错误的生成错误信息excel。

         Apache的POI项目,是目前比较成熟的HSSF接口,用来处理Excel对象。其实POI不仅仅只能处理excel,它还可以处理word、PowerPoint、Visio、甚至Outlook。

         这里我先介绍利用POI如何生成excel。

         首先在生成Excel前,我们需要理解一下Excel文件的组织形式。在POI中,是这样理解的:一个Excel文件对应一个workbook,一个workerbook是有若干个sheet组成的。一个sheet有多个row,一个row一般存在多个cell。

         对于上面的四个名词我们可以在下图理解

         对于生成Excel,POI提供了如下几个基本对象:

         HSSFWorkbook             excel 的文档对象

         HSSFSheet                excel 的表单

         HSSFRow                  excel 的行

         HSSFCell                 excel 的格子单元

         从上面的图片和Excel的组织结构,我们就可以明白创建Excel的步骤。

            1、生成文档对象HSSHWorkbook。

            2、通过HSSFWorkbook生成表单HSSFSheet。

            3、通过HSSFSheet生成行HSSFRow

            4、通过HSSFRow生成单元格HSSFCell。

         下面是展示代码:

         身份证错误Bean(ErrorCondition.java)

    /**
     *@Project: excel
     *@Author: chenssy
     *@Date: 2013-4-4
     *@Copyright: chenssy All rights reserved.
     */
    public class ErrorCondition {
    	private String name; // 姓名
    	private String idCard; // 身份证
    	private String status; // 错误状态
    	private String message; // 错误信息
    
    	ErrorCondition(String name,String idCard,String status,String message){
    		this.name = name;
    		this.idCard = idCard;
    		this.status = status;
    		this.message = message;
    	}
    	
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public String getIdCard() {
    		return idCard;
    	}
    
    	public void setIdCard(String idCard) {
    		this.idCard = idCard;
    	}
    
    	public String getStatus() {
    		return status;
    	}
    
    	public void setStatus(String status) {
    		this.status = status;
    	}
    
    	public String getMessage() {
    		return message;
    	}
    
    	public void setMessage(String message) {
    		this.message = message;
    	}
    
    }
         处理类(ExportErrorExcel.java)

    /**
     *@Project: excel
     *@Author: chenssy
     *@Date: 2013-4-4
     *@Copyright:  chenssy All rights reserved.
     */
    public class ExportErrorExcel {
    	public static void main(String[] args) {
    		//第一步创建workbook
    		HSSFWorkbook wb = new HSSFWorkbook();
    		
    		//第二步创建sheet
    		HSSFSheet sheet = wb.createSheet("身份证错误信息");
    		
    		//第三步创建行row:添加表头0行
    		HSSFRow row = sheet.createRow(0);
    		HSSFCellStyle  style = wb.createCellStyle();    
    		style.setAlignment(HSSFCellStyle.ALIGN_CENTER);  //居中
    		
    		
    		//第四步创建单元格
    		HSSFCell cell = row.createCell(0);         //第一个单元格
    		cell.setCellValue("姓名");                  //设定值
    		cell.setCellStyle(style);                   //内容居中
    		
    		cell = row.createCell(1);                   //第二个单元格   
    		cell.setCellValue("身份证");
    		cell.setCellStyle(style);
    		
    		cell = row.createCell(2);                   //第三个单元格  
    		cell.setCellValue("错误状态");
    		cell.setCellStyle(style);
    		
    		cell = row.createCell(3);                   //第四个单元格  
    		cell.setCellValue("错误信息");
    		cell.setCellStyle(style);
    		
    		//第五步插入数据
    		List<ErrorCondition> list = ExportErrorExcel.getErrorCondition();
    		for (int i = 0; i < list.size(); i++) {
    			ErrorCondition errorCondition = list.get(i);
    			//创建行
    			row = sheet.createRow(i+1);
    			//创建单元格并且添加数据
    			row.createCell(0).setCellValue(errorCondition.getName());
    			row.createCell(1).setCellValue(errorCondition.getIdCard());
    			row.createCell(2).setCellValue(errorCondition.getStatus());
    			row.createCell(3).setCellValue(errorCondition.getMessage());
    		}
    		
    		//第六步将生成excel文件保存到指定路径下
    		try {
    			FileOutputStream fout = new FileOutputStream("D:\\errorCondition.xls");
    			wb.write(fout);
    			fout.close();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		
    		System.out.println("Excel文件生成成功...");
    	}
    	
    	public static List<ErrorCondition> getErrorCondition(){
    		List<ErrorCondition> list = new ArrayList<ErrorCondition>();
    		
    		ErrorCondition r1 = new ErrorCondition("张三", "4306821989021611", "L", "长度错误");
    		ErrorCondition r2 = new ErrorCondition("李四", "430682198902191112","X", "校验错误");
    		ErrorCondition r3 = new ErrorCondition("王五", "", "N", "身份证信息为空");
    		
    		list.add(r1);
    		list.add(r2);
    		list.add(r3);
    		
    		return list;
    	}
    }
         通过上面六个步骤就可以在指定的位置生成Excel文件了。



     

  • 相关阅读:
    交叉工具链的搭建方法(测试成功)
    使用samba实现linux与windows共享(测试成功)
    sd卡脱机烧写系统的方法(测试成功)
    Navicat连接SQLServer未发现数据源名并且未指定默认驱动程序
    使用docker rmi 批量删除docker镜像
    删除镜像docker rmi IMAGE ID提示image is referenced in multiple repositories
    Linux下,改过/etc/profile文件导致ls vi等命令不能使用解决方法
    安装openssl-dev 报错E: Unable to locate package openssl-dev
    zabbix监控redis命中率---张庆沉笔记
    布局之BFC
  • 原文地址:https://www.cnblogs.com/oversea201405/p/3752155.html
Copyright © 2011-2022 走看看