`
zzy7182
  • 浏览: 124294 次
  • 性别: Icon_minigender_1
  • 来自: 火车头
社区版块
存档分类
最新评论

使用poi操作excel

 
阅读更多
   import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.poi.hssf.record.formula.functions.Cell;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.CellReference;
import org.apache.poi.hssf.util.Region;

import com.mocha.ps.psaf.util.properties.InitPropertiesUtil;

public class ExcelUtil {

	/**
	 * 通过excel标题获取对应表中的列名
	 * 
	 * @param cells
	 * @return
	 */
	public static List getColumnName(HSSFRow row) {
		if (row != null) {
			List keys = new ArrayList();
			Iterator cellIterator = row.cellIterator();
			while (cellIterator.hasNext()) {
				HSSFCell cell = (HSSFCell) cellIterator.next();
				String cellName = ExcelUtil.getCellContent(cell);
				String keysName = InitPropertiesUtil.getProperty(cellName);
				keys.add(keysName);
			}
			return keys;
		} else {
			return null;
		}

	}

	public static String getCellContent(HSSFCell cell) {
		String values = "";
		switch (cell.getCellType()) {
		case HSSFCell.CELL_TYPE_BOOLEAN:
			values = String.valueOf(cell.getBooleanCellValue());
			break;
		case HSSFCell.CELL_TYPE_BLANK:
			values = "";
			break;
		case HSSFCell.CELL_TYPE_ERROR:
			values = "";
			break;
		case HSSFCell.CELL_TYPE_NUMERIC:
			values = String.valueOf(cell.getNumericCellValue());
			break;
		case HSSFCell.CELL_TYPE_STRING:
			values = cell.getStringCellValue();
			break;
		}
		return values;
	}

	/**
	 * 读取单元,组织参数
	 * 
	 * @param cells
	 * @param keys
	 * @return
	 */
	public static Map readCells(HSSFRow row, List keys) {

		Map values = new HashMap();
		Iterator cellIterator = row.cellIterator();
		int i = 0;
		while (cellIterator.hasNext()) {
			HSSFCell cell = (HSSFCell) cellIterator.next();
			String cellContent = ExcelUtil.getCellContent(cell);
			values.put(keys.get(i), cellContent);
			i++;
		}

		return values;
	}

	/**
	 * 创建工作簿
	 * 
	 * @param file
	 * @return
	 */

	public static HSSFWorkbook createWorkbook(InputStream file) {
		HSSFWorkbook wbs = null;
		try {
			wbs = new HSSFWorkbook(file);
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		return wbs;
	}

	private static Map cellMap = new HashMap();
	public static void main(String[] args) {
			try {
				HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(
						"D:\\123.xls"));
				ExcelUtil.getMergedCellValue(workbook);
				
				int sheetCounts = workbook.getNumberOfSheets();
				for (int i = 0; i < sheetCounts; i++) {
					HSSFSheet sheet = workbook.getSheetAt(i);
					int rows = sheet.getPhysicalNumberOfRows();
					for (int j = 0; j < rows; j++) {
						HSSFRow row = sheet.getRow(j);
						Iterator iterator = row.cellIterator();
						String rowValue = "第"+j+"行:";
						while(iterator.hasNext()){
							HSSFCell cell = (HSSFCell) iterator.next();
							int cellIndex = cell.getColumnIndex();
							int rowIndex = cell.getRowIndex();
							String key = cellIndex+"_"+rowIndex;
							String cellValue = ExcelUtil.getValue(key);
							if(cellValue == null || cellValue.equals("")){
								cellValue = ExcelUtil.getCellContent(cell);
							}
							rowValue +=cellValue+"\t";
							
							
						}
						System.out.println(rowValue);
					}
				}
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
	}
	
	public static void getMergedCellValue(HSSFWorkbook workbook){
		int sheetCounts = workbook.getNumberOfSheets();
		for (int i = 0; i < sheetCounts; i++) {
			HSSFSheet sheet = workbook.getSheetAt(i);
			if(sheet != null){
				int mergedCounts = sheet.getNumMergedRegions();
				for (int j = 0; j < mergedCounts; j++) {
					Region region = sheet.getMergedRegionAt(j);
					if (region != null) {
						short cFrom = region.getColumnFrom();//合并单元格的cell的x开始坐标
						short cTo = region.getColumnTo();//合并单元格的cell的x结束坐标
						int rowFrom = region.getRowFrom();//合并单元格的cell的y开始坐标
						int rowTo = region.getRowTo();//合并单元格的cell的y结束坐标
				        HSSFCell cell = sheet.getRow(rowFrom).getCell(cFrom);
				        String value = ExcelUtil.getCellContent(cell);
				        ExcelUtil.getXY(rowFrom, rowTo, cFrom, cTo, value);
					}

				}
			}
		}
	}
	/**
	 * 保存所有合并的单元的数据
	 * @param xFrom
	 * @param xTo
	 * @param yFrom
	 * @param yTo
	 * @param value
	 * @return
	 */
	public  static  Map getXY(int xFrom, int xTo, int yFrom, int yTo, String value){
		for(int i = xFrom; i <= xTo; i++){
			for(int j = yFrom; j <= yTo; j++){
				cellMap.put(j + "_" + i, value); //cellIndex_rowIndex
			}
		}
		return cellMap;
	}
	
	/**
	 * 判断该单元格是否属于合并单元格,如果是返回该单元格的值,如果不是返回空
	 * @param key
	 * @return
	 */
	public static String getValue(String key){
		return (String) cellMap.get(key);
	}
	
	

}


分享到:
评论

相关推荐

    使用poi操作Excel2007工具类及示例(包括完整Jar包)

    Apache POI 是一个开源项目,专门用于处理Microsoft ...通过以上介绍,你应该对如何使用Apache POI操作Excel 2007文件有了基本的理解。你可以参考提供的示例代码,结合自己的需求,开始编写处理Excel文件的应用程序。

    java使用poi操作excel需要的所有jar包(poi3.8版本)

    java使用poi操作excel需要的所有jar包(poi3.8版本),里面有poi-3.8-20120326.jar、poi-ooxml-3.8-20120326.jar、poi-ooxml-schemas-3.8-20120326.jar、dom4j-1.6.1.jar、xmlbeans-2.3.0.jar

    java使用POI操作excel (支持excel2007)

    Java 使用Apache POI库操作Excel 2007文件详解 在Java开发中,处理Excel文件是一项常见的任务,特别是对于数据分析、数据导入导出或报表生成等场景。Apache POI是一个流行的开源库,它允许开发者读写Microsoft ...

    使用POI操作Excel文件(写)

    在本文中,我们将深入探讨如何使用Apache POI来创建和修改Excel工作簿,特别是进行写操作。 首先,要使用Apache POI,你需要将其添加到你的项目依赖中。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: `...

    POI操作excel方法

    通过上面的例子,我们可以看到使用 POI 操作 Excel 文件的基本方法。首先,需要创建一个 WorkBook 对象,然后创建一个属于这个 WorkBook 的 Sheet 对象,然后创建一个属于这个 Sheet 对象的 Row 对象,最后创建一个...

    java使用poi操作excel

    Java 使用 Apache POI 操作 Excel 是一种常见的数据处理方式,特别是在大数据分析、报表生成和数据导入导出等场景中。Apache POI 是一个开源库,它允许 Java 开发者读写 Microsoft Office 格式,包括 Excel(.xlsx ...

    poi excel poi excel poi excel

    为了使用 POI 操作 Excel 文件,首先需要准备以下环境: 1. **JDK 版本**:至少需要 JDK 1.4 或更高版本。 2. **POI 库**:下载 POI 库,可以从 Apache 官方网站获取:...

    使用poi从数据库导出excel表的示例

    可能包含了数据库连接的配置、SQL查询的测试、POI操作Excel的单元测试等。 在实际应用中,我们还需要考虑性能优化,比如使用PreparedStatement防止SQL注入,批量插入数据以减少数据库交互次数,以及合理设置内存...

    Java使用POI操作Excel

    使用第三方jar的POI实现对Excel文件写入和读取,写入和读取Excel都是使用Java反射方式实现,可以匹配任何实体类

    Java使用Poi操作Excel示例JavaPoiExcelExample

    代码在操作完成后通过调用workbook.close()确保Apache POI资源被释放,pom文件中导入如下jar包: &lt;groupId&gt;org.apache.poi &lt;artifactId&gt;poi &lt;version&gt;5.3.0 &lt;groupId&gt;org.apache.poi &lt;artifactId&gt;poi-...

    POI操作Excel 调用高德API操作示例

    使用POI操作Excel调用高德地图API操作Excel示例

    POI 操作Excel工具类

    在这个场景中,我们关注的是如何使用 POI 操作 Excel 工具类。这个工具类可以帮助开发者在 Java 环境下读写 Excel 文件,从而实现数据导入、导出等功能。下面将详细介绍 POI 操作 Excel 的关键知识点。 1. **工作簿...

    JXL 和 POI 操作Excel 表格

    使用POI操作Excel的基本步骤与JXL类似,但POI的API更为复杂和强大: 1. 引入POI库的依赖。 2. 创建`Workbook`对象,可以是HSSFWorkbook(.xls)或XSSFWorkbook(.xlsx)。 3. 添加`Sheet`,然后创建`Row`和`Cell`。...

    POI操作Excel常用方法总结.docx

    本文主要总结了使用POI操作Excel的一些核心概念和常见方法。 首先,了解POI的基本概念: 1. **POI简介**:Apache POI是一个开源项目,其提供的API使得Java程序能够处理MS Office格式的文档,包括Excel(XLS和XLSX...

    java使用poi操作excel和word

    用于java使用poi技术,读取word文档,和生成excel表格

    使用POI操作Excel文件(读)

    总结来说,Apache POI为Java开发者提供了一个强大且灵活的工具,用于操作Excel文件。无论是在数据导入、数据分析,还是报表生成等场景,都能发挥其作用。通过熟练掌握POI,你可以轻松地处理各种Excel相关的任务,...

    poi 操作excel模板

    通过以上步骤,你可以使用Apache POI有效地操作Excel模板,并将数据填充到新生成的文件中。这在报表生成、数据分析、批量导出等方面非常实用。记得在实际项目中,还要处理异常、优化性能,比如使用缓冲流、避免频繁...

    java使用poi操作excel需要的所有jar包(3.8版本).zip

    Java中的Apache POI库是一个强大的工具,用于读取、创建和修改Microsoft Office格式的文件...以上就是使用Apache POI 3.8版本在Java中操作Excel所需的关键知识点。记住,正确导入所有必需的jar包是成功运行代码的基础。

    POI操作Excel文档,帮助文档

    ### POI操作Excel文档知识点详解 #### 一、POI简介 Apache POI 是 Apache 软件基金会的开源项目之一,它主要提供了一系列用于处理 Microsoft Office 文档的 Java API。POI 支持多种 Office 文件格式,其中较为成熟...

Global site tag (gtag.js) - Google Analytics