poi 学习之 使用 Apche poi 简单读写 Excel

chenhualeguan 2014-09-10

使用 Apche poi 简单读写 Excel

首先:毋庸置疑,我们得去官网下载POI,地址:http://jakarta.apache.org/poi/


如下图(由于本人英语不是很好,初学时找下载的地方找了好长时间,所以直接把图贴出来,方便下载使用):

poi  学习之  使用  Apche  poi   简单读写   Excel

点击Download跳转:

poi  学习之  使用  Apche  poi   简单读写   Excel

下载poi-bin-3.11-beta2-20140822.zip解压,并把jar包引入到项目中;至此,我们的第一步准备工作就完成了(是不是灰常简单呢)。

在项目中想把 Excel 数据导入数据库中或者是将数据库中的数据导出为 Excel,POI 是个不错的选择。

Apache POI 是 Apache 软件基金会的开放源码函式库,POI 提供 API 给 Java 程式对Microsoft Office 格式档案读和写的功能。

1)HSSF- 提供读写Microsoft Excel格式档案的功能,Excel 2003(.xls)。
2)XSSF - 提供读写Microsoft Excel OOXML格式档案的功能,Excel 2007(.xlsx)。
3)HWPF - 提供读写Microsoft Word格式档案的功能。
4)HSLF - 提供读写Microsoft PowerPoint格式档案的功能。
5)HDGF - 提供读写Microsoft Visio格式档案的功能。

下面是两个简单的Excel读写功能:

XLSReader.java

package com.poi;

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

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
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;
/**
 * excel读取
 * @author Snow
 * HSSF用于2003版即以  .xls结尾
 * XSSF用于2007版    以   .xlsx结尾
 */
public class XLSReader {
	public static List readExcelData(String url)throws Exception{
		
		// 从XLSX/ xls文件创建的输入流
		FileInputStream fis = new FileInputStream(url);
		List hospitalList = new ArrayList();
		
		// 创建工作薄Workbook
		Workbook workBook = null;
		
		// 读取2007版,以    .xlsx 结尾
		if(url.toLowerCase().endsWith("xlsx")){
			try {
				workBook = new XSSFWorkbook(fis);
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		// 读取2003版,以   .xls 结尾
		else if(url.toLowerCase().endsWith("xls")){
			try {
				workBook = new HSSFWorkbook(fis);
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		//Get the number of sheets in the xlsx file
		int numberOfSheets = workBook.getNumberOfSheets();
		
		// 循环 numberOfSheets
		for(int sheetNum = 0; sheetNum < numberOfSheets; sheetNum++){
			
			// 得到 工作薄 的第 N个表
			Sheet sheet = workBook.getSheetAt(sheetNum);
			Row row;
			String cell;
			for(int i = sheet.getFirstRowNum(); i < sheet.getPhysicalNumberOfRows(); i++){
				// 循环行数
				row = sheet.getRow(i);
				for(int j = row.getFirstCellNum(); j < row.getPhysicalNumberOfCells(); j++){
					// 循环列数
					cell = row.getCell(j).toString();
					hospitalList.add(cell);
//					System.out.println(cell+"\t");
				}
			}
		}
		return hospitalList;
	}
	public static void main(String[] args)throws Exception {
		List list = readExcelData("E:/hospital.xlsx"); 
		System.out.println(list);
	}
}
 
XLSWriter.java
package com.poi;

import java.io.FileOutputStream;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRichTextString;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
/**
 * 
 * @author Snow
 * 简单的写入 excel
 * HSSF实现 excel 2003(以 .xls 结尾的文件)
 * XSSF实现 excel 2007(以 .xlsx 结尾的文件)
 */
public class XLSWriter {
	public static void main(String[] args)throws Exception{
		// 创建工作薄
		XSSFWorkbook workBook = new XSSFWorkbook();
		// 在工作薄中创建一工作表
		XSSFSheet sheet = workBook.createSheet();
		// 在指定的索引处创建一行
		XSSFRow row = sheet.createRow(0);
		// 在指定的索引处创建一列(单元格)
		XSSFCell code = row.createCell(0);
		// 定义单元格为字符串类型
		code.setCellType(XSSFCell.CELL_TYPE_STRING);
		// 在单元格输入内容
		XSSFRichTextString codeContent = new XSSFRichTextString("医院编号");
		code.setCellValue(codeContent);
		XSSFCell city = row.createCell(1);
		city.setCellType(XSSFCell.CELL_TYPE_STRING);
		XSSFRichTextString cityContent = new XSSFRichTextString("城市");
		city.setCellValue(cityContent);
		// 新建一输出流并把相应的excel文件存盘
		FileOutputStream fos = new FileOutputStream("E:/hos.xlsx");
		workBook.write(fos);
		fos.flush();
		//操作结束,关闭流
		fos.close();
		System.out.println("文件生成");
	}
}
供初学者参考
原文地址:http://blog.csdn.net/u014011236/article/details/39182051

相关推荐

WindyQCF / 0评论 2016-09-30