wuddny的blog 2014-09-10
首先:毋庸置疑,我们得去官网下载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); } }
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("文件生成"); } }