SpringMVC + poi 导出excel表格

实际项目中使用poi导出excel(spring+springMVC+Mybatis环境下) 准备poi所依赖的jar包.        放到工程的lib文件夹下.本文中项目所使用的jar包为: poi-3.15.jar,poi-ooxml-3.15.jar,poi-ooxml-schemas-3.15.jar jar包下载地址:http://mvnrepository.com/search?q=comment 场景描述: 前台用easyui框架(这里博主用的是e 阅读详情

原文出处http://my.oschina.net/aptx4869/blog/298507


控制器类:

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;

import com.entity.Project;
import com.util.ExcelUtil;

@Controller
public class DownloadAct {
    @RequestMapping(value="download_project.do")
    public String download(HttpServletRequest request,HttpServletResponse response) throws IOException{
        String fileName="excel文件";
        //填充projects数据
        List<Project> projects=createData();
        List<Map<String,Object>> list=createExcelRecord(projects);
        String columnNames[]={"ID","项目名","销售人","负责人","所用技术","备注"};//列名
        String keys[]    =     {"id","name","saler","principal","technology","remarks"};//map中的key
        ByteArrayOutputStream os = new ByteArrayOutputStream();
        try {
            ExcelUtil.createWorkBook(list,keys,columnNames).write(os);
        } catch (IOException e) {
            e.printStackTrace();
        }
        byte[] content = os.toByteArray();
        InputStream is = new ByteArrayInputStream(content);
        // 设置response参数,可以打开下载页面
        response.reset();
        response.setContentType("application/vnd.ms-excel;charset=utf-8");
        response.setHeader("Content-Disposition", "attachment;filename="+ new String((fileName + ".xls").getBytes(), "iso-8859-1"));
        ServletOutputStream out = response.getOutputStream();
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;
        try {
            bis = new BufferedInputStream(is);
            bos = new BufferedOutputStream(out);
            byte[] buff = new byte[2048];
            int bytesRead;
            // Simple read/write loop.
            while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
                bos.write(buff, 0, bytesRead);
            }
        } catch (final IOException e) {
            throw e;
        } finally {
            if (bis != null)
                bis.close();
            if (bos != null)
                bos.close();
        }
        return null;
    }
    private List<Project> createData() {
        // TODO Auto-generated method stub
        //自己实现
        return null;
    }
    private List<Map<String, Object>> createExcelRecord(List<Project> projects) {
        List<Map<String, Object>> listmap = new ArrayList<Map<String, Object>>();
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("sheetName", "sheet1");
        listmap.add(map);
        Project project=null;
        for (int j = 0; j < projects.size(); j++) {
            project=projects.get(j);
            Map<String, Object> mapValue = new HashMap<String, Object>();
            mapValue.put("id", project.getId());
            mapValue.put("name", project.getName());
            mapValue.put("technology", project.getTechnology());
            mapValue.put("remarks", project.getRemarks());
            listmap.add(mapValue);
        }
        return listmap;
    }
}

Excel工具类:

import java.util.List;
import java.util.Map;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
/**
 * 导出Excel文档工具类
 * @author 那位先生
 * @date 2014-8-6
 * */
public class ExcelUtil {

