`
longying2008
  • 浏览: 302264 次
社区版块
存档分类
最新评论

使用POI技术读取Excel中数据,比对,并将比对结果存入Excel

阅读更多

1.要操作的Excel表格(.xls)格式模板:


 程序作用:读取数据1列中数据,然后依次与数据2列中数据比较,如果数据2中含有与之相同的数据,则标记为Equal,否则标记为Not Equal。最后将比较结果一起存入Excel表格指定列中。

效果图:

 

工具类代码:

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class ExcelUtils {

	//文件路径
	private String path = null;
	
	public ExcelUtils() {}
	public ExcelUtils(String path) {
		this.path = path;
	}
	
	/**
	 * 作用:读取Excel表格指定列中数据
	 * @param column 要读取Excel表格的哪一列,从0开始
	 * @return 返回列中数据
	 */
	public List<String> readColContentFromExcel(int column) {
		List<String> content = new ArrayList<String>();
		FileInputStream input = null;
		try {
			input = new FileInputStream(this.path);
			HSSFWorkbook workBook = new HSSFWorkbook(input);
			HSSFSheet sheet = workBook.getSheetAt(0);
			String cellContent = null;
			for(int i=1; i<sheet.getPhysicalNumberOfRows(); i++) {
				HSSFCell cell = sheet.getRow(i).getCell(column);
				if(cell != null) {
					cellContent = sheet.getRow(i).getCell(column).toString();
					if(!StringUtils.isBlank(cellContent)) {
						content.add(cellContent);
					} else {
						break;
					}
				} else {
					break;
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				input.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return content;
	}
	
	/**
	 * 作用:向Excel表格指定列中写入数据
	 * @param contents 要添加到Excel表格指定列中的数据
	 * @param column 指定列
	 */
	public void writeResultAtExcel(List<String> contents, int column) {
		FileInputStream input = null;
		FileOutputStream output = null;
		try {
			input = new FileInputStream(this.path);
			HSSFWorkbook workBook = new HSSFWorkbook(input);
			HSSFSheet sheet = workBook.getSheetAt(0);
			for(int i=1; i<=contents.size(); i++) {
				HSSFCell cell = sheet.getRow(i).createCell(column);
				cell.setCellValue(contents.get(i-1));
				output = new FileOutputStream(path);
				workBook.write(output);
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				input.close();
				output.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	
	/**
	 * 比较firstColumn列与secondColumn列中数据,并将比对结果存入Excel表格的resultColumn列
	 * @param firstColumn Excel表格的列,从0开始
	 * @param secondColumn 表格的列,从0开始
	 * @param resultColumn 表格的列,从0开始
	 */
	public void compareColumnsContent(int firstColumn, int secondColumn, int resultColumn) {
		List<String> results = new ArrayList<String>();
		List<String> first = this.readColContentFromExcel(firstColumn);
		List<String> second = this.readColContentFromExcel(secondColumn);
		for(Iterator<String> firstColumnContent=first.iterator(); firstColumnContent.hasNext(); ) {
			String result = "Not Equal";
			String str1 = firstColumnContent.next();
			for(Iterator<String> secondColumnContent=second.iterator(); secondColumnContent.hasNext(); ) {
				String str2 = secondColumnContent.next();
				if(!StringUtils.isBlank(str2)) {
					if(str2.equals(str1)) {
						result = "Equal";
						break;
					}
				}
			}
			results.add(result);
		}
		//将比较结果写入到Excel
		this.writeResultAtExcel(results, resultColumn);
		//System.out.println(results);
	}
}

 

调用工具类的测试类代码:

public class ExcelTest {
	public static void main(String[] args) {
		ExcelUtils test = new ExcelUtils("D:\\temporary\\ExcelTest.xls");
		test.compareColumnsContent(0, 1, 2);
	}
}

 

 

  • 大小: 5.2 KB
  • 大小: 5.3 KB
2
1
分享到:
评论
2 楼 贝塔ZQ 2017-02-14  
实现读取excel中的数据,除了用poi,也可以用pageoffice插件进行实现,集成起来也简单方便。
1 楼 yuankai 2013-07-15  
lookup 函数

相关推荐

    利用POI解析excel并存入数据库demo

    在这个"利用POI解析excel并存入数据库demo"中,我们将关注如何使用 POI 库来读取 Excel 文件,并将数据有效地存入 MySQL 数据库。 首先,要开始使用 POI,你需要在你的项目中引入相应的依赖。如果你使用的是 Maven...

    java 读取excel表格数据 poi

    java读取excel 表格数据。 public static void main(String[] args) { String[][] content=POIExcelUtils.read("E:\\1.xlsx"); for(int i=0;i;i++) { if(content[i]!=null){ for(int j=0;j[i].length;j...

    使用POI解析excel文件并写入数据库

    使用poi解析excel文件,并将数据写入到数据库 项目说明 这个项目实现的功能是读取excel文件中的数据,解析并写入数据库。 读取的excel文件位于项目目录下的 excel\0805.xlsx 使用IntelliJ IDEA开发此项目 使用MYSQL...

    java的poi技术读取Excel数据到MySQL

    本实例主要关注如何使用POI技术读取Excel数据并将其存储到MySQL数据库中。这个过程通常分为几个步骤:导入必要的库、创建Excel文件对象、读取数据、连接MySQL数据库以及将数据插入或更新到数据库。 首先,我们需要...

    使用Poi读取大数据量excel的方法

    本篇文章将详细讲解如何利用Apache POI库在Android环境中高效地处理大数据量的Excel文件,无论是2003的.xls格式还是2007及以后的.xlsx格式。 首先,我们需要在项目中引入Apache POI库。如果是Maven项目,可以在pom....

    利用POI读取excel写入到word

    本篇文章将详细讲解如何利用Apache POI库来读取Excel数据并将其写入到Word文档中。 首先,我们需要了解Apache POI的基本概念。POI提供了一组API,允许程序员在Java应用程序中创建、修改和显示这些文件。对于Excel...

    POI读取Excel合并单元格并储存

    本文将深入探讨如何使用Java的Apache POI库来读取Excel文件,并处理其中合并单元格的数据,同时将这些数据存储到实体类中以供后续使用。 Apache POI是一个强大的库,允许程序员使用Java来创建、修改和显示Microsoft...

    POI读取Excel带格式数据

    总之,Apache POI是Java开发人员处理Excel文件的强大工具,通过理解其API结构和工作原理,我们可以方便地读取和处理Excel中的带格式数据。无论是简单的数据导出还是复杂的业务逻辑,POI都能胜任。在阅读这篇博客...

    poi excel 模板读取并导出带公式的excel文档

    利用Apache POI库能够实现这一功能,即可以通过Java程序操作Excel文件,包括读取、写入、以及处理Excel中的公式。 #### 二、关键技术点 1. **POI库简介**: - Apache POI是Apache软件基金会的Jakarta项目中的一个...

    android5使用poi读取excel

    android5使用poi读取excel,android5使用poi读取excel,android5使用poi读取excel,android5使用poi读取excel

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

    Excel中的数据验证可以通过设置数据验证规则来实现,这些规则通常存储在Excel文件的`.xlsx`包中的`sharedStrings.xml`和`workbook.xml`等文件中。在Java中,我们可以使用`DataValidationHelper`和`...

    POI读取excel的内容.zip

    本教程将详细讲解如何使用Apache POI库来读取Excel文件的内容。 首先,为了在Java项目中使用Apache POI,我们需要通过Maven进行依赖管理。在`pom.xml`文件中添加以下依赖: ```xml &lt;groupId&gt;org.apache.poi ...

    poi-读取Excel表格内容

    在本文中,我们将深入探讨如何使用Apache POI读取Excel表格内容。 首先,我们需要理解Apache POI的基本架构。POI分为两个主要部分:HSSF(Horizontally-Scalable Storage Format)用于处理旧版的BIFF格式Excel文件...

    poi读取excel并输出到jsp页面

    标题中的“poi读取excel并输出到jsp页面”是指使用Apache POI库来处理Microsoft Excel文件,并将数据在JavaServer Pages (JSP) 页面上显示的技术。Apache POI 是一个开源项目,它允许开发者创建、修改和显示MS ...

    Java通过POI读取Excel遍历数据,批量生成word文档

    本教程将重点讲解如何使用Apache POI库来读取Excel数据,并基于这些数据批量生成Word文档。Apache POI是一个开源项目,它允许Java开发者处理Microsoft Office格式的文件,如Excel(.xlsx或.xls)和Word(.docx)。 ...

    Java读取大数据量Excel的方法(POI)

    在本文中,我们将深入探讨如何使用Apache POI有效地读取大量数据的Excel文件。 首先,我们需要了解Apache POI的基本概念。POI提供了HSSF(用于旧版的BIFF格式,适用于Excel 97-2007)和XSSF(用于较新的OOXML格式,...

    使用poi读取、写入复杂excel工具类(包含样式)

    使用poi读取写入复杂excel内容包括样式,工具类

    读取Excel的poi包

    读取Excel的poi包,,读取Excel的poi包,,读取Excel的poi包,读取Excel的poi包读

Global site tag (gtag.js) - Google Analytics