今天做了个excel的导入导出功能,在这记录下。

  首先现在相关poi的相关jar包,资源链接:http://download.csdn.net/detail/opening_world/9663247

  具体过程就不多说了,直接上代码吧。

  导出excel代码:

 public void export2007(HttpServletResponse response, List<List<Object>> list,String filename,String[] title){
String[] header = title; XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet(filename);
XSSFRow row = sheet.createRow((int) 0);
XSSFCellStyle style = wb.createCellStyle(); XSSFFont font = wb.createFont();
font.setFontHeightInPoints((short) 11);
font.setFontName("宋体");
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
style.setFillForegroundColor(HSSFColor.GREY_80_PERCENT.index);
style.setFont(font); XSSFCell cell = null;
for(int i=0;i<header.length;i++){
cell = row.createCell((short) i);
cell.setCellValue(header[i]);
cell.setCellStyle(style);
} if(list == null){
return;
} for (int i = 0; i < list.size(); i++)
{
row = sheet.createRow((int) i + 1); List<Object> clist = list.get(i);
for(int n=0;n<clist.size();n++) {
Object value = clist.get(n);
if(value instanceof Date){
row.createCell((short)n).setCellValue(fmt.format(value));
}else{
row.createCell((short)n).setCellValue(clist.get(n).toString());
}
}
} try
{
response.setContentType("application/force-download");
response.setHeader("Content-Disposition", "attachment;filename=\"" + java.net.URLEncoder.encode(filename, "UTF-8") + ".xlsx" + "\" ");
wb.write(response.getOutputStream());
response.getOutputStream().close();
}
catch (Exception e)
{
e.printStackTrace();
}
}

参数解释:

response : 响应对象,用于直接返回给浏览器。

list: 内容数据,遍历填充单元格。

filename: 文件名。

title: excel第一行的标题数组。

导出2003版excel文件与上面代码相似,只需使用另外一套类就行,感觉现在基本都是2007版了吧。

解析excel代码:

 protected void readXls(InputStream is) throws IOException, InvalidFormatException {
Workbook hssfWorkbook = WorkbookFactory.create(is); for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) {
Sheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);
if (hssfSheet == null) {
continue;
}
for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {
Row hssfRow = hssfSheet.getRow(rowNum);
if (hssfRow != null) {
/**已经直接取数据行,无需判定
if(hssfRow.getCell(0) == null ){
continue;
}else if(hssfRow.getCell(0).getCellType() == Cell.CELL_TYPE_STRING){
String value = hssfRow.getCell(0).getStringCellValue();
try{
Integer.parseInt(value);
}catch(Exception e){
continue;
} }
*/
Map<String, Object> map = new HashMap<String, Object>();
map.put("jgId", getValue(hssfRow.getCell(1)));
map.put("name", getValue(hssfRow.getCell(3)));
map.put("cardType", getValue(hssfRow.getCell(4)).split("-")[0]);
map.put("cardNo", getValue(hssfRow.getCell(5)));
map.put("sex", getValue(hssfRow.getCell(6)).split("-")[0]);
map.put("birth", getValue(hssfRow.getCell(7))); }
}
}
}

传入的参数是文件流InputStream,根据文件类型自动识别解析,因此.xls和.xlsx两种格式都能解析,示例代码是将解析的数据存入map,这方面可以根据具体业务进行修改。

  操作其实很简单,有什么问题欢迎留言交流。

