poi包下载 API

使用POI生成Excel,大家都是赞个。可是狐狸觉得毕竟不是微软的产品,使用没有C#语言的好用,方法还是存在极限的。

下面总结狐狸自己用过的方法:

import org.apache.poi.hssf.usermodel.*;

@ 创建一个空白的excel

HSSFWorkbook workBook = new HSSFWorkbook();//是操作Excel2003的版本,扩展名是xls

@ 创建sheet页

HSSFSheet sheet = workBook.createSheet(String sheetName);//参数是设置sheet的名字

HSSFSheet sheet = workBook.createSheet();//sheet名字为默认sheet0

  @ sheet的其它常用设计

    在poi中并不存在某个单元格或者区域设置可编辑与不可编辑的方法,如果要控制某些列或者行是可以编辑的功能,必须先

    把sheet设置为密码保护模式,然后对指定的可编辑单元格设置保护失效。

  sheet.createFreezePane(int colSplit, int rowSplit);//冻结
  sheet.createFreezePane(int colSplit, int rowSplit, intleftmostColumn,int topRow);

    以上两种冻结方法只是区域参数不同。

  sheet.protectSheet("hisense");//密码保护,保护区域不可以修改

  HSSFCellStyle styleEdit = workBook.createCellStyle();//设置单元格格式

  styleEdit.setLocked(false);//该样式的保护失效

@ sheet中创建行

HSSFRow  row = sheet.createRow(int i);//生成第一行,i默认从0开始

row.setHeight((short)900);//设置行高

@ row中设置单元格

HSSFCell cell = row.createCell(int i);//在row行的第i+1列生成一个单元格

cell.setCellValue(new HSSFRichTextString(String text));//单元格赋值

cell.setZeroHeight(true);//将行高设置为零即可以隐藏

cell.setCellStyle(HSSFCellStyle style);//在单元格设置样式,样式在下面详解

若该style = styleEdit(上面sheet部分已经设置,见@ sheet的其它常用设计),则表示该单元格可以编辑

@ 单元格格式设置

  HSSFCellStyle style = workBook.createCellStyle();//创建单元格样式

  HSSFFont font = workBook.createFont();//设置字体

  font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//粗体显示

  style.setFont(font);//选择需要用到的字体格式

  HSSFDataFormat format = workBook.createDataFormat();//设置单元格格式
  style.setDataFormat(format.getFormat("@"));//设置单元格为文本格式
  style.setBorderRight(HSSFCellStyle.BORDER_THIN);//生成右边框   style.setRightBorderColor(HSSFColor.BLACK.index);//设置右边框颜色   style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex());//设置单元格背景
  style.setAlignment(HSSFCellStyle.ALIGN_RIGHT);//设置单元格右对齐

  边框的方法有:setBorderLeft,setBorderRight,setBorderTop,setBorderBottom

@ 合并单元格

    import org.apache.poi.hssf.util.Region;

    sheet.addMergedRegion(new Region(startRow, (short) startColumn, endRow, (short) endColumn)); 

================================================================================

读取excel数据的方法:

@ 读取excel文件

HSSFWorkbook workbook = new HSSFWorkbook(new java.io.FileInputStream( String filePath));

@ 根据sheet名读取sheet内页

HSSFSheet sheet = workbook.getSheet(String sheetName); 

@ 读取指定rowIndex的行

HSSFRow row = sheet.getRow(int rowIndex);

@ 读取单元格

HSSFCell cell = row.getCell(int index);

@ 读取单元格内的值

String value = row.getCell(int index).getStringCellValue();

 单元格内为空时,用上面方法会报错,解决方法:

HSSFCell Cell = row.getCell(int index);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);//设置为string类型
String value = row.getCell(index).getStringCellValue();

@ 用于辅助的好用方法:

int lastCol = row.getLastCellNum();//获取最后一列

int lastRow = sheet.getLastRowNum();//获取最后一行

@ 设置单元格值类型

cell.setCellValue(String);//设置单元格文本值

cell.setCellValue(Double);//设置单元格数字型值

通过以上的函数,可以完成excel的创建和读取操作。

*************************************************************************************************

狐狸最近在完成JSP动态表格导出excel形式并且设置excel受保护部分单元格可以编辑的属性,最后实现批量修改导入到数据的过程。

@ 将JSP页面表格导出excel形式:

  实现:利用poi设置excel格式,并且从数据库中读取数据导入到excel中,最后设置response如下:

   response.setContentType("application/vnd.ms-excel;charset=gbk");
response.setHeader("Content-Disposition", "attachment;filename=policyParam.xls");
OutputStream out = response.getOutputStream();
workBook.write(out);
out.close();

