`
aimstar007
  • 浏览: 5936 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

java按sheet页签解析excel文件

阅读更多

今天在网上找了个java解析excel的代码,发现与项目不太符合,于是就改造了一下,可以分sheet页签来分页解析excel,感觉用处挺大的,分享给大家。

package com.hikvision.cms.modules.reverseconf.utils;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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;

public class ReadExcel {
	
	public static Map<String,ArrayList<ArrayList<String>>> readExcel(String fileName, String path) {
		Map<String,ArrayList<ArrayList<String>>> map = new HashMap<String, ArrayList<ArrayList<String>>>();
		
		try {
			Workbook workBook = null;
			try {
				workBook = new XSSFWorkbook(path + "\\" + fileName);
			} catch (Exception ex) {
				workBook = new HSSFWorkbook(new FileInputStream(path + "\\"
						+ fileName));
			}

			for (int numSheet = 0; numSheet < workBook.getNumberOfSheets(); numSheet++) {
				ArrayList<ArrayList<String>> Row = new ArrayList<ArrayList<String>>();
				Sheet sheet = workBook.getSheetAt(numSheet);
				if (sheet == null) {
					continue;
				}
				// 循环行Row
				for (int rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++) {
					Row row = sheet.getRow(rowNum);
					if (row == null) {
						continue;
					}

					// 循环列Cell
					ArrayList<String> arrCell = new ArrayList<String>();
					for (int cellNum = 0; cellNum < row.getLastCellNum(); cellNum++) {
						Cell cell = row.getCell(cellNum);
						if (cell == null) {
							cell = row.createCell(cellNum);
							cell.setCellValue("");
						}
						arrCell.add(getValue(cell));
					}
					Row.add(arrCell);
				}
				map.put(String.valueOf(numSheet), Row);
			}
		} catch (IOException e) {
			System.out.println("e:" + e);
		}

		return map;
	}

	@SuppressWarnings("static-access")
	private static String getValue(Cell cell) {
		if (cell.getCellType() == cell.CELL_TYPE_BOOLEAN) {
			return String.valueOf(cell.getBooleanCellValue());
		} else if (cell.getCellType() == cell.CELL_TYPE_NUMERIC) {
			return String.valueOf(cell.getNumericCellValue());
		} else {
			return String.valueOf(cell.getStringCellValue());
		}
	}

	/**
	 * 返回map
	 * key:sheet页签
	 * value:List里面的String[]为一行的数据
	 * @param sheet
	 * @return
	 */
	public static Map<String,List<String[]>> analysisExcel(String fileName, String path){
		Map<String,ArrayList<ArrayList<String>>> sheet = readExcel(fileName, path);
		Map<String,List<String[]>> map = new HashMap<String, List<String[]>>();
		for (int i=0;i<sheet.size();i++) {
			ArrayList<ArrayList<String>> row = sheet.get(String.valueOf(i));
			List<String[]> list = new ArrayList<String[]>();
			if(row.size()>0){
				for(int j=0;j<row.size();j++){
					ArrayList<String> cell = row.get(j);
					String[] c = new String[cell.size()];
					for(int k=0;k<cell.size();k++){
						c[k] = cell.get(k);
					}
					list.add(c);
				}
			}
			map.put(String.valueOf(i), list);
		}
		return map;
	}
	
	public static void main(String[] args) {
		
		Map<String,List<String[]>> list = analysisExcel("TEST1.xls",
				"D:\\Program Files\\Java");
		for(int i=0;i<list.size();i++){
			List<String[]> l = list.get("0");
			System.out.println(l);
		}
	}
}

 

分享到:
评论

相关推荐

    Java导出数据到Excel文件中(支持多页签)

    Java导出数据到Excel文件中,支持多页签形式,如通过Java导出一个名为“各部门人员列表”,然后在文件中有三个页签,分别为“研发部”、“综合部”、“财务部”。其中这三个页签里面的数据就是通过Java导出到Excel...

    java上传excel并且解析入库

    在Java开发中,上传并解析Excel文件是一种常见的需求,特别是在数据处理、报表导入或系统集成等场景。本篇文章将深入探讨如何实现这个功能,主要涉及的技术包括文件上传、Excel解析以及数据库操作。 首先,我们需要...

    java 解析Excel 并判断解析的数据类型__Eclipse工程

    在Java编程环境中,解析Excel文件是一项常见的任务,特别是在数据处理、数据分析或自动化测试等领域。Eclipse作为Java开发的主流IDE,提供了丰富的工具和支持来完成这项工作。本项目名为"java 解析Excel 并判断解析...

    java解析EXCEL文件实例

    在Java编程中,解析Excel文件是一项常见的任务,尤其在数据处理、数据分析或报表生成等场景中。本实例将深入探讨如何使用Java来读取和解析Excel文件,主要涉及的工具有Apache POI库,它是一个强大的API,允许我们与...

    读取Excel文件中多个sheet

    java读取Excel文件中多个sheet,生成xml格式的文件

    poi.zip java读取excel文件

    3. **获取 Sheet 对象**:通过工作簿对象的 `getSheet()` 方法获取工作表,工作表代表 Excel 文件中的一页。 4. **遍历 Row 和 Cell**:通过工作表对象的 `iterator()` 获取所有行,再遍历每一行的 `Cell`,读取...

    poi解析excel文件

    总结,Apache POI 3.8提供了一个强大的工具集,允许开发者在Java环境中方便地读取和解析Excel文件,无论是老版的.xls还是新版的.xlsx。通过理解其核心组件和API,你可以有效地操作Excel数据,进行数据分析、数据导入...

    解析EXCEL文件源码

    本节详细介绍了如何使用Java解析EXCEL文件,包括文件的上传、读取、设置以及工作表的处理等关键步骤。这些知识点对于开发人员来说是非常实用的,尤其在处理大量Excel数据时更是必不可少的技术。通过上述代码示例,你...

    poi 解析excel文件内容demo

    在这个"poi 解析excel文件内容demo"中,我们主要关注如何使用Apache POI库来读取和解析Excel文件,无论它们是2003版的.XLS还是2007以后的.XLSX格式。 首先,Apache POI提供了两种主要的接口来处理Excel文件:HSSF...

    java解析Excel文件jar包

    Java解析Excel文件主要依赖于Apache POI库,这是一个开源项目,专门为处理Microsoft Office格式的文件而设计。在Java中,Apache POI提供了丰富的API,使得开发者可以方便地读取、写入Excel(.xls和.xlsx)文件。在这...

    java解析excel表格

    总结来说,"java解析excel表格"的实例是基于Apache POI库实现的,它展示了如何在Java环境中读取、处理和输出Excel文件的内容。这对于需要处理Excel数据的Java开发者来说是一个基础且实用的教程。通过深入学习和实践...

    java解析excel文件 2003 2007

    在Java编程环境中,解析Excel文件是一项常见的任务,无论是处理数据导入导出,还是进行数据分析,都需要用到这个功能。本文将详细讲解如何使用Java来解析2003和2007版本的Excel文件(包括.xls和.xlsx格式)。 Excel...

    java读取excel多个sheet内容,用流的方式判断excel版本

    用poi读取excel多个sheet内容,用流的方式判断excel的版本,2003,还是2007版本,并附带所需jar包,文件下载后解压,直接导入eclipse中即可使用

    android 解析 excel 文件

    在Android平台上,解析Excel文件是一项常见的任务,尤其在数据处理、报表展示或者用户交互中。本文将详细讲解如何在Android应用中实现Excel文件的解析,主要聚焦于使用JXL库进行处理。 首先,JXL是一个Java库,专门...

    java解析excel文件源码

    Java解析Excel文件是Java开发中常见的任务,尤其在数据处理、报表生成或数据分析等领域。Excel文件通常使用两种主要格式:老式的`.xls`(BIFF8格式)和较新的`.xlsx`(OOXML格式)。本示例关注的是`.xls`格式,因为...

    Java解析大数据量Excel,可解析1048576行excel

    在处理大数据量的Excel文件时,Java是一种常用的语言,因为它提供了强大的库,如Apache POI,使得解析大型Excel文件成为可能。Apache POI是Java的一个开源项目,专门用于读写Microsoft Office格式的文件,包括Excel...

    java解析excel并做数据有效性校验

    在Java编程中,解析Excel文件是一项常见的任务,特别是在数据处理、报表生成或数据分析等领域。Excel文件格式主要有两种:老式的`.xls`(基于BIFF格式)和较新的`.xlsx`(基于Open XML标准)。本篇将详细介绍如何...

    Java处理100万行超大Excel文件秒级响应

    ### Java处理100万行超大Excel文件秒级响应 #### 一、问题背景与需求分析 在项目开发过程中,经常会遇到需要处理大量Excel数据的情况。这些数据可能包括成千上万条记录,每条记录又包含多个字段。传统的处理方式...

    java调用vbs获取获取excel各sheet页打印总数

    标题提到的"java调用vbs获取获取excel各sheet页打印总数"就是一个这样的解决方案。VBScript是Windows操作系统内置的一种脚本语言,能够与Office应用程序交互,包括Excel。通过VBScript,我们可以直接操作Excel对象...

    android 解析Excel 文件

    在Android平台上,解析Excel文件是一项常见的任务,尤其在数据处理、报表展示或者用户交互中。本文将深入探讨如何在Android应用中实现Excel文件的解析,主要聚焦于从资源文件中读取Excel数据。 首先,我们需要了解...

Global site tag (gtag.js) - Google Analytics