------------官网api地址

http://poi.apache.org/apidocs/index.html

------------官方下载地址

http://poi.apache.org/download.html

------------一些说明

HSSF(用于操作Excel的组件)提供给用户使用的对象在org.apache.poi.hssf.usermodel包中,主要部分包括Excel对象,样式和格式,还有辅助操作。有以下几种对象:

常用组件:

HSSFWorkbook                      excel的文档对象

HSSFSheet                         excel的表单

HSSFRow                           excel的行

HSSFCell                          excel的格子单元

HSSFFont                          excel字体

HSSFDataFormat                    日期格式

HSSFHeader                        sheet头

HSSFFooter                        sheet尾(只有打印的时候才能看到效果)

样式:

HSSFCellStyle                       cell样式

辅助操作包括:

HSSFDateUtil                        日期

HSSFPrintSetup                      打印

HSSFErrorConstants                  错误信息表

------------基本操作步骤理解

  一个Excel文件对应于一个workbook(HSSFWorkbook),

一个workbook可以有多个sheet(HSSFSheet)组成,

一个sheet是由多个row(HSSFRow)组成,

一个row是由多个cell(HSSFCell)组成。

1、用HSSFWorkbook打开或者创建“Excel文件对象”
2、用HSSFWorkbook对象返回或者创建Sheet对象
3、用Sheet对象返回行对象,用行对象得到Cell对象
4、对Cell对象读写。

------------简单例子:

//创建HSSFWorkbook对象  
HSSFWorkbook wb = new HSSFWorkbook();  
//创建HSSFSheet对象  
HSSFSheet sheet = wb.createSheet("sheet0");  
//创建HSSFRow对象  
HSSFRow row = sheet.createRow(0);  
//创建HSSFCell对象  
HSSFCell cell=row.createCell(0);  
//设置单元格的值  
cell.setCellValue("单元格中的中文");

------------合并 单元格

方法 :public int addMergedRegion(CellRangeAddress region)

//参数说明:1:开始行 2:结束行 3:开始列 4:结束列
//比如我要合并 第二行到第四行的 第六列到第八列 
sheet.addMergedRegion(new CellRangeAddress(1,3,5,7));

------------设置单元格的行高、列宽

//设置缺省列高

sheet.setDefaultRowHeightInPoints(10);

//设置缺省列宽

sheet.setDefaultColumnWidth(20);

//设置指定列的列宽,256 * 50这种写法是因为width参数单位是单个字符的256分之一  
  
sheet.setColumnWidth(cell.getColumnIndex(), 256 * 50);

------------设置样式

// 单元格的横向和纵向对齐方式  
 cellStyle.setAlignment(HSSFCellStyle.ALIGN_JUSTIFY);  
 cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);  
  
 /* 设置单元格的填充方式,以及前景颜色和背景颜色 
  三点注意: 
  1.如果需要前景颜色或背景颜色,一定要指定填充方式,两者顺序无所谓; 
  2.如果同时存在前景颜色和背景颜色,前景颜色的设置要写在前面; 
  3.前景颜色不是字体颜色。 
 */  
  
 //设置填充方式(填充图案)  
 cellStyle.setFillPattern(HSSFCellStyle.DIAMONDS);   
 //设置前景色  
 cellStyle.setFillForegroundColor(HSSFColor.RED.index);  
 //设置背景颜色  
 cellStyle.setFillBackgroundColor(HSSFColor.LIGHT_YELLOW.index);  
 // 设置单元格底部的边框及其样式和颜色  
 // 这里仅设置了底边边框,左边框、右边框和顶边框同理可设   
 cellStyle.setBorderBottom(HSSFCellStyle.BORDER_SLANTED_DASH_DOT);  
 cellStyle.setBottomBorderColor(HSSFColor.DARK_RED.index);   
 //设置日期型数据的显示样式  
 cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));   
将样式应用于单元格
cell.setCellStyle(cellStyle);  
//将样式应用到行,但有些样式只对单元格起作用  
row.setRowStyle(cellStyle);

------------设置字体样式
1、创建HSSFFont对象(调用HSSFWorkbook 的createFont方法)

HSSFWorkbook wb=new HSSFWorkbook();  
  
HSSFFont  fontStyle=wb.createFont();  
2、设置字体各种样式
  //设置字体样式  
  fontStyle.setFontName("宋体");    
  //设置字体高度  
  fontStyle.setFontHeightInPoints((short)20);    
  //设置字体颜色  
  font.setColor(HSSFColor.BLUE.index);  
  //设置粗体  
  fontStyle.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);  
  //设置斜体  