    /**
     * 创建excel文档,
     * @param list 数据
     * @param keys list中map的key数组集合
     * @param columnNames excel的列名
     * */
    public static Workbook createWorkBook(List<Map<String, Object>> list,String []keys,String columnNames[]) {
        // 创建excel工作簿
        Workbook wb = new HSSFWorkbook();
        // 创建第一个sheet(页),并命名
        Sheet sheet = wb.createSheet(list.get(0).get("sheetName").toString());
        // 手动设置列宽。第一个参数表示要为第几列设;,第二个参数表示列的宽度,n为列高的像素数。
        for(int i=0;i<keys.length;i++){
            sheet.setColumnWidth((short) i, (short) (35.7 * 150));
        }

        // 创建第一行
        Row row = sheet.createRow((short) 0);

        // 创建两种单元格格式
        CellStyle cs = wb.createCellStyle();
        CellStyle cs2 = wb.createCellStyle();

        // 创建两种字体
        Font f = wb.createFont();
        Font f2 = wb.createFont();

        // 创建第一种字体样式(用于列名)
        f.setFontHeightInPoints((short) 10);
        f.setColor(IndexedColors.BLACK.getIndex());
        f.setBoldweight(Font.BOLDWEIGHT_BOLD);

        // 创建第二种字体样式(用于值)
        f2.setFontHeightInPoints((short) 10);
        f2.setColor(IndexedColors.BLACK.getIndex());

//        Font f3=wb.createFont();
//        f3.setFontHeightInPoints((short) 10);
//        f3.setColor(IndexedColors.RED.getIndex());

        // 设置第一种单元格的样式(用于列名)
        cs.setFont(f);
        cs.setBorderLeft(CellStyle.BORDER_THIN);
        cs.setBorderRight(CellStyle.BORDER_THIN);
        cs.setBorderTop(CellStyle.BORDER_THIN);
        cs.setBorderBottom(CellStyle.BORDER_THIN);
        cs.setAlignment(CellStyle.ALIGN_CENTER);

        // 设置第二种单元格的样式(用于值)
        cs2.setFont(f2);
        cs2.setBorderLeft(CellStyle.BORDER_THIN);
        cs2.setBorderRight(CellStyle.BORDER_THIN);
        cs2.setBorderTop(CellStyle.BORDER_THIN);
        cs2.setBorderBottom(CellStyle.BORDER_THIN);
        cs2.setAlignment(CellStyle.ALIGN_CENTER);
        //设置列名
        for(int i=0;i<columnNames.length;i++){
            Cell cell = row.createCell(i);
            cell.setCellValue(columnNames[i]);
            cell.setCellStyle(cs);
        }
        //设置每行每列的值
        for (short i = 1; i < list.size(); i++) {
            // Row 行,Cell 方格 , Row 和 Cell 都是从0开始计数的
            // 创建一行,在页sheet上
            Row row1 = sheet.createRow((short) i);
            // 在row行上创建一个方格
            for(short j=0;j<keys.length;j++){
                Cell cell = row1.createCell(j);
                cell.setCellValue(list.get(i).get(keys[j]) == null?" ": list.get(i).get(keys[j]).toString());
                cell.setCellStyle(cs2);
            }
        }
        return wb;
    }

}

在jsp页面中添加

    <input type="button" value="导出数据" onclick="download()"/>

js中添加

    function download(){
        var url="download_customer.do";
        window.open(url);
    }
springmvc+poi把数据导出Excel表 springmvc+pol把数据导出Excel表的步骤:1.在pom.xml中先加poi的依赖包:&lt;!--导出excel需要的包--&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.poi&lt;/groupId&gt; &lt;artifactId&gt;poi-ooxml&lt;/artifactId&gt; &l... 阅读详情

相关推荐

SpringMvc+POI 处理Excel的导入操作

springMVC 整合poi导入数据,在很多项目中都会使用,能大大减少很多工作量

SpringMVC + Apache POI 实现WEB中Excel下载功能

项目中需要将web页面中的报表导出成Excel,在网上搜寻了写资料,实现了相关功能,如图1所示: 项目后台架构采用的是SpringMVC+Spring+Mybatis,通过引入Apache POI实现excel的下载功能。 导出效果如图2所示: 首先页面中点击“导出Excel”按钮就会触发如下js代码: function ...

weixin_34092370的博客 268

java导出到excel的工具类

从java导出到Excel功能,具备非常好的可用性和可扩展性,实用POI写的。附详细实用说明!

SpringMVC 实现Excel导入

