poi 学习之 使用 Apche poi 简单读写 Excel
使用 Apche poi 简单读写 Excel
首先:毋庸置疑,我们得去官网下载POI,地址:http://jakarta.apache.org/poi/
如下图(由于本人英语不是很好,初学时找下载的地方找了好长时间,所以直接把图贴出来,方便下载使用):
点击Download跳转:
下载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.****.net/u014011236/article/details/39182051