font.setItalic(true);  
//设置下划线  
font.setUnderline(HSSFFont.U_SINGLE);  
3、将字体设置到单元格样式
//字体也是单元格格式的一部分,所以从属于HSSFCellStyle  
// 将字体对象赋值给单元格样式对象  
cellStyle.setFont(font);  
// 将单元格样式应用于单元格  
cell.setCellStyle(cellStyle);

 ---------------获取指定行,列 以及行列总数

/获取指定行
hssfRow=hssfSheet.getRow(1);
//获取指定列
hssfCell=hssfRow.getCell((short)1);
//获取总行数
int rowNum=hssfSheet.getLastRowNum();
//获取一个excel表格中的总记录数
int rowNum=storagesList.size();
//获取总列数
int columnNum=hssfRow.getPhysicalNumberOfCells();

 ---------------设置整个sheet每个单元格宽度自适应

public void setAutoWith(HSSFSheet sheet) throws Exception {
int maxColumn = sheet.getPhysicalNumberOfRows();
// 列宽自适应,只对英文和数字有效
for (int i = 0; i <= maxColumn; i++) {
sheet.autoSizeColumn(i);
}
// 获取当前列的宽度,然后对比本列的长度,取最大值
for (int columnNum = 0; columnNum <= maxColumn; columnNum++) {
int columnWidth = sheet.getColumnWidth(columnNum) / 256;
for (int rowNum = 0; rowNum <= sheet.getLastRowNum(); rowNum++) {
Row currentRow;
// 当前行未被使用过
if (sheet.getRow(rowNum) == null) {
currentRow = sheet.createRow(rowNum);
} else {
currentRow = sheet.getRow(rowNum);
}

if (currentRow.getCell(columnNum) != null) {
Cell currentCell = currentRow.getCell(columnNum);
int length = currentCell.toString().getBytes("GBK").length;
if (columnWidth < length + 1) {
columnWidth = length + 1;
}
}
}
sheet.setColumnWidth(columnNum, columnWidth * 256);
}

}

 ---------------不管格子的数据是何类型,自动返回相应的值

/**
* 获取单元格的值
* @param cell
* @return
*/
public String getCellValue(Cell cell){
if(cell == null) return "";
if(cell.getCellType() == Cell.CELL_TYPE_STRING){
return cell.getStringCellValue();
}else if(cell.getCellType() == Cell.CELL_TYPE_BOOLEAN){
return String.valueOf(cell.getBooleanCellValue());
}else if(cell.getCellType() == Cell.CELL_TYPE_FORMULA){
return cell.getCellFormula() ;
}else if(cell.getCellType() == Cell.CELL_TYPE_NUMERIC){
return String.valueOf(cell.getNumericCellValue());
}
return "";
}

 ---------------颜色索引对照表

设置字体时,后面要加上.index 比如HSSFColor.GREY_80_PERCENT.index取得short值

.

HSSFColor.GREY_80_PERCENT

.

HSSFColor.INDIGO

.

HSSFColor.PLUM

 

HSSFColor.BROWN

.

HSSFColor.OLIVE_GREEN

.

HSSFColor.DARK_GREEN

.

HSSFColor.SEA_GREEN

.

HSSFColor.DARK_TEAL

.

HSSFColor.GREY_40_PERCENT

.

HSSFColor.BLUE_GREY

.

HSSFColor.ORANGE

.

HSSFColor.LIGHT_ORANGE

.

HSSFColor.GOLD

.

HSSFColor.LIME

.

HSSFColor.AQUA

.

HSSFColor.LIGHT_BLUE

