基于POI的Excel导入导出(JAVA实现)
今天做了个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实现)的更多相关文章
- SpringBoot集成文件 - 集成POI之Excel导入导出
Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能.本文主要介绍通过Spr ...
- Java之POI的excel导入导出
一.Apache POI是一种流行的API,它允许程序员使用Java程序创建,修改和显示MS Office文件.这由Apache软件基金会开发使用Java分布式设计或修改Microsoft Offic ...
- 如何自动化你的Excel导入导出(Java)?
GitHub | 中文 | English | 博客 为什么使用AutoExcel? Excel导入导出在软件开发中非常常见,只要你接触过开发,就一定会遇到.相信很多人会跟我一样选择用Apache P ...
- 【原创】POI操作Excel导入导出工具类ExcelUtil
关于本类线程安全性的解释: 多数工具方法不涉及共享变量问题,至于添加合并单元格方法addMergeArea,使用ThreadLocal变量存储合并数据,ThreadLocal内部借用Thread.Th ...
- Spring Boot学习笔记----POI(Excel导入导出)
业务:动态生成模板导出Excel,用户修改完再导入Excel. Spring boot + bootstrap + poi 1.添加Dependence <dependency> < ...
- .net core 基于NPOI 的excel导入导出类,支持自定义导出哪些字段,和判断导入是否有失败的记录
#region 从Excel导入 //用法 //var cellHeader = new Dictionary<string, string>(); //cellHeader.Add(&q ...
- 基于NPOI的Excel导入导出类库
概述 支持多sheet导入导出.导出字段过滤.特性配置导入验证,非空验证,唯一验证,错误标注等 用于基础配置和普通报表的导入导出,对于复杂需求,比如合并列,公式,导出图片等暂不支持 GitHub地址: ...
- POI实现Excel导入导出
我们知道要创建一张excel你得知道excel由什么组成,比如说sheet也就是一个工作表格,例如一行,一个单元格,单元格格式,单元格内容格式…这些都对应着poi里面的一个类. 一个excel表格: ...
- apache POI 操作excel<导入导出>
1.首先导入maven依赖 <!-- POI核心依赖 --> <dependency> <groupId>org.apache.poi</groupId> ...
随机推荐
- java 集合中将元素倒序排列
方法一:实现Comparable接口排序package collsort.comparable; package com.cvicse.sort.comparable; public class Ca ...
- karma+jasmine自动化测试
1.安装nodejs,进入项目目录 2.安装karma和相关插件 npm install karma --save-dev npm install karma-jasmine karma-chrome ...
- 在CentOS 7下ISCSI和多路径部署文档【转】
部署环境 设备:MD3860i, R630, S4820T(生产网络), N2024(管理网络) 操作系统:Centos 7 默认管理口的地址:A控192.168.129.101, B 控192.16 ...
- Ansible1:简介与基本安装【转】
Ansible是一个综合的强大的管理工具,他可以对多台主机安装操作系统,并为这些主机安装不同的应用程序,也可以通知指挥这些主机完成不同的任务.查看多台主机的各种信息的状态等,ansible都可以通过模 ...
- yum no key
http://serverfault.com/questions/525958/redhat-yum-install-gpg-key-retrieval-failed
- kafuka常用的shell命令
kafka常用shell命令: ------------------------------------ 1.创建topic bin/kafka-topics.sh --create --zookee ...
- springMVC中ajax的运用于注意事项
ajax的运用: 注意事项: dataType:"json"在ajax中可写可不写(ajax能够自动识别返回值类型),写了更加规范,可以在ajax识别错误返回值类型的时候,指定返回 ...
- 字符函数库 cctype
<cctype> (ctype.h) Character handling functions This header declares a set of functions to cla ...
- 使用dom4j解析XML例子
包括三个文件:studentInfo.xml(待解析的xml文件), Dom4jReadExmple.java(解析的主要类), TestDom4jReadExmple.java(测试解析的结果) 代 ...
- Spring Boot 系列教程10-freemarker导出word下载
freemarker FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页.电子邮件.配置文件.源代码等)的通用工具. 它不是面向最终用户的,而是一个 ...