若导出的excel文件是中文,请先转码再导出。

   String fileName =java.net.URLEncoder.encode("导出","utf-8");
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename="+fileName+".xls");
OutputStream out = response.getOutputStream();
workBook.write(out);
out.close();

项目经理说页面的数据不是可以直接导成excel吗?我觉得与其从JSP读出数据,不如直接从数据库读取数据。

@ 将excel的数据批量导入到数据库

  第一步设计一个文件上传表单,同时校验excel合法性(模板是否符合当前的对象)

  第二步利用 com.jspsmart.upload.SmartUpload读取文件流,从文件流中读取excel数据。

  第三步将读到的数据利用JDBC更新到数据库,每1000条commit一次。

  第四步如果excel有不合法数据,那么回滚数据。

POI 自用API的更多相关文章

  1. POI 的API大全二

    1.POI结构与常用类 (1)POI介绍 Apache POI是Apache软件基金会的开源项目,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. .NET的开发 ...

  2. POI中文API文档

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

  3. POI - Excel API

    一.概述    1. Apache POI是Apache软件基金会的开放源码函式库,POI提供API给java程式对Microsoft Office格式档案读和写的功能.    2. 结构       ...

  4. POI SXSSF API 导出1000万数据示例

    SXSSF是XSSF API的兼容流式扩展,在必须生成非常大的电子表格.并且堆空间有限时使用. SXSSF通过限制对滑动窗口内数据的访问实现低内存占用,而XSSF允许访问文档中的所有行. 不在窗口中的 ...

  5. poi API

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

  6. poi 导入导出的api说明(大全)

    原文链接:http://www.cnblogs.com/qingruihappy/p/8443101.html poi 导入导出的api说明(大全) 一. POI简介 ApachePOI是Apache ...

  7. Excel poi API基础教程!

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

  8. poi API大全

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

  9. Java poi读取,写入Excel,处理row和cell可能为空的情况

    首先需要导入包 import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.NP ...

随机推荐

  1. python爬虫从入门到放弃(二)之爬虫的原理

    在上文中我们说了:爬虫就是请求网站并提取数据的自动化程序.其中请求,提取,自动化是爬虫的关键!下面我们分析爬虫的基本流程 爬虫的基本流程 发起请求通过HTTP库向目标站点发起请求,也就是发送一个Req ...

  2. [JAVASCRIPT]实现页面复制至电脑剪贴板

    一. 方法 方1: window.clipboarddata  可惜不支持chrome , chrome 下会提示找不到 clipboarddata 对象 方2: 采用国外大牛写的ZeroClipbo ...

  3. 【jquery】ajax请求

    1. defferred对象 实现链式回调函数编程. http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_d ...

  4. ABP 重写主键ID

    [Column("你那表的源主键名")] public override leixing Id{ get; set; }

  5. 花了一年时间开发出来的EZNest 自动套料软件

    随着国内钢结构制造业的迅猛发展,市场竞争也愈演愈烈.近来钢材价格的大幅攀升,节约用材已成为企制胜的戈键,提高钢材的利用车自然就成了目前许多企业十分关心的一件事.对十大型钢结构生产制造商来说,如留在传统 ...

  6. 6步就能搞出个react网站哈,玩一把!

    1.安装mk-tools命令行工具   $ npm i -g mk-tools   2.创建空website   $ mk website myDemo $ cd myDemo    3.clone应 ...

  7. RabbitMQ入门-消息订阅模式

    消息派发 上篇<RabbitMQ入门-消息派发那些事儿>发布之后,收了不少反馈,其中问的最多的还是有关消息确认以及超时等场景的处理. 楼主,有遇到消费者后台进程不在,但consumer连接 ...

  8. 勤快的love枫[ZJOI2007]

    题目描述 小绝恋love 枫是一个出纳,经常需要做一些统计报表的工作.今天是绝恋love 枫的生日,小绝恋love 枫希望可以帮爸爸分担一些工作,作为他的生日礼物之一.经过仔细观察,小绝恋love 枫 ...

  9. Head First 设计模式 第3章 装饰者模式

    第3章 装饰者模式 1.定义/说明 动态.透明的将职责附加到对象上(或从对象上撤销),而不影响其他对象.若要扩展功能,装饰者模式提供了比继承更富有弹性的替代方案. 2.介绍 首先让我们先来介绍一下场景 ...

  10. 个人php开发之工具--sublime主题配置(二)

    摘要:俗话说:工欲善其事,必先利其器.作为一名开发者来说,熟练的使用工具可以达到事半功倍的效果,我就我自己使用的工具说自己的看法.当然,每个人对某个软件都有自己的看法或使用经验,还是那句老话,什么是最 ...