`
Wesleydeng
  • 浏览: 34768 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

excel表信息汇总,ExcelHandler

阅读更多

最近写了一个用来汇总excel表内容的小程序(设计好的excel表),即先要求他们按照某种excel格式填写,然后提交上来,放到一个文件夹里,然后就可以将他们信息汇总到一个表格里。所以就把POI中excel表的操作进行了部分的封装(只封装string类型处理),以便自己以后使用。

ExcelHandler类如下:
/*
  @author wesleydeng 2011-9-6
*/
package POI;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

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.poifs.filesystem.POIFSFileSystem;

public class ExcelHandler
{
	File file;
	HSSFWorkbook workbook;
	HSSFSheet sheet;

	public ExcelHandler(File file, int sheetIndex)//已经存在的
	{
		super();
		this.file=file;
		try
		{
			POIFSFileSystem inFS=new POIFSFileSystem(new FileInputStream(file));    
			workbook = new HSSFWorkbook(inFS);
		} catch (FileNotFoundException e)
		{
			e.printStackTrace();
		} catch (IOException e)
		{
			System.out.println(file.getName());
			e.printStackTrace();
		}    
   
		sheet = workbook.getSheetAt(sheetIndex);    
	}
	 
	public String getStringValue(int rowIndex,int colIndex)
	{
		HSSFRow myRow=sheet.getRow(rowIndex);
		if(myRow==null)
		{
			throw new IllegalArgumentException("cells("+rowIndex+","+colIndex+") not exist!");
		}
		HSSFCell myCell=myRow.getCell(colIndex);
		if(myCell==null)
		{
			throw new IllegalArgumentException("cells("+rowIndex+","+colIndex+") not exist!");
		}
		
		return myCell.getStringCellValue();
	}
	
	public void setStringValue(int rowIndex,int colIndex,String value)
	{
		HSSFRow myRow=sheet.getRow(rowIndex);
		if(myRow==null)
		{
			myRow=sheet.createRow(rowIndex);
		}
		HSSFCell myCell=myRow.getCell(colIndex);
		if(myCell==null)
		{
			myCell=myRow.createCell(colIndex);
		}
		myCell.setCellValue(value);
	}
	
	public int getColLength(int rowIndex)
	{
		HSSFRow myRow=sheet.getRow(rowIndex);
		if(myRow==null)
		{
			throw new IllegalArgumentException("row:"+rowIndex+" not exist!");
		}
		return (int)sheet.getRow(rowIndex).getLastCellNum();
	}
	public void saveAndClose()
	{
		try
		{
			FileOutputStream outFile = new FileOutputStream(file);
			workbook.write(outFile);
			outFile.close();
		} catch (FileNotFoundException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	static public File createNewFile(String fileFullPath, String sheetName)
	{
		//create file
		File file=new File(fileFullPath);
		try
		{
			file.createNewFile();
		} catch (IOException e1)
		{
			System.out.println("new file"+fileFullPath+"create Error");
		}
		
		//connect to file
		FileOutputStream outStream=null;
		try
		{
			outStream = new FileOutputStream(fileFullPath);
		} catch (FileNotFoundException e)
		{
			System.out.println(fileFullPath+"not found");
		}
		
		//write new Excelfile to file
		try
		{
			HSSFWorkbook myWorkbook=new HSSFWorkbook();
			myWorkbook.createSheet(sheetName);
			myWorkbook.write(outStream);
		} catch (IOException e)
		{
			System.out.println(fileFullPath+"write failed");
		}
		return file;
	}
	
	
}
 

 使用该ExcelHandler的是InfoCollector:
/*
  @author wesleydeng 2011-9-5
*/
package POI;

import java.io.File;

public class InfoCollector
{
	public static void main(String[] args)
	{
	
	
	File folder=new File("C:\\Documents and Settings\\wesley\\桌面\\08校友通讯录");
	File[] excelFiles=folder.listFiles();
	
	ExcelHandler inExcelFile=null;
	File outfile=ExcelHandler.createNewFile(folder.getParent()+"\\通讯录汇总.xls", "sheet1");
	
	ExcelHandler outExcelFile=new ExcelHandler(outfile,0);
	String tempValue;
	//do loop to traverse each files
	for (int fileIndex = 0; fileIndex < excelFiles.length; fileIndex++)
	{
		inExcelFile=new ExcelHandler(excelFiles[fileIndex], 0);
		//得到列数colLength
		int colLength=inExcelFile.getColLength(0);
		if(fileIndex==0)//即获得“列名称”
		{
			for (int colIndex = 0; colIndex < colLength; colIndex++)
			{
				tempValue=inExcelFile.getStringValue(0, colIndex);
				outExcelFile.setStringValue(0, colIndex, tempValue);
			}
		}
		
		for (int colIndex = 0; colIndex < colLength; colIndex++)
		{
			//输入表第一行的数据(即excel的第二行)
			tempValue=inExcelFile.getStringValue(1, colIndex);
			//汇总表的fileindex+1行
			outExcelFile.setStringValue(fileIndex+1, colIndex, tempValue);
		}
	}
	System.out.println("OK");
	outExcelFile.saveAndClose();

	}
}
 
0
1
分享到:
评论

相关推荐

    Excel汇总专家 v4.1_简体中文绿色版_汇总Excel工作表/汇总工作表行数据

    &lt;br&gt;4)分类汇总工作表行数据 本项功能和“汇总工作表行数据”类似的是,同样可以把多个Excel文件内工作表的行数据复制到指定的单一工作表中。所不同的是,可以指定一个关键列,所有这一列的值相同的行,都会...

    python编写的excel数据汇总小程序

    一、软件功能:将多个excel表sheet1的数据汇总至一个新的excel表中。 二、设计思想:遍历“源数据表”目录下的所有excel表,读取数据,写入到新的excel中“已加工表.xls”。 三、使用方法: 1、请先新建一个空白...

    .net里导出excel表方法汇总

    ### .NET中导出Excel表方法汇总 #### 标题:.NET里导出Excel表方法汇总 #### 描述:.NET里导出Excel表方法汇总 #### 标签:C#导出Excel #### 知识点: ##### 1. 引入Excel组件 在.NET环境中使用C#导出数据至...

    Excel表汇总软件

    "Excel表汇总软件"正是为解决这一问题而设计的,它简化了这一过程,使得在大量数据处理中更加高效。 首先,让我们理解一下Excel的汇总功能。汇总通常涉及合并相同结构的工作表,这些工作表可能来自不同的源文件,但...

    源码用python将一个Excel表里多个sheet相同的列进行提取并汇总

    1、用pyhon+openpyxl 读取Excel表 2、设定要提取的多个sheet的列 3、运行并提取对应的列的信息,可以为对应的列添加别名 4、输出一个新的Excel文件 压缩包其中含有【源码】文件可供参考学习,summary.xlsx是源数据...

    全国城市excel表

    全国城市excel表,可以直接导入数据库;包含城市代码,邮政编码;可做中国地域的资源,具体详细信息可以查阅excel内容

    Python实战示例自动办公-15 Python分类汇总278张Excel表中的数据.zip

    自动办公-15 Python分类汇总278张Excel表中的数据自动办公-15 Python分类汇总278张Excel表中的数据自动办公-15 Python分类汇总278张Excel表中的数据自动办公-15 Python分类汇总278张Excel表中的数据自动办公-15 ...

    全球国家Excel表.zip

    1. **工作表**:Excel可能有多个工作表,每个工作表分别对应不同的主题,如国家基本信息、人口统计、GDP数据、地理位置等。 2. **列标题**:每一列都可能代表一种特定的数据类型,如国家名称、英文名称、大洲、首都...

    全国省市县Excel汇总表(免费下载).xls

    全国所有省份、城市、区县的Excel汇总表(按首字母进行排序),包含了各市的下辖区和县,信息比较详细。

    全国所有省份、城市、区县的Excel汇总表(按首字母进行排序)(3151个).rar

    标题中的“全国所有省份、城市、区县的Excel汇总表(按首字母进行排序)(3151个).rar”指的是一个压缩文件,其中包含了一份Excel表格,该表格整理了中国全部3151个省份、城市、区县的数据,并按照首字母顺序进行了...

    MicrosoftExcel工作表叠加汇总系统(Ver2.0)

    MicrosoftExcel工作表叠加汇总系统V2.0 ------------------------------------ 《MicrosoftExcel工作表叠加汇总系统V2.0》是运行在Windows平台上用来实现MicrosoftExcel一簿多表与多簿多表快速叠加汇总的应用软件...

    电气计算EXCEL表_电力电气自动计算excel表_短路电流计算.xls

    电气计算EXCEL表_电力电气自动计算excel表_短路电流计算.xls

    电气计算EXCEL表_电力电气自动计算excel表_工程中短路电流实用计算表.xls

    电气计算EXCEL表_电力电气自动计算excel表_工程中短路电流实用计算表.xls

    体育比赛自动生成赛程Excel表(循环制和淘汰制)

    自己做的Excel表,2003,2007版下测试通过。 我某次参加网球比赛策划活动,负责人让我安排赛程。由于人数众多,于是我想做一个根据参赛人数自动生成赛程的Excel表。理论上,对任何有循环和淘汰制的体育比赛(如足球...

    Excel表格读取汇总C#

    "Excel表格读取汇总C#"这个项目就是针对这样的需求,它允许开发者将多个Excel工作表的数据整合到一个单一的工作表中。下面我们将深入探讨相关的知识点。 1. **C#与.NET Framework/NET Core**: C#是微软开发的一种...

    采用EXCEL VBA实现EXCEL表自动分页汇总

    这些信息概括了本文的主要内容,即使用EXCEL VBA来实现EXCEL表的自动分页汇总。 二、标签 标签为“分页汇总”,该标签概括了本文的主要内容,即使用EXCEL VBA来实现EXCEL表的自动分页汇总。 三、部分内容 部分...

    vb操作EXCEL表的常用方法总结.doc

    VB操作EXCEL表的常用方法总结 VB操作EXCEL表的常用方法是指使用VB语言来操作EXCEL表的各种方法和技巧。VB是常用的应用软件开发工具之一,但由于VB的报表功能有限,同时一旦报表格式发生变化,就得相应修改程序,给...

    多个EXCEL表合并工具

    在Excel工作中,有时我们需要处理大量的数据,这些数据可能分散在多个Excel工作表中,使得管理和分析变得复杂。这时,“多个EXCEL表合并工具”就能派上大用场。这款工具专门设计用来高效地合并格式一致的多张Excel...

    excel汇总表技巧

    excel汇总表制作 改变分表数据 总表数据自动修改汇总

    自动建立excel工作表名称汇总目录并超链接工作表

    自动建立excel已有工作表名称汇总目录并超链接所有工作表

Global site tag (gtag.js) - Google Analytics