poi api工具的更多相关文章

  1. es2.4.6 java api 工具类

    网上找了很久没找到2.4.X 想要的java api 工具 自己写了一个,分享一下 导入所需的jar <!-- ElasticSearch begin --> <dependency ...

  2. Google POI下载工具破解之路

    我是GIS初学者,爱好二次开发,像初恋一样.最近对编译感兴趣,每当成功获取一点信息,就有一种快感,感觉马上就要成功了……其实,还早! 01.初次反编译 今天在微创业工作室找到了Google POI下载 ...

  3. [Training Video - 6] [File Reading] [Java] Read Excel File Using Apache POI API

    读取以下两种格式的Excel : *.xls  and *.xlsx 用Apache POI API来实现,需要用到 HSSF 和 XSSF 的类库 HSSF is the POI Project's ...

  4. JeePlus:API工具

    ylbtech-JeePlus:API工具 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部 0. http://wiki.jeeplus.org/docs/sho ...

  5. 耗时半年,Eoapi 终于正式发布 API 工具的插件广场

      这是我们的第一篇月报,每个月和每个来之不易的开发者分享产品故事以及产品进展. 在 5.20 这个极具中国特色的"节日"里,Eoapi 发布了 1.0.0 版,三个程序员掉了半年 ...

  6. Eoapi — 一个可拓展的开源 API 工具

    ​ 在社区中时常会出现"抱怨某商业产品越来越臃肿"的声音,API 工具也是如此.从最早期只做 API 调试的工具,到经过多年的演进后集成全面功能的"庞然大物", ...

  7. poi API

    一. POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 二. HSSF概况 HSSF 是 ...

  8. POI导入工具类

    前言 导入的通用方法,包括xls.xlsx的取值方法,非空判断方法,空行判断,处理了手机号读取和日期读取格式问题.这几个方法就可以完成简单读取了,有时间我在优化下. maven依赖 <!-- P ...

  9. Excel poi API基础教程!

    原文转子: http://blog.csdn.net/yellowd1/article/details/44628701 登录|注册     yellowd1的专栏       目录视图 摘要视图 订 ...

随机推荐

  1. 【代码审计】五指CMS_v4.1.0 copyfrom.php 页面存在SQL注入漏洞分析

      0x00 环境准备 五指CMS官网:https://www.wuzhicms.com/ 网站源码版本:五指CMS v4.1.0 UTF-8 开源版 程序源码下载:https://www.wuzhi ...

  2. 【死磕jeesite源码】mybatis动态调用表名和字段名

    本文转载自夏雪冬日 一直在使用Mybatis这个ORM框架,都是使用mybatis里的一些常用功能.今天在项目开发中有个业务是需要限制各个用户对某些表里的字段查询以及某些字段是否显示,如某张表的某些字 ...

  3. 《转载》python爬虫实践之模拟登录

    有些网站设置了权限,只有在登录了之后才能爬取网站的内容,如何模拟登录,目前的方法主要是利用浏览器cookie模拟登录.   浏览器访问服务器的过程   在用户访问网页时,不论是通过URL输入域名或IP ...

  4. 【Important】数据库索引原理

    为什么要给表加上主键? 为什么加索引后会使查询变快? 为什么加索引后会使写入.修改.删除变慢? 什么情况下要同时在两个字段上建索引? 想理解索引原理必须清楚一种数据结构(平衡树非二叉)也就是b tre ...

  5. Unity3D 优化NGUI纹理

    原理就是将一张rgba 32的分成两张纹理:一张平台压缩不带alpha和一张为原图1/4大小的压缩图存储alpha信息(用r分量当alpha值),然后修改原材质的Shader传入这两张纹理. 代码如下 ...

  6. A - 取(m堆)石子游戏

    m堆石子,两人轮流取.只能在1堆中取.取完者胜.先取者负输出No.先取者胜输出Yes,然后输出怎样取子.例如5堆 5,7,8,9,10先取者胜,先取者第1次取时可以从有8个的那一堆取走7个剩下1个,也 ...

  7. Java学习者论坛【申明:来源于网络】

    学习者论坛[申明:来源于网络] 1.Java学习者论坛 2.51论坛 3.csdn论坛 4.JAVA ME论坛 地址|: http://www.javaxxz.com/ 地址|: http://bbs ...

  8. Steeltoe之Service Discovery篇

    在前文一窥Spring Cloud Eureka中,已经构建了基于Eureka的服务端与客户端,可用于实现服务注册与发现功能.而借助Steeltoe的类库,可以在.NET生态系统中使用Spring C ...

  9. [No0000CB]如何在命令行(cmd)通过TCP/IP端口(port)查询所在的进程号(pid)或进程名称,并终止该进程

      1)首先查找占用某个端口的进程PID netstat -ano | findstr [port] 2)根据该进程pid查询进程名称或标题,确认那个程序在占用该端口 tasklist /v | fi ...

  10. Django:管理站点

    1.自定义管理页面 自定义管理界面需要创建一个类,继承admin.ModelAdmin booktest/admin.py class BookInfoAdmin(admin.ModelAdmin): ...