基于POI的Excel导入导出(JAVA实现)的更多相关文章

  1. SpringBoot集成文件 - 集成POI之Excel导入导出

    Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能.本文主要介绍通过Spr ...

  2. Java之POI的excel导入导出

    一.Apache POI是一种流行的API,它允许程序员使用Java程序创建,修改和显示MS Office文件.这由Apache软件基金会开发使用Java分布式设计或修改Microsoft Offic ...

  3. 如何自动化你的Excel导入导出(Java)?

    GitHub | 中文 | English | 博客 为什么使用AutoExcel? Excel导入导出在软件开发中非常常见,只要你接触过开发,就一定会遇到.相信很多人会跟我一样选择用Apache P ...

  4. 【原创】POI操作Excel导入导出工具类ExcelUtil

    关于本类线程安全性的解释: 多数工具方法不涉及共享变量问题,至于添加合并单元格方法addMergeArea,使用ThreadLocal变量存储合并数据,ThreadLocal内部借用Thread.Th ...

  5. Spring Boot学习笔记----POI(Excel导入导出)

    业务:动态生成模板导出Excel,用户修改完再导入Excel. Spring boot + bootstrap + poi 1.添加Dependence <dependency> < ...

  6. .net core 基于NPOI 的excel导入导出类,支持自定义导出哪些字段,和判断导入是否有失败的记录

    #region 从Excel导入 //用法 //var cellHeader = new Dictionary<string, string>(); //cellHeader.Add(&q ...

  7. 基于NPOI的Excel导入导出类库

    概述 支持多sheet导入导出.导出字段过滤.特性配置导入验证,非空验证,唯一验证,错误标注等 用于基础配置和普通报表的导入导出,对于复杂需求,比如合并列,公式,导出图片等暂不支持 GitHub地址: ...

  8. POI实现Excel导入导出

    我们知道要创建一张excel你得知道excel由什么组成,比如说sheet也就是一个工作表格,例如一行,一个单元格,单元格格式,单元格内容格式…这些都对应着poi里面的一个类. 一个excel表格: ...

  9. apache POI 操作excel<导入导出>

    1.首先导入maven依赖 <!-- POI核心依赖 --> <dependency> <groupId>org.apache.poi</groupId> ...

随机推荐

  1. log4j.xml(信息打印)

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SY ...

  2. Entity Framework技巧系列之五 - Tip 16 – 19

    提示16. 当前如何模拟.NET 4.0的ObjectSet<T> 背景: 当前要成为一名EF的高级用户,你确实需要熟悉EntitySet.例如,你需要理解EntitySet以便使用 At ...

  3. centos精简系统 源码安装客户端git

    CentOS的yum源中git版本比较低,需要最新版本git,只能自己编译安装,现在记录下编译安装的内容,留给自己备忘. 对于精简型的centos系统,会缺少很多依赖包和插件,要源码安装客户端git, ...

  4. MySQL的索引创建、删除

    1_1.添加PRIMARY KEY(主键索引)  mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 1_2.添加UNIQUE ...

  5. MySQL出现Errcode:28错误提示解决办法

    mysql出现Error writing file \'xxx\'( Errcode:28)的原因有很多种,下面我来总结一些常用的关于引起Errcode:28错误原因与解决方法.   问题一,是log ...

  6. ios开发使用lipo命令合并真机库和模拟器库

    在开发ios时,我们经常会遇到编译两套库文件,使用模拟器时链接模拟器库,使用真机时使用真机库,这样操作会对后期的维护带来麻烦,所以Apple提供了一个把多个不同平台的.a库文件合并成一个适用于多平台的 ...

  7. Springmvc默认首页的问题

    之前自己写的springmvc 默认首页都是偷懒方式: web.xml 中定义的默认首页: <welcome-file-list> <welcome-file>index.ht ...

  8. opencv----人脸美白算法,祛斑,祛痘,磨皮等

    现在各种手机camera软件都自带图像美颜处理,但是成熟的算法在网上很难搜到,博主也是自己摸索了自己做出来了,跟美图秀秀的处理效果相比,还不错,感觉很好,所以PO上来,与各位博友分享之. 首先是根据网 ...

  9. [转]intent 传递对象

    ---恢复内容开始--- Activity之间通过Intent传递值,支持基本数据类型和String对象及它们的数组对象byte.byte[].char.char[].boolean.boolean[ ...

  10. Android与路由器连接服务

    界面UI: package my.work.Library; import java.util.Timer; import java.util.TimerTask; import java.util. ...