POI实现简单的Excel读与写
来源:互联网 发布:电脑无法连接网络叹号 编辑:程序博客网 时间:2024/05/01 15:31
/*POI实现简单的Excel读与写,与jxl实现其实是差不多的!但是以前用jxl的时候,可以以一个文件为模版创建一个文件,但是在poi里面好像没有,只能创建读的Excel,或者可写且可读(但是不能以模版创建的对象来写,因为这样数据写不进文件)。反正我还没有找到,不知道你能不能这样写!写出来了告诉我一声哦!
下面讲一下基本的类:
HSSFWorkbook //工作薄 相当与Xcel文件
HSSFSheet //工作表 Sheet
HSSFRow //一行记录
HSSFCell //格子*/
//下面写一个简单的poi实现Excel的例子:
package com.poi;
import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.sql.ResultSet;
import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFClientAnchor;import org.apache.poi.hssf.usermodel.HSSFPatriarch;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.poifs.filesystem.POIFSFileSystem;
public class JiandanWrite { public static void main(String[] args) throws FileNotFoundException { readExcel(); } /** * 如果以一个模版创建数据的话,就只有模版,没有数据 只能读取数据 * */ public static void readExcel() throws FileNotFoundException { //要生成的文件 String path = "e:/单一资金信托计划要素表EXCEL模板(2003版)_test.xls"; //以这个模版去生成文件 String src = "e:/test/单一资金信托计划要素表EXCEL模板(2003版).xls"; InputStream ins = new FileInputStream(src); OutputStream output = new FileOutputStream(path); HSSFWorkbook hworkBook = null; HSSFSheet writableSheet = null; try { POIFSFileSystem fs = new POIFSFileSystem(ins); //这个是只读Excel工作簿 hworkBook = new HSSFWorkbook(fs); writableSheet = hworkBook.getSheetAt(1); // 数据也没添加进去 使用读取模版Excel文件的 对象不能写入数据 HSSFRow row = writableSheet.createRow(5); HSSFCell cell = row.createCell(0); cell.setCellValue("我是第5行第一个!"); System.out.println("第五行的内容:"+cell.getStringCellValue()); /*row.createCell(0).setCellValue("111"); row.createCell(1).setCellValue("222"); row.createCell(2).setCellValue("333"); row.createCell(3).setCellValue("eeeeee"); row.createCell(4).setCellValue("123455");*/ //使用读取模版Excel文件的 对象能读取数据 OK /*HSSFRow readRow = writableSheet.getRow(0); HSSFCell readCell = readRow.getCell(0); String value = readCell.getStringCellValue(); System.out.print("读取到的第一个数据:"+value);*/ hworkBook.write(output); output.flush(); }catch(Exception e){ e.printStackTrace(); }finally{ try { if(output!=null) output.close(); if(ins != null) ins.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //直接创建Excel文件 然后往里面写入数据 OK public static void createExcel(String[] args) throws FileNotFoundException { String path = "e:/单一资金信托计划要素表EXCEL模板(2003版)_test.xls"; String src = "e:/test/单一资金信托计划要素表EXCEL模板(2003版).xls"; InputStream ins = new FileInputStream(src); OutputStream output = new FileOutputStream(path); HSSFWorkbook hworkBook = null; HSSFSheet writableSheet = null; try { //Excel 可读可写工作簿 hworkBook = new HSSFWorkbook(); writableSheet = hworkBook.createSheet("表"); byte i = 4; //添加Sheet的数据 HSSFRow row = writableSheet.createRow(1); HSSFCell cell = row.createCell(0); cell.setCellValue("我是第5行第一个!"); //row.createCell(0).setCellValue("111"); row.createCell(1).setCellValue("222"); row.createCell(2).setCellValue("333"); row.createCell(3).setCellValue("eeeeee"); row.createCell(4).setCellValue("123455"); System.out.println("第五行的内容:"+cell.getStringCellValue()); hworkBook.write(output); }catch(Exception e){ e.printStackTrace(); }finally{ try { output.close(); ins.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }}