JAVA处理Excel文件---生成简单的Excel文件

本文介绍了如何使用Apache POI库生成包含错误信息的Excel文件。通过实例演示了创建Excel文档对象、表单、行及单元格的过程,并展示了如何设置样式及保存文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在现实的办公中,我们常常会有这样一个要求:要求把报表直接用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)

  1. /**
  2. *@Project: excel
  3. *@Author: chenssy
  4. *@Date: 2013-4-4
  5. *@Copyright: chenssy All rights reserved.
  6. */ 
  7. public class ErrorCondition { 
  8.     private String name; // 姓名 
  9.     private String idCard; // 身份证 
  10.     private String status; // 错误状态 
  11.     private String message; // 错误信息 
  12.  
  13.     ErrorCondition(String name,String idCard,String status,String message){ 
  14.         this.name = name; 
  15.         this.idCard = idCard; 
  16.         this.status = status; 
  17.         this.message = message; 
  18.     } 
  19.      
  20.     public String getName() { 
  21.         return name; 
  22.     } 
  23.  
  24.     public void setName(String name) { 
  25.         this.name = name; 
  26.     } 
  27.  
  28.     public String getIdCard() { 
  29.         return idCard; 
  30.     } 
  31.  
  32.     public void setIdCard(String idCard) { 
  33.         this.idCard = idCard; 
  34.     } 
  35.  
  36.     public String getStatus() { 
  37.         return status; 
  38.     } 
  39.  
  40.     public void setStatus(String status) { 
  41.         this.status = status; 
  42.     } 
  43.  
  44.     public String getMessage() { 
  45.         return message; 
  46.     } 
  47.  
  48.     public void setMessage(String message) { 
  49.         this.message = message; 
  50.     } 
  51.  
/**
 *@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)

  1. /**
  2. *@Project: excel
  3. *@Author: chenssy
  4. *@Date: 2013-4-4
  5. *@Copyright:  chenssy All rights reserved.
  6. */ 
  7. public class ExportErrorExcel { 
  8.     public static void main(String[] args) { 
  9.         //第一步创建workbook 
  10.         HSSFWorkbook wb = new HSSFWorkbook(); 
  11.          
  12.         //第二步创建sheet 
  13.         HSSFSheet sheet = wb.createSheet("身份证错误信息"); 
  14.          
  15.         //第三步创建行row:添加表头0行 
  16.         HSSFRow row = sheet.createRow(0); 
  17.         HSSFCellStyle  style = wb.createCellStyle();     
  18.         style.setAlignment(HSSFCellStyle.ALIGN_CENTER);  //居中 
  19.          
  20.          
  21.         //第四步创建单元格 
  22.         HSSFCell cell = row.createCell(0);         //第一个单元格 
  23.         cell.setCellValue("姓名");                  //设定值 
  24.         cell.setCellStyle(style);                   //内容居中 
  25.          
  26.         cell = row.createCell(1);                   //第二个单元格    
  27.         cell.setCellValue("身份证"); 
  28.         cell.setCellStyle(style); 
  29.          
  30.         cell = row.createCell(2);                   //第三个单元格   
  31.         cell.setCellValue("错误状态"); 
  32.         cell.setCellStyle(style); 
  33.          
  34.         cell = row.createCell(3);                   //第四个单元格   
  35.         cell.setCellValue("错误信息"); 
  36.         cell.setCellStyle(style); 
  37.          
  38.         //第五步插入数据 
  39.         List<ErrorCondition> list = ExportErrorExcel.getErrorCondition(); 
  40.         for (int i = 0; i < list.size(); i++) { 
  41.             ErrorCondition errorCondition = list.get(i); 
  42.             //创建行 
  43.             row = sheet.createRow(i+1); 
  44.             //创建单元格并且添加数据 
  45.             row.createCell(0).setCellValue(errorCondition.getName()); 
  46.             row.createCell(1).setCellValue(errorCondition.getIdCard()); 
  47.             row.createCell(2).setCellValue(errorCondition.getStatus()); 
  48.             row.createCell(3).setCellValue(errorCondition.getMessage()); 
  49.         } 
  50.          
  51.         //第六步将生成excel文件保存到指定路径下 
  52.         try
  53.             FileOutputStream fout = new FileOutputStream("D:\\errorCondition.xls"); 
  54.             wb.write(fout); 
  55.             fout.close(); 
  56.         } catch (IOException e) { 
  57.             e.printStackTrace(); 
  58.         } 
  59.          
  60.         System.out.println("Excel文件生成成功..."); 
  61.     } 
  62.      
  63.     public static List<ErrorCondition> getErrorCondition(){ 
  64.         List<ErrorCondition> list = new ArrayList<ErrorCondition>(); 
  65.          
  66.         ErrorCondition r1 = new ErrorCondition("张三", "4306821989021611", "L", "长度错误"); 
  67.         ErrorCondition r2 = new ErrorCondition("李四", "430682198902191112","X", "校验错误"); 
  68.         ErrorCondition r3 = new ErrorCondition("王五", "", "N", "身份证信息为空"); 
  69.          
  70.         list.add(r1); 
  71.         list.add(r2); 
  72.         list.add(r3); 
  73.          
  74.         return list; 
  75.     } 
/**
 *@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文件了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值