public class Project { private Integer id; private String name; private String technology;//所用技术 private String remarks;//备注 //省略setter/getter } 控制器类: im

awaitdeng的专栏 495

Isaac Gym摄像头数据获取全攻略:从CPU到GPU,教你实时显示RGB与深度图

本文详细介绍了在Isaac Gym中获取摄像头数据的两种高效方案:CPU模式与GPU张量模式。通过实战代码示例,展示了从摄像头配置、数据获取到实时可视化RGB与深度图的全流程,帮助开发者优化机器人仿真与计算机视觉应用的性能。特别强调了GPU模式下的零拷贝访问与张量运算优势,适用于需要低延迟处理的场景。

weixin_29056701的博客 388

从2804云台电机到桌面机械臂:一个STM32/GD32玩家的FOC驱动踩坑全记录

本文详细记录了从2804云台电机到桌面机械臂的FOC驱动开发历程,涵盖了硬件选型、驱动方案优化、软件调试等关键环节。特别分享了L6234P驱动芯片的发热问题、AS5600编码器的I2C通信陷阱以及PID调参的实战经验,为DIY爱好者提供了宝贵的参考。

weixin_26897585的博客 482

Springboot/SpringMVC+POI 实现Excel导出功能(点击下载方式实现)

代码功能: 在前端jsp页面上有一个链接或按钮,单击之后进入Controller层的接口,然后弹出弹框下载导出的Excel,最后将这个excel表格下载到客户端指定路径! 工具:IDEA pom.xml添加依赖: <dependency> <groupId>com.alibaba</groupId>...

panpan96的博客 3万+

基于稀疏表示字典学习的图像超分辨率-杨建超论文解析

文章:《Image Super-Resolution via Sparse Representation》 作者:杨建超 信号稀疏的定义: 令字典D的原子个数M,信号维度为N,则有以下三种关系: M = N时,D为完备的; M > N时,D为冗余的; M>>N时, D为过完备的。 图解如下: 借鉴了压缩感知的思想,通过对大量低分辨率图像和高分辨...

ycc18829026593的博客 7637

Java springmvc Excel(poi) 的导入导出(上传下载)

maven <!--excel--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.15</version> &lt...

振兴中华的博客 648

Kettle安装与使用

Pentaho Data Integration作为一个端对端的数据集成平台,可以对多种数据源进行抽取(Extraction)、加载(Loading)、数据落湖(Data Lake Injection)、对数据进行各种清洗(Cleasing)、转换(Transformation)、混合(Blending),并支持多维联机分析处理(OLAP)和数据挖掘(Data mining)。勺子(spoon.bat/spoon.sh):是一个图形化的界面,可以让我们用图形化的方式开发转换和作业。

jnrjian的博客 1万+

NHANES数据库的介绍及使用(一)

一、数据库概况 NHANES(National Health and Nutrition Examination Survey)是一项旨在评估美国成人和儿童健康和营养状况的研究计划,计划始于20世纪60年代初期,是一项针对不同人群或健康主题的调查。 1999年该调查成为一项持续计划,涉及各种健康和营养测量,项目每年调查一个全国代表性的样本,约5000人,这些人群位于全国各县,每年对其中15个县进行访问。 NHANES访谈部分包括人口统计学、社会经济学、饮食和健康相关问题。体检部分包括生理测量、实验室检查等

Christina 5万+

springmvc和poi导出Excel表格

工具类的封装如下:package com.bgs.util;import java.io.BufferedOutputStream;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import ...

qq_34091529的博客 868

10、硬件工程师笔试面试——继电器(2025版本)

在设计电路时,应综合考虑SSR的优势和局限性,确保选择合适的型号,并采取适当的设计措施来优化性能和可靠性。继电器的主要功能是利用较小的电流或电压来控制较大电流或电压的电路,实现信号的放大和隔离。在处理继电器故障时,应综合考虑电源、线圈、触点和负载等因素,及时进行故障诊断和处理,以确保电路系统的稳定性和安全性。由于汽车电子系统的复杂性,继电器的设计和选择必须考虑到系统的特定要求,包括电流容量、电压等级、环境条件(如温度、湿度、振动)以及所需的保护和隔离功能。确定线圈的工作电压或电流,以及吸合电压或电流。

XU157303764的博客 3733

springMVC中使用POI方式导出excel表格

1.添加jar包 &lt;!-- 导出Excel --&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.poi&lt;/groupId&gt; &lt;artifactId&gt;poi&lt;/artifactId&gt; &lt;version&gt;3.9&lt;/version&a

xiangbudao8的博客 513

【AI大模型】核心基石:Transformer架构入门通俗完整解读

文章摘要: Transformer架构是AI大模型(如GPT、Llama等)的核心基石,彻底颠覆了传统RNN/LSTM的逐字计算模式,通过自注意力机制实现全局并行运算和长文本语义理解。本文用通俗语言拆解Transformer的核心模块:位置编码保留语序、多头注意力捕捉上下文关联、掩码机制确保生成逻辑、残差连接稳定训练,并搭配极简PyTorch代码演示Decoder架构的逐字生成过程。Transformer的并行性、可堆叠性和全局注意力优势,使其成为千亿参数大模型的基础。理解Transformer是掌握大模型

unber的博客 44

【一 扣子客户案例合集】【 1.1 抖音电商:通过扣子智能体重塑电商服务新体验】

**摘要:**抖音电商借助扣子(Coze)智能体平台重塑客服体验,通过无代码开发、多模态交互和跨平台发布等功能,解决了传统客服高峰期压力大、成本高及响应机械等痛点。智能体采用直接面客与人工监管结合模式,实现高效精准服务,并通过解构流程、模块化设计优化系统架构。其技术优势包括零配置学习、意图识别、情绪感知等,实际应用中显著提升客服效率300%以上,改善用户体验。未来将进一步拓展至商品推荐、直播互动等场景,推动电商服务智能化升级。

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 1571

在 SpringMVC 使用 POI 以 Excel 表格形式 导出导入 MySQl 数据

一、前言最近涉及的项目如学生宿舍管理系统、题库、图片文字读取等,数据的导入导出,基本都是要用到 客户 熟悉的 Excel 表下面来个 Excel导入导出 简单的使用记录,使用的基础知识:① Excel 表格数据的处理,使用了 POl ② Java 后台,依旧是笔者喜欢的简洁有力的 SpringBoot 二、代码与结构1、代码结构代码修改之前文 使用 SpringBoot 写 Restful风格 增

IT小村 4317

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【导出EXCEL表格】SpringMVC中使用POI导出EXCEL表格2017年,可以直接复制粘贴使用

对代码有两点 说明: 第一点: js发出请求的时候,多人测试不能用ajax发送,是个坑,正确的方式如下,至于原因,自己研究,我也不清楚,下面文章中有带参数的方式 var url = getRootPath() + "/event/exportExcel.do"; location.href = url; //window.open(url); 一般上面两种格式才能正确发送 第二...

capricornce的博客 1340

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

java表格标题栏_java使用poi自定义excel标题头并导出(springmvc+poi)

1 controller 层23 /**4 * excel自定义导出5 *@paramhAqscTieupsummary6 *@paramrequest7 *@paramresponse8 *@paramdataGrid9 *@parammodelMap10 *@return11 */12 @SuppressWarnings("deprecation")13 @R...

weixin_34697150的博客 617

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

springMVC生成excel文件并导出(详细介绍)

在开发过程中,需要将数据库中的数据以excel表格的方式导出。 首先说明。我这里用的是Apache的POI项目,它是目前比较成熟的HSSF接口,用来处理Excel对象。其实POI不仅仅只能处理excel,它还可以处理word、PowerPoint、Visio、甚至Outlook。 一.首先介绍利用POI如何生成excel。 首先在生成Excel前,我们需要理解一下Excel文件的组织形式。在POI...

Smile yourlife 4557

导入导出为excel

一·导入excel:类似于文件上传 二·导出excel 基于spring mvc 1.简单的html来表示excel(java,php都可以使用) @RequestMapping(value=" ",method=RequestMethod.GET) @ResponseBody public String index2(HttpServletResponse response) thro

大鸡腿的博客 251

SSM使用POI实现数据批量导出到Excel

上一篇写了关于SSM使用POI解析Excel数据并实现批量导入到数据库 ,这里记录一下怎么将查询出来的数据导出到Excel。 需要引入的包,在上一篇博客中有介绍,这里直接贴代码。 本来想写在工具类里的,结果涉及到数据的读取和添加感觉不如直接写在Controller里方便。 Controller类代码 这里使用的导出格式是.xls,也就是office2003+支持的,.xlsl是2007+版本支持的...

种一棵树最好的时间是十年前,其次是现在。 1610

关于POI的导出细节之处说明

spingMvc + poi 实现Excel表格导出最大的一个问题就是:在导出的时候,不能用ajax去请求路径,这样造成的结果就是只有后台的输出,但是浏览器上不会显示弹窗下载Excel表格。...

qq_35354260的博客 182

使用POI导出Excel表格

使用Spring、SpringMVC、Mybatis主流框架集合的demo导出Excel表格: 1、首先,理解一下一个Excel的文件的组织形式,一个Excel文件对应于一个workbook(HSSFWorkbook),一个workbook可以有多个sheet(HSSFSheet)组成,一个sheet是由多个row(HSSFRow)组成,一个row是由多个cell(HSSFCell)组成。 m

AbbyDream的博客 1039

SSM中利用POI导出数据库到excel表格

jsp: 导出数据js: function export_data(){ window.location.href="${ctx}/swipeRecord/reprotRecord"; } controller: /** * 导出数据 * * @param response * @return * @throws IOException */ @R

nvxiaq的博客 2515

java导出excel并下载详细介绍(转载)

先转载个,以后不记得了好找。 这个挺乱的,不过基本的都有。少了一个表头合并单元格,先补充在这。 firstExrow 是第一行表头,headers是第二行标题所有列的数组,firstHeaders是第一行标题的所有列的数组.. excell1是单元格设置,excellStyle单元格样式设置。 值得注意的是。第一行表头单元格合并后,这单元格的设值,还是以合并前的来设置的。 比如,firs...

a1441114的博客 3137
上一篇: Jquery 清空表单,注意是清空不是重置,注意是清空不是重置,注意是清空不是重置,重要的事情说三遍
下一篇: 百度上传控件webUPload 的使用
TOP_Y
博客等级 码龄12年 7粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值