import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.commons.io.FileUtils;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.junit.Test;

public class poi_write {

    @Test
    public void testWrite() {
        final String [] str = {"id", "姓名", "性别"};
        //创建Excel工作薄
        HSSFWorkbook workbook = new HSSFWorkbook();
        //创建Excel工作表
        HSSFSheet sheet = workbook.createSheet();
        //创建第一行
        HSSFRow row = sheet.createRow(0);
        //定义单元格
        HSSFCell cell = null;

        //添加表头,为第一行填充内容
        for (int i = 0; i < str.length; i++) {
            cell = row.createCell(i);
            cell.setCellValue(str[i]);
        }

        //追加数据,创建十行,为每行添加数据,每行三个单元格,下表依次0,1,2
        for (int i = 1; i <= 10; i++) {
            HSSFRow rows = sheet.createRow(i);
            HSSFCell cell_id = rows.createCell(0);
            cell_id.setCellValue(i+"");
            HSSFCell cell_name = rows.createCell(1);
            cell_name.setCellValue("name:"+i);
            HSSFCell cell_sex = rows.createCell(2);
            cell_sex.setCellValue("男");
        }

        //文件保存路径
        File file = new File("E:/tmp/poi_text.xls");
        try{
            if(!file.exists()){
                file.createNewFile();
            }
            FileOutputStream fileOut = new FileOutputStream(file);//创建一个文件输出流对象
            workbook.write(fileOut);
            fileOut.close();//关闭输出流对象
        }catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("Excel文件已生成");
    }

    @Test
    public  void testRead() {
        final File file = new File("E:/tmp/poi_text.xls");
        if(file.exists()){
            try {
                //生成workbook
                HSSFWorkbook workbook = new HSSFWorkbook(FileUtils.openInputStream(file));
               // workbook.getSheet("Sheet0");//获得指定的工作表
               // HSSFSheet sheet = workbook.getSheet("Sheet0");
                //workbook.getSheetAt(0);//默认获得第一个工作表
                HSSFSheet sheet = workbook.getSheetAt(0);

                int firstRowNum = 0;
                //获得当前sheet最后一行行号
                int lastRowNum = sheet.getLastRowNum();
                for (int i = firstRowNum; i <= lastRowNum; i++) {
                    HSSFRow row = sheet.getRow(i);
                    //获得当前行最后单元格列号
                    int lastCellNum = row.getLastCellNum();
                    for (int j = 0; j < lastCellNum; j++) {
                        HSSFCell cell = row.getCell(j);
                        String value = cell.getStringCellValue();
                        System.out.print(value+" ");
                    }
                    System.out.println("");
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }else{
            System.out.println("读取文件不存在");
        }
    }

}

jar包 :poi-3.8-20120326.jar

java_poi的更多相关文章

  1. Java_POI之MS-Excel2003(扩展名.xls)升级至MS-Excel2007及以上版本(扩展名.xlsx)技术过程概要

    Java_POI之MS-Excel2003(扩展名.xls)升级至MS-Excel2007及以上版本(扩展名.xlsx)技术过程概要 作者:Eric.Zhang(花名:穿越者7号) 日期:2015年1 ...

  2. JAVA_POI 操作Excel

    转自: http://rensanning.iteye.com/blog/1538591# Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API ...

随机推荐

  1. CF135E Weak Subsequence (计数问题)

    题目传送门 题目大意:对于给定字符集大小k,求有多少个字符串满足它的最长[既是子串又是弱子序列]的长度为w: 神仙计数题 打表发现,对于字符串S而言,它的最长[既是子串又是弱子序列],一定存在一个对应 ...

  2. [USACO10DEC]宝箱Treasure Chest

    区间DP,但是卡空间. n2的就是f[i,j]=sum[i,j]-min(f[i+1][j],f[i][j-1])表示这个区间和减去对手取走的最多的. 但是空间是64MB,就很难受 发现一定是由大区间 ...

  3. 【ownCloud】添加信任域

    如果在安装ownCloud后,更换了访问方式,比如刚开始是http://127.0.0.1/owncloud,变成了http://1.1.1.1/owncloud,那么在访问时可能得到这样的页面: 您 ...

  4. 09.正则表达式re-1.正则表达式

    1.正则表达式概述 正则表达式(英语:Regular Expression,在代码中常简写为regex.regexp或RE),是计算机科学的一个概念. 正则表达式使用单个字符串来描述.匹配一系列匹配某 ...

  5. orcale 日期显示格式化

    SQL> select * 2 from emp 3 where hiredate='1987-11-17'; where hiredate='1987-11-17' * 第 3 行出现错误: ...

  6. poj 1274 基础二分最大匹配

    #include<stdio.h> #include<string.h> #define N 300 #define inf 0x3fffffff int mark[N],li ...

  7. Dockerfile分离构建LNMP环境部署wordpress

    最近忙着写自己的项目,也把一个站点的bbs论坛打算迁移到Docker中,测试没发现啥大问题.在单台上面的架构如下:(往后我们也是要讲到compose和swarm调度的慢慢来) 1.首先我们先安装一下d ...

  8. 怎样又一次编译linux内核

    linux作为自由软件.在广大爱好者的支持下,内核版本号不断更新. 新的内核修订了就得内核的bug,并添加了很多新的特性.假设用户须要使用这些新的特性或者依据自己的系统量身定做一个更高效或更稳定的内核 ...

  9. 为大家推荐一本书《jQuery Mobile 即学即用》

    这是人民邮电出版社出版的一本面向前端开发者的书. 非常喜欢书名"即学即用"这是每一个程序开发者的理想模式. 不同国家的人有不同的思维方式.这本书的作者是 [阿根廷] Maximil ...

  10. Spark部分:几个重要的端口汇总

    50070:HDFSwebUI的端口号 8485:journalnode默认的端口号 9000:非高可用访问数rpc端口 8020:高可用访问数据rpc 8088:yarn的webUI的端口号 808 ...