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的更多相关文章
- POI 的API大全二
1.POI结构与常用类 (1)POI介绍 Apache POI是Apache软件基金会的开源项目,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. .NET的开发 ...
- POI中文API文档
一. POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 二. HSSF概况 HSSF 是 ...
- POI - Excel API
一.概述 1. Apache POI是Apache软件基金会的开放源码函式库,POI提供API给java程式对Microsoft Office格式档案读和写的功能. 2. 结构 ...
- POI SXSSF API 导出1000万数据示例
SXSSF是XSSF API的兼容流式扩展,在必须生成非常大的电子表格.并且堆空间有限时使用. SXSSF通过限制对滑动窗口内数据的访问实现低内存占用,而XSSF允许访问文档中的所有行. 不在窗口中的 ...
- poi API
一. POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 二. HSSF概况 HSSF 是 ...
- poi 导入导出的api说明(大全)
原文链接:http://www.cnblogs.com/qingruihappy/p/8443101.html poi 导入导出的api说明(大全) 一. POI简介 ApachePOI是Apache ...
- Excel poi API基础教程!
原文转子: http://blog.csdn.net/yellowd1/article/details/44628701 登录|注册 yellowd1的专栏 目录视图 摘要视图 订 ...
- poi API大全
一. POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 二. HSSF概况 HSSF 是 ...
- Java poi读取,写入Excel,处理row和cell可能为空的情况
首先需要导入包 import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.NP ...
随机推荐
- python爬虫从入门到放弃(二)之爬虫的原理
在上文中我们说了:爬虫就是请求网站并提取数据的自动化程序.其中请求,提取,自动化是爬虫的关键!下面我们分析爬虫的基本流程 爬虫的基本流程 发起请求通过HTTP库向目标站点发起请求,也就是发送一个Req ...
- [JAVASCRIPT]实现页面复制至电脑剪贴板
一. 方法 方1: window.clipboarddata 可惜不支持chrome , chrome 下会提示找不到 clipboarddata 对象 方2: 采用国外大牛写的ZeroClipbo ...
- 【jquery】ajax请求
1. defferred对象 实现链式回调函数编程. http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_d ...
- ABP 重写主键ID
[Column("你那表的源主键名")] public override leixing Id{ get; set; }
- 花了一年时间开发出来的EZNest 自动套料软件
随着国内钢结构制造业的迅猛发展,市场竞争也愈演愈烈.近来钢材价格的大幅攀升,节约用材已成为企制胜的戈键,提高钢材的利用车自然就成了目前许多企业十分关心的一件事.对十大型钢结构生产制造商来说,如留在传统 ...
- 6步就能搞出个react网站哈,玩一把!
1.安装mk-tools命令行工具 $ npm i -g mk-tools 2.创建空website $ mk website myDemo $ cd myDemo 3.clone应 ...
- RabbitMQ入门-消息订阅模式
消息派发 上篇<RabbitMQ入门-消息派发那些事儿>发布之后,收了不少反馈,其中问的最多的还是有关消息确认以及超时等场景的处理. 楼主,有遇到消费者后台进程不在,但consumer连接 ...
- 勤快的love枫[ZJOI2007]
题目描述 小绝恋love 枫是一个出纳,经常需要做一些统计报表的工作.今天是绝恋love 枫的生日,小绝恋love 枫希望可以帮爸爸分担一些工作,作为他的生日礼物之一.经过仔细观察,小绝恋love 枫 ...
- Head First 设计模式 第3章 装饰者模式
第3章 装饰者模式 1.定义/说明 动态.透明的将职责附加到对象上(或从对象上撤销),而不影响其他对象.若要扩展功能,装饰者模式提供了比继承更富有弹性的替代方案. 2.介绍 首先让我们先来介绍一下场景 ...
- 个人php开发之工具--sublime主题配置(二)
摘要:俗话说:工欲善其事,必先利其器.作为一名开发者来说,熟练的使用工具可以达到事半功倍的效果,我就我自己使用的工具说自己的看法.当然,每个人对某个软件都有自己的看法或使用经验,还是那句老话,什么是最 ...