POI教程之第二讲:创建一个时间格式的单元格,处理不同内容格式的单元格,遍历工作簿的行和列并获取单元格内容,文本提取
第二讲
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教程之第二讲:创建一个时间格式的单元格,处理不同内容格式的单元格,遍历工作簿的行和列并获取单元格内容,文本提取的更多相关文章
- 【军哥谈CI框架】之入门教程之第二讲:分析CI结构和CI是怎么工作的
[军哥谈CI框架]之入门教程之第二讲:分析CI结构和CI是怎么工作的 之入门教程之第二讲:分析CI结构和CI是如何工作的大家好!上一节,我们共同部署了一个CI网站,做到这一点非常简单,但是,亲们, ...
- 《ArcGIS Engine+C#实例开发教程》第二讲 菜单的添加及其实现
原文:<ArcGIS Engine+C#实例开发教程>第二讲 菜单的添加及其实现 摘要:在上一讲中,我们实现了应用程序基本框架,其中有个小错误,在此先跟大家说明下.在“属性”选项卡中,我们 ...
- POI教程之第一讲:创建新工作簿, Sheet 页,创建单元格
第一讲 Poi 简介 Apache POI 是Apache 软件基金会的开放源码函数库,Poi提供API给java程序对Microsoft Office格式档案读和写的功能. 1.创建新工作簿,并给工 ...
- 3dmax实例教程-使用3ds Max 创建一个完整的场景
本篇教程讲述了利用3ds max创建一个完整的场景. 灵感来源:当我在遇到一些事情睡不着觉的时候我便在努力想象一些别的事情,于是我便想到了这个场景,其实对于我的这个角色我即没有参考图也没有草稿图,有的 ...
- 挑战全网最幽默的Vuex系列教程:第二讲 Vuex旗下的State和Getter
先说两句 上一讲 「Vuex 到底是个什么鬼」,已经完美诠释了 Vuex 的牛逼技能之所在(纯属自嗨).如果把 Vuex 比喻成农药里面的刘备,那就相当于你现在已经知道了刘备他是一个会打枪的力量型英雄 ...
- [Android开发教程]Android官网developer training中文版教程 - 1.1.1 创建一个Android项目
本系列持续更新中.转载请注明来源. 前言:近期打算系统学习一下Android开发,发现Android官网上的developer training也是个非常好的学习资料,于是想到一边学习一边写一个中文版 ...
- struts2官方 中文教程 系列一:创建一个struts2 web Application
先贴了本帖地址,以免被爬 http://www.cnblogs.com/linghaoxinpian/p/6898779.html 本教程将会通过安装struts2框架来创建一个简单的应用程序.虽然 ...
- Matlab高级教程_第二篇:一个简单的混编例子
1. 常用的混编是MATLAB和VS两个编辑器之间的混编方式. 2. 因为MATLAB的核是C型语言,因此常见的混编方式是MATLAB和C型语言的混编. 3. 这里介绍一个简单的MATLAB语言混编成 ...
- 如何用Apache POI操作Excel文件-----如何对一个单元格加注解?
有的时候,我们需要通过操作Apache POI,在生成Cell数据的同时,能对其生成的Cell,加上注解(comments),类似于下面的. 那么对于这种情况,我们的代码应该如何写呢? 借花献佛,我就 ...
随机推荐
- Sprint 3计划
一.计划目标: 1.完成基本的首页面的信息查询功能 2.学生家教用户注册和登录,将信息存储到数据库 3.完成家教的资格评定设定和个人教学内容备份信息 二.燃尽图 三.项目具体工作细则 待明天工作会议分 ...
- 后缀数组 --- WOj 1564 Problem 1564 - A - Circle
Problem 1564 - A - Circle Problem's Link: http://acm.whu.edu.cn/land/problem/detail?problem_id=156 ...
- .NET初学者推荐课程 asp.net错误代码大全
错误 CS0001 编译器内部错误错误 CS0003 内存溢出错误 CS0004 提升为错误的警告错误 CS0005 编译器选项后应跟正确的参数错误 CS0006 找不到动态链接的元数据文件错误 CS ...
- 在MVC中应用百度富文本编辑器
1.下载.NET版本的百度富文本编辑器,前往 下载.NET版本百度富文本框 2.解压下载的.zip压缩包,将utf8-.net文件夹名称改为:ueditor,复制到MVC根目录下面.结构如下: App ...
- 数组json格式的字符串 转 list<Bean>
1. 字符串形式: [ { "userid": "admin", "name": "admin", "pas ...
- (旧)子数涵数·C语言——条件语句
首先,我们讲一下理论知识,在编程中有三种结构,分别是顺序结构.条件结构.循环结构,如果用流程图来表示的话就是: 那么在C语言中,如何灵活运用这三种结构呢?这就需要用到控制语句了. 而条件语句便是控制语 ...
- c#泛型方法返回null的问题
c#的泛型方法实现和java实现有点不同,在java中,所有的泛型方法运行时类型必须是引用类型,所以和非泛型一样可以返回null. 但是c#中有点不同,可以同时是值类型和引用类型,而值类型不能赋值nu ...
- Smtp邮件发送系统公用代码整理—总结
1.前言 a.在软件开发中,我们经常能够遇到给用户或者客户推送邮件,推送邮件也分为很多方式,比如:推送一句话,推送一个网页等等.那么在系统开发中我们一般在什么情况下会使用邮件发送呢?下面我简单总结了一 ...
- 【干货分享】Node.js 中文资料导航
这篇文章与大家分享一批高质量的的 Node.js 中文资料.Node.js 是一个基于 Chrome JavaScript 运行时建立的一个平台, 用来方便地搭建快速的, 易于扩展的网络应用 Node ...
- jQuery.Cookie.js用法
jQuery.Cookie.js:一个轻量级的cookie插件,可以读取.写入.删除cookie. 一.使用方法 引入jQuery与jQuery.Cookie.js插件 <script src= ...