poi读写Excel
poi读写Excel
对于一个程序员来说,文件操作是经常遇到的,尤其是对Excel文件的操作。
在这里介绍一下我在项目中用到的一个操作Excel的工具——POI。关于POI的一些概念,网络上很多,详细信息大家可以自行百度,我在这里只做简单介绍。POI是apache的类库,主要是为java开发人员提供对Office文件(word、ppt、Excel)处理的支持。我这里主要给出几个例子来说明演示一下。
准备工作
我用的版本是3.10.1,需要的jar有:
- dom4j.jar
- log4j-1.2.13.jar
- poi-3.10.1-20140818.jar
- poi-ooxml-3.10.1-20140818.jar
- poi-ooxml-schemas-3.10.1-20140818.jar
- poi-scratchpad-3.10.1-20140818.jar
- public void testReadExcel() {
- try {
- // 读取Excel
- Workbook wb = new HSSFWorkbook(new FileInputStream("d:\\2.xls"));
- // 获取sheet数目
- for (int t = 0; t < wb.getNumberOfSheets(); t++) {
- Sheet sheet = wb.getSheetAt(t);
- Row row = null;
- int lastRowNum = sheet.getLastRowNum();
- // 循环读取
- for (int i = 0; i <= lastRowNum; i++) {
- row = sheet.getRow(i);
- if (row != null) {
- // 获取每一列的值
- for (int j = 0; j < row.getLastCellNum(); j++) {
- Cell cell = row.getCell(j);
- String value = getCellValue(cell) ;
- if(!value.equals("")){
- System.out.print(value + " | ");
- }
- }
- System.out.println();
- }
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
用到了一个方法:
- /***
- * 读取单元格的值
- *
- * @Title: getCellValue
- * @Date : 2014-9-11 上午10:52:07
- * @param cell
- * @return
- */
- private String getCellValue(Cell cell) {
- Object result = "";
- if (cell != null) {
- switch (cell.getCellType()) {
- case Cell.CELL_TYPE_STRING:
- result = cell.getStringCellValue();
- break;
- case Cell.CELL_TYPE_NUMERIC:
- result = cell.getNumericCellValue();
- break;
- case Cell.CELL_TYPE_BOOLEAN:
- result = cell.getBooleanCellValue();
- break;
- case Cell.CELL_TYPE_FORMULA:
- result = cell.getCellFormula();
- break;
- case Cell.CELL_TYPE_ERROR:
- result = cell.getErrorCellValue();
- break;
- case Cell.CELL_TYPE_BLANK:
- break;
- default:
- break;
- }
- }
- return result.toString();
- }
解释一下,首先将文件读入到工作簿Workbook中,Workbook是一个接口,他有2个实现:HSSFWorkbook和XSSFWorkbook。前者是用来读取97-03版的Excel,扩展名为xls,后者是读取07及以后的版本,扩展名为xlsx。读入到workbook中,然后循环所有的sheet,在sheet循环所有的有效行和有效列。其中sheet.getLastRowNum()获得最后一行的索引值(从0开始),而sheet.getPhysicalNumberOfRows()则是获取的最后一行的行号(从1开始)。这里要注意的是循环列不是在sheet中循环,而是在row中循环。
- public void testWriteExcel() {
- String excelPath = "d:/3.xls";
- Workbook workbook = null;
- try {
- // XSSFWorkbook used for .xslx (>= 2007), HSSWorkbook for 03 .xsl
- workbook = new HSSFWorkbook();// XSSFWorkbook();//WorkbookFactory.create(inputStream);
- } catch (Exception e) {
- System.out.println("创建Excel失败: ");
- e.printStackTrace();
- }
- if (workbook != null) {
- Sheet sheet = workbook.createSheet("测试数据");
- Row row0 = sheet.createRow(0);
- for (int i = 0; i < 6; i++) {
- Cell cell = row0.createCell(i, Cell.CELL_TYPE_STRING);
- cell.setCellValue("列标题" + i );
- //sheet.autoSizeColumn(i);//自动调整宽度
- }
- for (int rowNum = 1; rowNum < 10; rowNum++) {
- Row row = sheet.createRow(rowNum);
- for (int i = 0; i < 6; i++) {
- Cell cell = row.createCell(i, Cell.CELL_TYPE_STRING);
- cell.setCellValue("单元格" + String.valueOf(rowNum + 1)
- + String.valueOf(i + 1));
- }
- }
- try {
- FileOutputStream outputStream = new FileOutputStream(excelPath);
- workbook.write(outputStream);
- outputStream.flush();
- outputStream.close();
- } catch (Exception e) {
- System.out .println("写入Excel失败: ");
- e.printStackTrace();
- }
- }
- }
效果图如下:
怎么样,很简单吧。只要你使用了poi,不管你有没有安装Office,都可以完美的操作Office文件,小伙伴们,都快来试试看吧。
poi读写Excel的更多相关文章
- jxl读写excel, poi读写excel,word, 读取Excel数据到MySQL
这篇blog是介绍: 1. java中的poi技术读取Excel数据,然后保存到MySQL数据中. 2. jxl读写excel 你也可以在 : java的poi技术读取和导入Excel了解到写入Exc ...
- [转]POI读写Excel 修改
[转]POI读写Excel 修改 一.Excel基础 二.HSSF概况 三.通过usermodel读取文件 四.通过usermodel写入文件 五.通过eventusermodel读取文件 六.HSS ...
- Apache POI 读写 Excel 文件
目录 写入 Excel 文件 读取 Excel 文件 遍历 Excel 文件 需要的 maven 依赖 完整代码 写入 Excel 文件 // 写入 Excel 文件 // ============= ...
- POI读写Excel简述之写入
二.POI写入Excel文件(以Excel2003版为例,2007版就是根据文件扩展名xlsx将HSSFWorkbook换为XSSFWorkbook,及其Sheet.Row.Cell也相应替换) 1. ...
- POI读写Excel简述之读取
一.POI读取Excel文件(以Excel2003版为例,2007版就是根据文件扩展名xlsx将HSSFWorkbook换为XSSFWorkbook,及其Sheet.Row.Cell也相应替换) // ...
- 使用poi读写excel文件
使用poi库测试了一下读取excel文件,效果不错,跟大家分享一下. 第一列是数值型,第二列是字符型,代码如下: package poi; import java.io.FileInputStream ...
- Apache POI读写Excel
Apache POI是Apache软件基金会的开放源码函式库,POIAPI给Java程序对Microsoft Office格式档案读和写的功能. 官方文档 [https://poi.apache.or ...
- 使用poi读写Excel
对于一个程序员来说,文件操作是经常遇到的,尤其是对Excel文件的操作. 在这里介绍一下我在项目中用到的一个操作Excel的工具——POI.关于POI的一些概念,网络上很多,详细信息大家可以自行百度, ...
- poi读写Excel文件
jxl 只有excel基本的操作,代码操作比较方便,一般使用jxl就够了,对图片支持较好 poi功能比jxl强大但是比较吃内存,支持计算公式 关于jxl具体可以参考 http:// ...
随机推荐
- 完整版本的停车场管理系统源代码带服务端+手机android客户端
该源码是停车场管理软件附带源代码 J2EE服务端+android客户端,也是一套停车场管理车辆进出的管理软,喜欢的朋友可以看看吧. 应用的后台管理主要功能介绍:1 机构管理 ,机构有从属管理< ...
- DB2使用收集
db2命令收集 创建带分区的表: create table table_name( )in table_space index in index_space partition by range(c ...
- html5——2D转换
transform 属性 1.向元素应用 2D 或 3D 转换 2.该属性允许我们对元素进行旋转.缩放.移动或倾斜. 缩放与位移 transform: scale(, 0.5);//水平缩放,垂直缩放 ...
- JS——选择水果
注意点: 1.select标签size属性显示选项数组,multiple属性可以多选 2.原select节点下的子节点在移动到其他selec标签下的时候,其原来的select标签下子节点长度在发生变化 ...
- CSS——滑动门
在背景图片中可以对图片进行圆角设置,但是这样是写死的.如下图: 情况分析:如果我们li标签中的文字变少了或者变多了,我们就需要重新定义背景图片.所以我们使用滑动门技术.它将图片特殊地方进行分割.宽度利 ...
- C#——反射动态创建类的实例
“反射”其实就是利用程序集的元数据信息. 反射可以有很多方法,编写程序时请先导入 System.Reflection 命名空间. 若要反射当前项目中的类(即当前项目已经引用它了),可以使用下面的写法. ...
- flask web开发日记
from flask import Flask,make_response,redirect,abort app = Flask(__name__) @app.route('/index1') def ...
- java编码终极探秘
首先要明白,java中string字符串都是unicode码保存的,只不过显示的时候会根据一定的规则,比如GBK或者是UTF-8去对照表中查找进行显示. 之所以会乱码就是因为使用错了编码方式. 数据是 ...
- 【译】x86程序员手册11- 4.1系统寄存器
4.1 Systems Registers 系统寄存器 The registers designed for use by systems programmers fall into these cl ...
- MSSQL高并发下生成连续不重复的订单号
一.确定需求 只要做过开发的基本上都有做过订单,只要做过订单的基本上都要涉及生成订单号,可能项目订单号生成规则都不一样,但是大多数规则都是连续增长. 所以假如给你一个这样的需求,在高并发下,以天为单位 ...