`

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 ...

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

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

    Springboot+Poi实现Excel的导入导出

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

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

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

    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导入导出...

    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文件操作。在实际项目中,通常会根据性能、功能需求以及文件兼容性等因素选择适合的库...

    用poi操作excele的导入导出

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

    poi excel导入导出

    二、Excel导入 1. 创建Workbook对象:首先,我们需要创建一个Workbook对象来表示Excel文件。对于.xls文件,使用HSSFWorkbook;对于.xlsx文件,使用XSSFWorkbook。 ```java // .xls 文件 FileInputStream fis = new ...

Global site tag (gtag.js) - Google Analytics