`

POI操作excel的导入与导出

poi 
阅读更多

    趁着不忙,抽空写了个用poi操作excel导入导出的功能的小例子。不多说,直接上代码!

poi的操作类:

package com.bao.excelUtil;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

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.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Row;

/**
 * 操作excel的工具类
 * @author Alex
 */
public class ExcelUtil {

	/**
	 * 创建一个excel,返回一个excel对象
	 * @param sheetName
	 * @param orderList
	 * @return HSSFWorkbook
	 * @throws Exception
	 * @author Alex
	 */
	public static HSSFWorkbook createExcel(String filePath, String sheetName, List<String[]> orderList) throws Exception {
		FileOutputStream fileOutputStream =  new FileOutputStream(filePath);
		HSSFWorkbook wb = new HSSFWorkbook(); //创建一个工作区
		try {
			HSSFSheet sheet = wb.createSheet(sheetName); //创建一个sheet页
			  //创建第一行,如果有多个sheet页可以自己进行拓展
			HSSFCell cell = null;                  
			if (orderList != null) {
				for (int i = 0; i < orderList.size(); i++) {
					HSSFRow row = sheet.createRow(i); 
					String[] con = (String[]) orderList.get(i);
					for (int j = 0; j < con.length; j++) {
						if (i == 0) {  //给第一行赋值,也就是标题行
							cell = row.createCell(j);
							cell.setCellValue(con[j]);
						} else {    //给其他行赋值,也就是数据
							cell = row.createCell(j);
							cell.setCellValue(con[j]);
						}
					}
				}
				CellStyle cellStyle2 = wb.createCellStyle();  //创建一个样式对象
				cellStyle2.setAlignment(CellStyle.ALIGN_CENTER); //设置内容居中
			}
			wb.write(fileOutputStream);
		} catch (Exception e) {
			throw e;
		}finally {
			fileOutputStream.flush();
			fileOutputStream.close();
		}
		return wb;
	}

	/**
	 * 读取excel数据的方法
	 * @param file
	 * @return List<HashMap>
	 * @throws Exception
	 * @author Alex
	 */
	public static List<String[]> getExcel(String filePath) throws Exception {
		List<String[]> dataList = new ArrayList<String[]>();
		File file = new File(filePath);
		FileInputStream fs = new FileInputStream(file);
		HSSFWorkbook wb = new HSSFWorkbook(fs); // 获得工作
		HSSFSheet sheet = wb.getSheetAt(0); // 拿到第一个sheet页
		Iterator<Row> rows = sheet.rowIterator(); // 拿到第一行
		while (rows.hasNext()) { // 如果有值
			HSSFRow row = (HSSFRow) rows.next(); // 拿到当前行
			if(row.getRowNum() != 0) {  //不读取标题(可以根据自己需求进行修改)
				String[] data = new String[row.getLastCellNum()];
				Iterator<Cell> cells = row.cellIterator(); // 拿到当前行所有列的集合
				while (cells.hasNext()) {
					HSSFCell cell = (HSSFCell) cells.next(); // 拿到列值
					String cellValue = ""; // 存放单元格的值
					switch (cell.getCellType()) { // 判断单元格的类型,取出单元格的值
					case HSSFCell.CELL_TYPE_NUMERIC:
						// 处理数字类型 去掉科学计数法格式
						double strCell = cell.getNumericCellValue();
						DecimalFormat formatCell = (DecimalFormat) NumberFormat.getPercentInstance();
						formatCell.applyPattern("0");
						String value = formatCell.format(strCell);
						if (Double.parseDouble(value) != strCell) {
							formatCell.applyPattern(Double.toString(strCell));
							value = formatCell.format(strCell);
						}
						cellValue = value;
						break;
					case HSSFCell.CELL_TYPE_STRING:
						cellValue = cell.getStringCellValue();
						break;
					case HSSFCell.CELL_TYPE_BOOLEAN:
						cellValue = String.valueOf(cell.getBooleanCellValue());
						break;
					case HSSFCell.CELL_TYPE_FORMULA:
						cellValue = cell.getCellFormula();
						break;
					default:
						break;
					}
					data[cell.getColumnIndex()] = cellValue;
				}
				dataList.add(data);
			}
		}
		return dataList;
	}
}

 测试poi的实现类:

package com.bao.test;

import java.util.ArrayList;
import java.util.List;

import com.bao.excelUtil.ExcelUtil;

public class testMain {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//模拟数据
		String filePath = "file/testDate.xls";
		String sheetName = "测试";
		List<String[]> testList = new ArrayList<String[]>();  
		String[] title = {"姓名","年龄","性别"};
		String[] data1 = {"张三","25","男"};
		String[] data2 = {"赵四","22","男"};
		String[] data3 = {"王武","12","男"};
		testList.add(title);
		testList.add(data1);
		testList.add(data2);
		testList.add(data3);
		try {
			//导出excel
			//ExcelUtil.createExcel(filePath, sheetName, testList);
			//读取excel
			List<String[]> result = ExcelUtil.getExcel(filePath);
			for(String[] data : result){
				for(int i = 0;i<data.length ;i++) {
					System.out.print(data[i] + "  ");
				}
				System.out.println();
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}

用的jar包是poi-3.7-20101029.jar.如果大家想了解更多,直接下载api进行学习!写的比较简单,希望大家多多指点!

2
5
分享到:
评论
1 楼 alice2012 2012-09-24  
  good~~~

相关推荐

    java_poi实现excel导入导出

    Java POI 实现 Excel 导入导出 Java POI 是一个流行的 Java 库,用于处理 Microsoft Office 文件格式,包括 Excel 文件。在本文中,我们将详细介绍如何使用 Java POI 实现 Excel 导入导出功能。 1. 什么是 Java ...

    POI实现Excel导入导出并附带加载进度条

    本项目通过Apache POI实现了Excel的导入与导出功能,并在操作过程中加入了进度条展示,增强了用户体验。 首先,Apache POI的核心类HSSFWorkbook和XSSFWorkbook分别用于处理老版本的.xls和新版本的.xlsx文件。在导入...

    java poi操作excel批量导入导出项目需要的jar包

    Java中的Apache POI库是处理...以上是Java POI操作Excel的基本概念和关键点,理解并熟练运用这些知识点,你就可以在项目中高效地进行批量导入导出操作了。记住,持续学习和适应新的库版本是保持技术领先的关键。

    Java POI EXCEL导入导出

    Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出...

    Springboot+Poi实现Excel的导入导出

    综上所述,"Springboot+Poi实现Excel的导入导出"是一个实用的功能,它结合了Spring Boot的便捷性、MyBatis的数据库操作以及POI的Excel处理能力,为企业级应用提供了高效的数据交换手段。在实际开发中,还需要根据...

    POI实现excel导入导出

    在本文中,我们将深入探讨如何使用Apache POI库实现Excel的导入和导出功能,这对于处理大量数据和自动化办公流程非常有用。 首先,让我们了解一下Apache POI的核心组件HSSF(Horrible Spreadsheet Format)和XSSF...

    Java poi 实现excel导入导出

    在提供的“java-excel导入导出”压缩包中,可能包含了示例代码、说明文档以及测试数据,可以帮助初学者快速理解和使用Java POI进行Excel操作。通过学习和实践这些示例,你可以掌握Java POI库的基本用法,并能灵活...

    poi操作Excel导入导出(web项目)

    综上所述,Apache POI为Java开发者提供了强大的Excel操作能力,使得在Web项目中实现Excel的导入与导出变得简单易行。通过合理地运用这些API,你可以为用户提供便捷的数据交换服务。在实际开发中,结合具体的项目需求...

    POI数据Excel导入导出jar

    该文件中包含了所有java项目中针对excel导入导出所需的jar包集合。 -------------------------------------- 将该zip解压后,将jar包加入到自己的项目中,可以直接通过poi的api在excel和项目数据进行导入导出。 应用...

    SpringBoot使用poi实现Excel导入与导出

    在SpringBoot应用中,使用Apache POI库可以方便地实现Excel的导入与导出功能。Apache POI是一个流行的API,它允许程序员创建、修改和显示Microsoft Office格式的文件,其中包括Excel(.xls和.xlsx)文件。在这个场景...

    poi操作excel表格导入和导出

    在“poi操作excel表格导入和导出”这个主题中,我们将深入探讨如何利用Apache POI进行Excel数据的处理,包括导入和导出。 一、Apache POI简介 Apache POI是一个开源项目,它提供了API来处理Microsoft Office格式的...

    springboot+mybatis+poi 实现excel导入导出

    通过以上步骤,我们就可以在SpringBoot应用中实现基于MyBatis和Apache POI的Excel导入导出功能。这在数据分析、报表生成、数据交换等场景中非常实用,大大提高了工作效率。同时,这个过程也涉及到文件I/O操作、数据...

    基于poi的excel导入导出封装

    在"基于poi的excel导入导出封装"这个主题中,我们将深入探讨如何使用Apache POI库来实现Excel文件的导入和导出功能。 **一、Apache POI基本概念** 1. **工作簿(Workbook)**: 在Apache POI中,工作簿是Excel文件...

    Poi操作excel批量导入导出项目需要的jar包

    "Poi操作excel批量导入导出项目需要的jar包"表明这个压缩包`lib`可能包含了Apache POI库和其他必要的依赖。通常,这可能包括以下jar文件: 1. `poi-ooxml-schemas.jar`: 包含了Microsoft Office Open XML (OOXML) ...

    JXL、POI实现Excel导入导出

    以上就是关于使用JXL和Apache POI实现Excel导入导出的基本知识。根据实际需求,你可以结合这两个库的功能,灵活地处理各种Excel文件操作。在实际项目中,通常会根据性能、功能需求以及文件兼容性等因素选择适合的库...

    通用excel导入/导出 (poi)

    在这个"通用excel导入/导出 (poi)"的示例中,我们主要关注的是Excel文件的处理,特别是如何利用POI库进行数据的导入和导出。下面将详细介绍这个过程中的关键知识点。 首先,让我们了解一下Apache POI。它是Apache...

    用poi操作excele的导入导出

    在Java编程环境中,Apache POI库是一个非常实用的工具,它允许开发者读取、创建、修改Microsoft Office格式的文件,包括Excel...通过熟练掌握Apache POI,开发者可以方便地实现Excel的导入导出功能,提高工作效率。

Global site tag (gtag.js) - Google Analytics