第二讲

1.创建一个时间格式的单元格

       Workbook wb=new HSSFWorkbook(); // 定义一个新的工作簿

       Sheet sheet=wb.createSheet("第一个Sheet页");  // 创建第一个Sheet页

       //第一个单元格

       Row row=sheet.createRow(0); // 创建一个行

       Cell cell=row.createCell(0); // 创建一个单元格  第1列

       cell.setCellValue(new Date());  // 给单元格设置值

       //第二个单元格

       CreationHelper createHelper=wb.getCreationHelper();

       CellStyle cellStyle=wb.createCellStyle(); //单元格样式类

       cellStyle.setDataFormat(createHelper.createDataFormat().getFormat("yyy-mm-dd hh:mm:ss"));

       cell=row.createCell(1); // 第二列

       cell.setCellValue(new Date());

       cell.setCellStyle(cellStyle);

       //第三个单元格

       cell=row.createCell(2);  // 第三列

       cell.setCellValue(Calendar.getInstance());

       cell.setCellStyle(cellStyle);

       //最后写到硬盘上

       FileOutputStream fileOut=new FileOutputStream("c:\\工作簿.xls");

       wb.write(fileOut);

       fileOut.close();

效果如下:

由于空间不够,所以显示不出来,拉伸一下就可以了。

2.处理不同内容格式的单元格

        Workbook wb=new HSSFWorkbook(); // 定义一个新的工作簿

        Sheet sheet=wb.createSheet("第一个Sheet页");  // 创建第一个Sheet页

        Row row=sheet.createRow(0); // 创建一个行

        Cell cell=row.createCell(0); // 创建一个单元格  第1列

        cell.setCellValue(new Date());  // 给单元格设置值

        row.createCell(1).setCellValue(1);

        row.createCell(2).setCellValue("一个字符串");

        row.createCell(3).setCellValue(true);

        row.createCell(4).setCellValue(HSSFCell.CELL_TYPE_NUMERIC);

        row.createCell(5).setCellValue(false);

        FileOutputStream fileOut=new FileOutputStream("c:\\工作簿.xls");

        wb.write(fileOut);

        fileOut.close();

效果如下:

3.遍历工作簿的行和列并获取单元格内容

//创建一个表格文件

        InputStream is=new FileInputStream("c:\\二货名单.xls");

        //读取文件

        POIFSFileSystem fs=new POIFSFileSystem(is);     

        HSSFWorkbook wb=new HSSFWorkbook(fs);

        HSSFSheet hssfSheet=wb.getSheetAt(0); // 获取第一个Sheet页

        if(hssfSheet==null){

            return;

        }       

        // 遍历行Row

        for(int rowNum=0;rowNum<=hssfSheet.getLastRowNum();rowNum++){

            HSSFRow hssfRow=hssfSheet.getRow(rowNum);

            if(hssfRow==null){

                continue;

            }

            // 遍历列Cell

            for(int cellNum=0;cellNum<=hssfRow.getLastCellNum();cellNum++){

                HSSFCell hssfCell=hssfRow.getCell(cellNum);

                if(hssfCell==null){

                    continue;

                }

                System.out.print(" "+getValue(hssfCell));

            }

            System.out.println();

        }

    }

    private static String getValue(HSSFCell hssfCell){

        if(hssfCell.getCellType()==HSSFCell.CELL_TYPE_BOOLEAN){

            return String.valueOf(hssfCell.getBooleanCellValue());

        }else if(hssfCell.getCellType()==HSSFCell.CELL_TYPE_NUMERIC){

            return String.valueOf(hssfCell.getNumericCellValue());

        }else{

            return String.valueOf(hssfCell.getStringCellValue());

        }

    }

注意一定是要2007版本以上的。2010的话可能识别不了。

二货名单.xls

控制台读出来:

4.文本提取

        InputStream is=new FileInputStream("c:\\二货名单.xls");

        POIFSFileSystem fs=new POIFSFileSystem(is);

        HSSFWorkbook wb=new HSSFWorkbook(fs);

        ExcelExtractor excelExtractor=new ExcelExtractor(wb);

        excelExtractor.setIncludeSheetNames(false);// 我们不需要Sheet页的名字

        System.out.println(excelExtractor.getText());

效果如下:

以上源码如下:http://yunpan.cn/cdBADQY7jS6WP  访问密码 e5cf

