今天做了个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. hdu_1011_Starship Troopers(树形DP)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1011 题意:有N个房间,房间的连通性为树形的,就是说你要占领子结点,必须要先占领 父结点,每个房间有第 ...

  2. Entity Framework技巧系列之七 - Tip 26 – 28

    提示26. 怎样避免使用不完整(Stub)实体进行数据库查询 什么是不完整(Stub)实体? 不完整实体是一个部分填充实体,用于替代真实的对象. 例如: 1 Category c = new Cate ...

  3. HDU2629:Identity Card

    Problem Description Do you own an ID card?You must have a identity card number in your family's Hous ...

  4. flash cs6 更新到Flash player15.0 及Air 更新方法

    1.自行下载Air 15.0 sdk (Flash player 包含在内) 2.  到15.0Air 包 里找player :AIR15.0\frameworks\libs\player 里面有pl ...

  5. Nmap的使用【转载】

    1.NMap工具 主要功能:探测主机是否在线.扫描主机开放端口和嗅探网络服务,用于网络探测和安全扫描. NMap支持很多扫描技术,例如:UDP.TCPconnect().TCPSYN(半开扫描).ft ...

  6. 查看SQL Server 2008的版本及位数

    如何查看SQL Server 2008的版本及位数及SP版本: 登录SQL Server,找到“SQL查询分析器”,输入“Select @@version”,运行,即可看出版本及SP版本. 该方法适用 ...

  7. CDONTS组件

    在ASP中发送Email时往往需要一个COM组件支持,如果你没有第三方的Email组件,你可以使用IIS本身提供CDONTS EMail组件.这个组件使用时需要安装和启动SMTP服务.这个组件的名称为 ...

  8. wpf应用程序 打印标签

    新建一个wpf应用程序,Xaml如下: <Window x:Class="CreateBarCodeDemo.MainWindow" xmlns="http://s ...

  9. HUST - 1599 Multiple

    input 长度不大于3*10e5的数字串 output 不含前导0的能整除64的字串的个数(0算一个,064不算) 一般数组中找能整除一个数的字串都是用取余来做的 用一个a[64]来存下从1-i位累 ...

  10. UITableView的子控件高度不确定处理

    比如,tableView的tableFootView的控件数量是根据网络请求的数据而定的.那么tableView并不能准确的设置其contentSize.处理方法: 在tableFootView的类中 ...