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

来源:互联网 发布:枯枝败叶 知乎 编辑:程序博客网 时间:2024/04/28 17:21

使用  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();// 创建工作薄WorkbookWorkbook 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 fileint numberOfSheets = workBook.getNumberOfSheets();// 循环 numberOfSheetsfor(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("文件生成");}}
供初学者参考

0 0
原创粉丝点击