怎么将数据库数据编程Excel表格

news/2024/7/21 6:06:13 标签: Excel, 数据库, Java, 数据转换, 网页文件下载

数据库数据在后台生成表格数据,在前端页面下载

xl_echo编辑整理,欢迎转载,转载请声明文章来源。更多IT、编程案例请联系QQ:1280023003

百战不败,依不自称常胜,百败不颓,依能奋力前行。——这才是真正的堪称强大!!!


一般来说生成Excel表的生成格式是比较固定的,基本就是和我们平时在电脑上做Excel表差不多。

主要步骤为:

  • 创建表格
  • 生成表头(将列名生成出来)
  • 在表格中插入数据
  • 编写一个浏览器下载这个表格的方法

一下为源码

public void downloadExcel(List<Object> list) throws IOException {

        if (list == null) {
            return;
        } else if (list.size() == 1) {
            return;
        }

        // 得到结果,生成Excel文件
        HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
        HSSFSheet sheet = hssfWorkbook.createSheet("表格数据");
        // 生成表头
        HSSFRow headRow = sheet.createRow(0);
        headRow.createCell(0).setCellValue("表格列1");
        headRow.createCell(1).setCellValue("表格列2");
        headRow.createCell(2).setCellValue("表格列3");
        headRow.createCell(3).setCellValue("表格列4");
        headRow.createCell(4).setCellValue("表格列5");
        headRow.createCell(5).setCellValue("表格列6");
        headRow.createCell(6).setCellValue("表格列7");

        // 将数据插入表中
        for (Object obj : list) {
            HSSFRow dataRow = sheet.createRow(sheet.getLastRowNum() + 1);
            dataRow.createCell(0).setCellValue("obj对象的对应列名属性");
            dataRow.createCell(1).setCellValue("obj对象的对应列名属性");
            dataRow.createCell(2).setCellValue("obj对象的对应列名属性");
            dataRow.createCell(3).setCellValue("obj对象的对应列名属性");
            dataRow.createCell(4).setCellValue("obj对象的对应列名属性");
            dataRow.createCell(5).setCellValue("obj对象的对应列名属性");
            dataRow.createCell(6).setCellValue("obj对象的对应列名属性");
        }

        // 通过浏览器下载导出
        // 设置表头信息
        ServletActionContext.getResponse().setContentType("application/vnd.ms-excel");
        String filename = "表格数据.xls";
        String agent = ServletActionContext.getRequest().getHeader("user-agent");
        filename = FileUtils.encodeDownloadFilename(filename, agent);
        ServletActionContext.getResponse().setHeader("Content-Disposition", "attachment;filename=" + filename);

        ServletOutputStream outputStream = ServletActionContext.getResponse().getOutputStream();
        hssfWorkbook.write(outputStream);

        // 关闭
        hssfWorkbook.close();
    }


//下载浏览器识别工具类一个
package com.echo.maven.utils;

import java.io.IOException;
import java.net.URLEncoder;

import sun.misc.BASE64Encoder;

public class FileUtils {
        /**
         * 下载文件时,针对不同浏览器,进行附件名的编码
         * 
         * @param filename
         *            下载文件名
         * @param agent
         *            客户端浏览器
         * @return 编码后的下载附件名
         * @throws IOException
         */
        public static String encodeDownloadFilename(String filename, String agent)
                throws IOException {
            if (agent.contains("Firefox")) { // 火狐浏览器
                filename = "=?UTF-8?B?"
                        + new BASE64Encoder().encode(filename.getBytes("utf-8"))
                        + "?=";
                filename = filename.replaceAll("\r\n", "");
            } else { // IE及其他浏览器
                filename = URLEncoder.encode(filename, "utf-8");
                filename = filename.replace("+"," ");
            }
            return filename;
        }
}


http://www.niftyadmin.cn/n/1639452.html

相关文章

BigDecimal解决商业运算中丢失精度的问题

本文装载自&#xff1a;https://blog.csdn.net/sinat_32133675/article/details/78310616 BigDecimal在浮点型数据计算丢失精度的常见案例&#xff1a; [java] view plain copy package com.mmall.test; import org.junit.Test; import java.math.BigDecimal; /** * C…

Doug Lea的Executor线程池

Executor框架是指java5中引入的一系列并发库中与executor相关的一些功能类&#xff0c;其中包括线程池&#xff0c;Executor&#xff0c;Executors&#xff0c;ExecutorService&#xff0c;CompletionService&#xff0c;Future&#xff0c;Callable等。他们的关系为&#xff1…

Java项目管理工具Maven详解

xl_echo编辑整理&#xff0c;欢迎转载&#xff0c;转载请声明文章来源。更多IT、编程案例请联系QQ&#xff1a;1280023003 百战不败&#xff0c;依不自称常胜&#xff0c;百败不颓&#xff0c;依能奋力前行。——这才是真正的堪称强大&#xff01;&#xff01;&#xff01; 本…

Kong源码导读

概览 kong是一个基于nginx和OpenResty模块构建的API网关服务。提供http请求路由&#xff0c;后端服务负载均衡以及通过丰富的插件提供认证鉴权、流量调控、日志监控等功能。该网关目前应用在全球著名的API管理站点mashape上。   nginx是一个采用异步I/O&#xff0c;事件驱动的…

MyBatis基本介绍

xl_echo编辑整理&#xff0c;欢迎转载&#xff0c;转载请声明文章来源。更多IT、编程案例请联系QQ&#xff1a;1280023003 百战不败&#xff0c;依不自称常胜&#xff0c;百败不颓&#xff0c;依能奋力前行。——这才是真正的堪称强大&#xff01;&#xff01;&#xff01; 本…

7 Drools整合Springboot,Mybatisplus实现规则从数据库中读取

​ 上面的例子把Drools和Springboot整合到一起了,但是我们发现规则文件需要写到资源路劲下面,这样不是方便,因为如果涉及到的规则发生了变更,我们就需要发版才能解决问题。本部分,我们通过把规则文件落表来实现规则的灵活使用。 ​ 创建一个模块drools-springboot-db,本…

Spring主从数据库的配置和动态数据源切换原理

在大型应用程序中&#xff0c;配置主从数据库并使用读写分离是常见的设计模式。在Spring应用程序中&#xff0c;要实现读写分离&#xff0c;最好不要对现有代码进行改动&#xff0c;而是在底层透明地支持。 Spring内置了一个AbstractRoutingDataSource&#xff0c;它可以把多个…

8 Drools WorkBench安装(windows、linux环境安装)

​ 接下来我们来介绍Drools WorkBench,WorkBench是KIE组件中的元素,也称为KIE-WB,是Drools-WB与JBPM-WB的结合体。它是一个可视化的规则编辑器。WorkBench其实就是一个war包,安装到tomcat中就可以运行。使用WorkBench可以在浏览器中创建数据对象、创建规则文件、创建测试场…