POI教程之第二讲:创建一个时间格式的单元格,处理不同内容格式的单元格,遍历工作簿的行和列并获取单元格内容,文本提取的更多相关文章

  1. 【军哥谈CI框架】之入门教程之第二讲:分析CI结构和CI是怎么工作的

    [军哥谈CI框架]之入门教程之第二讲:分析CI结构和CI是怎么工作的   之入门教程之第二讲:分析CI结构和CI是如何工作的大家好!上一节,我们共同部署了一个CI网站,做到这一点非常简单,但是,亲们, ...

  2. 《ArcGIS Engine+C#实例开发教程》第二讲 菜单的添加及其实现

    原文:<ArcGIS Engine+C#实例开发教程>第二讲 菜单的添加及其实现 摘要:在上一讲中,我们实现了应用程序基本框架,其中有个小错误,在此先跟大家说明下.在“属性”选项卡中,我们 ...

  3. POI教程之第一讲:创建新工作簿, Sheet 页,创建单元格

    第一讲 Poi 简介 Apache POI 是Apache 软件基金会的开放源码函数库,Poi提供API给java程序对Microsoft Office格式档案读和写的功能. 1.创建新工作簿,并给工 ...

  4. 3dmax实例教程-使用3ds Max 创建一个完整的场景

    本篇教程讲述了利用3ds max创建一个完整的场景. 灵感来源:当我在遇到一些事情睡不着觉的时候我便在努力想象一些别的事情,于是我便想到了这个场景,其实对于我的这个角色我即没有参考图也没有草稿图,有的 ...

  5. 挑战全网最幽默的Vuex系列教程:第二讲 Vuex旗下的State和Getter

    先说两句 上一讲 「Vuex 到底是个什么鬼」,已经完美诠释了 Vuex 的牛逼技能之所在(纯属自嗨).如果把 Vuex 比喻成农药里面的刘备,那就相当于你现在已经知道了刘备他是一个会打枪的力量型英雄 ...

  6. [Android开发教程]Android官网developer training中文版教程 - 1.1.1 创建一个Android项目

    本系列持续更新中.转载请注明来源. 前言:近期打算系统学习一下Android开发,发现Android官网上的developer training也是个非常好的学习资料,于是想到一边学习一边写一个中文版 ...

  7. struts2官方 中文教程 系列一:创建一个struts2 web Application

    先贴了本帖地址,以免被爬  http://www.cnblogs.com/linghaoxinpian/p/6898779.html 本教程将会通过安装struts2框架来创建一个简单的应用程序.虽然 ...

  8. Matlab高级教程_第二篇:一个简单的混编例子

    1. 常用的混编是MATLAB和VS两个编辑器之间的混编方式. 2. 因为MATLAB的核是C型语言,因此常见的混编方式是MATLAB和C型语言的混编. 3. 这里介绍一个简单的MATLAB语言混编成 ...

  9. 如何用Apache POI操作Excel文件-----如何对一个单元格加注解?

    有的时候,我们需要通过操作Apache POI,在生成Cell数据的同时,能对其生成的Cell,加上注解(comments),类似于下面的. 那么对于这种情况,我们的代码应该如何写呢? 借花献佛,我就 ...

随机推荐

  1. spring日记------部署环境、写demo

    一.安装jdk1.7 祥见http://zhinan.sogou.com/guide/detail/?id=1610006590 二.创建web项目 略 三.配置ssm环境 3.1添加spring.m ...

  2. 线段树 + 矩阵 --- ZOJ 3772 Calculate the Function

    Calculate the Function Problem's Link:   http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCod ...

  3. C#递归题目代码

    一列数的规则如下: 1.1.2.3.5.8.13.21.34...... 求第30位数是多少, 用递归算法实现. 代码: public class MainClass { public static ...

  4. 用c#写的一个局域网聊天客户端 类似小飞鸽

    用c#写的一个局域网聊天客户端 类似小飞鸽 摘自: http://www.cnblogs.com/yyl8781697/archive/2012/12/07/csharp-socket-udp.htm ...

  5. 【C#进阶系列】06 类型和成员基础

    这些东西是基础中的基础,基本上是本书都会讲这个.但是很多东西到处都有,所以只捡了以下的这些写下来. 关于类型的可见性和可访问性 也就是public,internal这种东西,但是还是有个东西要提一下, ...

  6. sublimeCodeIntel 的配置

    在项目的根目录目录下建立.codeintel/config 但是在windows 需要进入dos 环境下建立.以点开头的文件夹和文件.资源管理器不允许创建点开头的文件或文件夹,但在命令提示符下是可以的 ...

  7. ASP.NET Core 1.0开发Web API程序

    .NET Core版本:1.0.0-rc2Visual Studio版本:Microsoft Visual Studio Community 2015 Update 2开发及运行平台:Windows ...

  8. maven nexus deploy方式以及相关注意事项

    以前公司都是配管负责管理jar的,现在没有专职配管了,得自己部署到deploy上供使用.总的来说,jar部署到nexus上有两种方式: 1.直接登录nexus控制台进行上传,如下: 但是,某些仓库可能 ...

  9. 微信公共平台开发1 .net

    如果想通过微信去开发(当然,指的是开发模式下),首先 建议先申请一个服务号,因为服务号的功能与接口也多,有些功能订阅号是实现不了的.另外申请过以后必须得通过微信 认证才能开发,好像是得付300大洋,高 ...

  10. PHP控制前台弹出对话框

    应用场景: 微信授权登录过程中,需要用户确认,故衍生此需求: 相应的逻辑不放在前端的原因是,此部分逻辑属于偏功能业务,所以放在后端,方便统一管理. 解决办法: 通过php echo出javascrip ...