POI导入导出的简单实现

POI框架学习-导入导出案例+word转为PDF实现导出 目录 一 POI简介 二 行数限制 三 案例(导入和导出) 3.1 导入依赖 3.2 导入案例 3.3 导出案例(返回文件流方式) 3.4 导出案例(返回URL方式) 3.5 加载模板导出 一 POI简介 Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。是目前较流行的导入导出excel框架。 官方网站:Apache... 阅读详情

数据的导入导出

POI简介

Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。

Apache POI是用Java编写的免费开源的跨平台的JavaAPI,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。POI为"Poor Obfuscation Implementation"的首字母缩写,以为"可怜的模糊实现"。

用它可以使用Java读取和创建,修改MS Excel文件,而且还可以使用Java读取和创建MS Word和MSPowerPoint文件,Apache POI提供Java操作Excel解决方案(适用于Excel97-2008)

结构:

HSSF - 提供读写Microsoft Excel格式档案的功能。

XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。

HWPF - 提供读写Microsoft Word格式档案的功能。

HSLF - 提供读写Microsoft PowerPoint格式档案的功能。

HDGF - 提供读写Microsoft Visio格式档案的功能。

POI入门小程序:

首先搭建一个工程,这里我就用Springboot快速搭建,之后引入我们的POI坐标,我们要使用POI当然要先引入它的坐标。然后创建一个class,来写我们的小程序。

POM坐标:

<!-- 引入poi不会自动加入另外需要的包
        引入poi-ooxml就会自动引入操作xlsx文件所用到的其他包 -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.15</version>
        </dependency>

入门代码:

package com.example.demo.testpoi;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class PoiDemo {
    public static void main(String[] args) {
        //创建了一个工作簿
        HSSFWorkbook wk = new HSSFWorkbook();
        //创建了一个工作表
        HSSFSheet sheet = wk.createSheet();
        //创建第一行,一定要先创建行后在创建单元格,不需要创建列
        //下标从0开始,为第一行
        HSSFRow row = sheet.createRow(0);
        //创建单元格,列的索引也是从0开始
        HSSFCell cell = row.createCell(0);
        //给单元格赋值
        cell.setCellValue("测试");

        //保存测试的这个excel,用一个文件输出流
        try {
            FileOutputStream fos = new FileOutputStream("f://poitest.xls");
            wk.write(fos);
            fos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

最后展示一下效果:

几个简单的关于POI在入门程序中用到的API已经在注释中阐明。

如果要设置样式呢?比如列宽:

//设置列宽
        sheet.setColumnWidth(0,5000);

第一个代表哪个单元格,第二个参数为宽度,效果为这样:

width:这个参数的大小跟字体有关,每个字符大小乘以256即为列的宽度

POI连接数据库导出excel文件

首先搭建一套springboot+mybatis查询的项目。

POM文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.0</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- 引入poi不会自动加入另外需要的包
        引入poi-ooxml就会自动引入操作xlsx文件所用到的其他包 -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.15</version>
        </dependency>
        <!--mysql连接依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.49</version>
        </dependency>
        <!--mybatis启动依赖-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.3</version>
        </dependency>
        <!--数据库连接池依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

在这个pom文件中我们引入了springboot的启动依赖,mybatis的启动依赖,以及我们要用到的poi的面向对象操作的依赖,lombok和druid等的依赖不细说。

yml配置:

server:
  port: 8091

mybatis:
  mapper-locations: classpath:dao/*.xml
spring:
  datasource:
    driverClassName: com.mysql.jdbc.Driver
    username: root
    password: root
    url: jdbc:mysql://localhost:3306/shiro?characterEncoding=UTF-8

先写一个接口用来查询数据:

dao:

@Mapper
public interface ExportService {

    /**
     * 查询所有数据
     * @return
     */
    List<ExcelEntity> selectOne();
    
}

 service

@Service
public interface ExportService {

    /**
     * 查询所有数据
     * @return
     */
    List<ExcelEntity> selectOne();

    
}

serviceimpl

@Service
public class ExportServiceImpl implements ExportService {

    @Autowired
    private IexportDao iexportDao;

    @Override
    public List<ExcelEntity> selectOne() {
        List<ExcelEntity> excelEntities = iexportDao.selectOne();
        return excelEntities;
    }

   
}

 controller

@RestController
@RequestMapping("/export")
public class ExportController {
    @Autowired
    private ExportService exportService;

    /**
     * 查询数据
     * @return
     */
    @GetMapping("/select")
    public List<ExcelEntity> select(){
        List<ExcelEntity> excelEntities = exportService.selectOne();
        return excelEntities;
    }

}

mapper文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.testpoi.export.dao.IexportDao">
    <select id="selectOne" resultType="com.example.demo.testpoi.export.pojo.ExcelEntity">
        select * from sheet2
    </select>
</mapper>

 

postman测试:

一个查询接口就写完了。

POI导出

下面编写POI导出的接口:

首先dao层:

@Mapper
public interface IexportDao {

    /**
     * 查询所有数据
     * @return
     */
    List<ExcelEntity> selectOne();

    /**
     * 导出数据
     * @param os
     */
    void export(OutputStream os);
}

在接口中传入一个文件输出流的对象

service:

public interface ExportService {

    /**
     * 查询所有数据
     * @return
     */
    List<ExcelEntity> selectOne();

    /**
     * 导出数据
     * @param os
     */
    void export(OutputStream os);
}

serviceimpl:

@Service
public class ExportServiceImpl implements ExportService {

    @Autowired
    private IexportDao iexportDao;

    @Override
    public List<ExcelEntity> selectOne() {
        List<ExcelEntity> excelEntities = iexportDao.selectOne();
        return excelEntities;
    }

    /**
     * 导出数据
     * @param os
     */
    @Override
    public void export(OutputStream os) {
        //获取要导出的数据列表
        List<ExcelEntity> excelEntities = iexportDao.selectOne();
        //创建了一个工作簿
        HSSFWorkbook wk = new HSSFWorkbook();
        //创建了一个工作表
        HSSFSheet sheet = wk.createSheet("excel1");
        //创建第一行,一定要先创建行后在创建单元格,不需要创建列
        //下标从0开始,为第一行,写标题
        HSSFRow row = sheet.createRow(0);
        //将表头放入一个数组
        String[] header = {"设备名称","横坐标","纵坐标"};
        //先定义一个cell;
        HSSFCell cell=null;
        //遍历数组
        for (int i = 0; i <header.length ; i++) {
            //在遍历数组的同时创建单元格
            cell=row.createCell(i);
            //在遍历中给创建好的单元格赋值
            cell.setCellValue(header[i]);
        }
        //导出的内容
        /**因为表头为0,所以表中的数据从下标1开始*/
        int rowCount=1;
        for (ExcelEntity excelEntity : excelEntities) {
            row=sheet.createRow(rowCount);
            //设备名称
            row.createCell(0).setCellValue(excelEntity.getSbmc());
            //横坐标
            row.createCell(1).setCellValue(excelEntity.getX());
            //纵坐标
            row.createCell(2).setCellValue(excelEntity.getY());
            //添加完数据之后自增一行
            rowCount++;
        }

        try {
            wk.write(os);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                wk.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

具体的代码注释已经标明在代码中

下面是导出的controller:

@RestController
@RequestMapping("/export")
public class ExportController {
    @Autowired
    private ExportService exportService;

    /**
     * 查询数据
     * @return
     */
    @GetMapping("/select")
    public List<ExcelEntity> select(){
        List<ExcelEntity> excelEntities = exportService.selectOne();
        return excelEntities;
    }

    /**
     * 导出数据
     */
    @GetMapping("/dc")
    public void export(HttpServletResponse response,HttpServletRequest request){
        String fileName = "设备表";
        try {
            //响应对象
            ServletOutputStream outputStream = response.getOutputStream();
            //设置输出流的格式,实现下载,指定为excel
           setResponseHeader(response,fileName,request);
            exportService.export(outputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 公共方法
     * @param response
     * @param fileName
     * @param request
     */
    public void setResponseHeader(HttpServletResponse response, String fileName, HttpServletRequest request) {
        try {
            try {
                String userAgent=request.getHeader("user-agent");
                if (userAgent!=null && userAgent.indexOf("Firefox")>=0 || userAgent.indexOf("Chrome")>=0){
                    fileName = new String(fileName.getBytes(), "ISO8859-1")+".xls";
                }else{
                    fileName = URLEncoder.encode(fileName, "UTF-8")+".xls";
                }
            } catch (UnsupportedEncodingException var4) {
                var4.printStackTrace();
            }
            response.setContentType("application/octet-stream;charset=utf-8");
            response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
            response.addHeader("Pargam", "no-cache");
            response.addHeader("Cache-Control", "no-cache");
        } catch (Exception var5) {
            var5.printStackTrace();
        }
    }
}

导出效果:

 

 导出excel就完成了

POI导入

导入需求是需要我们上传一份excel文件,上传之后将数据库中没有的内容进行新增操作,已经有的数据则根据数据库要改变的表中的一个字段进行判断,如果这个字段中的内容已经有了,上传的excel文件也有了,则证明是重复的一条数据,就进行更新操作,如果表中没有就进行新增操作。

首先我们已经有了一个新增的接口,再来编写一个更新的接口:

dao层:


    /**
     * 更新数据
     * @param sbmc
     */
    void update(String sbmc,String x,String y);

 

 

 

 

 

 

 

mapper文件: 

<!--根据设备名称更新sql-->
    <update id="update" parameterType="String">
        update sheet0 set sbmc='${sbmc}',x='${x}',y='${y}' where sbmc='${sbmc}'
    </update>

 因为目前我们暂时不需要在控制层用到这个更新的方法,所以暂时不写service层的更新方法,那么接下来就是我们导入的主角方法登场了:

service层:

 /**
     * 导入数据
     * @param ip
     */
    void doImport(InputStream ip) throws IOException;

service实现类:

/**
     * 导入数据
     * @param ip
     */
    @Override
    public void doImport(InputStream ip) throws IOException{
        HSSFWorkbook wk=null;
        try {
            wk = new HSSFWorkbook(ip);
            //拿到excel文档的第一个sheet
            HSSFSheet sheet = wk.getSheetAt(0);
            //读取数据
            //最后一行的行号
            int lastRowNum = sheet.getLastRowNum();
            ExcelEntity excelEntity = null;
            //使用最后一行作为for循环的最后一层
            for (int i=1;i<=lastRowNum;i++){
                excelEntity = new ExcelEntity();
                //设备名称列
                excelEntity.setSbmc(sheet.getRow(i).getCell(0).getStringCellValue());
                //判断是否已经存在,通过设备名称来查询
                List<ExcelEntity> excelEntities = iexportDao.selectBySbmc(excelEntity.getSbmc());
                //如果这个集合有记录
                if (excelEntities.size()>0){
                    //集合大小大于一说明根据这个名称查出了数据,将xy更新
                    excelEntity = excelEntities.get(0);
                }
                //设置x列
                excelEntity.setX(sheet.getRow(i).getCell(1).getStringCellValue());
                //设置y列
                excelEntity.setY(sheet.getRow(i).getCell(2).getStringCellValue());
                iexportDao.update(excelEntity.getSbmc(),excelEntity.getX(),excelEntity.getY());
                //如果这个集合是0就新增
                if (excelEntities.size()==0){
                    //新增
                    iexportDao.addExcelEntity(excelEntity);
                }
            }
        } finally {
            if (null != wk){
                try {
                    wk.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

controller层:

    @PostMapping("/upload")
    public String doImport(MultipartFile file) {
        try {
            exportService.doImport(file.getInputStream());
            return "上传成功";
        } catch (IOException e) {
            e.printStackTrace();
            return "上传失败";
        }
    }

导入的代码就完成了。

Springboot + Mybatis Plus+poi 实现简单的导入导出 简单的导入导出操作 阅读详情

相关推荐

SpringBoot集成的Excel的导入导出,真的比POI好用

文章目录 前言 一、引入 二、导入导出实现 1.基本导入导出 2.复杂的导入导出 总结 前言 之前写过一篇文档poi实现Excel文件解析导入_flowery_的博客-优快云博客用poi实现excel文件的导入导出,代码很多,最近在公众号看到了一篇文章,(公众号:macrozheng,感谢这位老哥)就是这篇: 参考这篇文章的讲解,在这里做一下简单的记录。 一、引入easypoi 代码中同时用了mybatis-plus <!--SpringB...

flowery_的博客 684

利用poi-ooxml实现 Excel表格导入数据库 与 从数据库导出Excel表格

return uid;本文一直围绕的是.xlsx后缀的表格展开的,对于.xls后缀的表格文件我们只需将创建表格实例化对象的 XSSFWorkbook 改为 HSSFWorkbook即可。t=N7T8Mybatis批量插入的四种方式https://blog.youkuaiyun.com/m0_56287495/article/details/131194750。

werewolfwerewolf的博客 6767

Java POI利用反射导入导出Excel、Jxls实现Excel模板导出

初衷:项目中一直没有一个好用的Excel导入导出功能。所以简单实现了导入导出功能分享大家一起讨论和学习 关于本项目说明 导入:基于poi导入做了一层封装、支持注解方式标识属性对应Excel列、并支持简单规则校验、提供校验规则自定义 两种导出:一种基于poi的导出,一种基于jxls模板导出。jxls模板导出可参考:jxls说明 别的就不多BB了,直接上代码。源码包可直接下载使用:点我取源码...

make_a_difference 1635

POI-OOXML入门

前面学习了word操作用到的POI-TL: POI-TL入门 既然学了java对word的操作,那么excel也不能落下。

jc_hook的博客 1万+

使用Spring Boot、MyBatis Plus和POI实现简单的数据导入导出

通过使用Spring Boot、MyBatis Plus和POI库,我们可以轻松实现简单的数据导入和导出功能。在导入数据时,我们使用POI库来读取Excel文件,并将数据存储到数据库中。在导出数据时,我们使用POI库创建Excel工作簿,并将数据写入工作簿,然后将其作为文件下载响应返回给客户端。这种组合可以帮助我们处理常见的数据导入导出需求,使我们的应用程序更加灵活和实用。希望本文对你有所帮助,如果有任何问题,请随时提问!

NknkCode的博客 224

从厘米级到公里级:北斗网格10级精度在ArcPro中的完整应用指南

本文提供了北斗网格十级精度体系在ArcGIS Pro中的完整应用指南。详细解析了从660公里到1.5厘米的十级网格尺度及其编码逻辑,并重点演示了如何在ArcPro中生成网格、计算编码,以及根据项目需求(如滑坡监测)选择合适精度层级的实战策略。指南旨在帮助GIS专业人士利用这套统一的网格框架,高效管理多尺度空间数据并优化分析工作流。

Black的专栏 471

JAVA导入/出EXCEL表格 POI

POI简介: 目前最新版本是Apache POI 4.1.0(Apache POI团队于2019年4月9日宣布发布),个人觉得旧版本中的3.6版比较稳定。 自版本POI 4.0.1起,POI需要Java 8或更高版本。 POI 3.11及更高版本3.x版本需要JDK 1.6或更高版本。 POI 3.5到3.10需要JDK 1.5或更高版本。3.5之前的版本需要JDK 1.4+。 Apac...

Welcome to loveuui's blog 6743

倍福TwinCAT3 OPC UA配置全流程:从安装到无密码访问(附常见问题解决)

本文提供了倍福TwinCAT3 OPC UA配置的完整实战指南,重点讲解如何实现无密码游客访问。从软件安装、授权配置、服务器初始化到深度排错,详细解析了配置流程中的关键步骤与常见陷阱,帮助工程师高效打通PLC与上位系统的数据通讯通道。

vulkan6gpu的博客 471

实现万行级excel导出---poi--ooxm的应用和采坑

xl_echo编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075)交流学习。 百战不败,依不自称常胜,百败不颓,依能奋力前行。——这才是真正的堪称强大!! 阅读建议:如果系统没有做过相关导入导出,又需要这个量级的可以直接阅读底部的poi-ooxm的应用 excel使用poi直接导出最大值是多少?估计很多人不会关注这个问题,因为很少有业务要求excel直...

xlecho的博客 1703

Ubuntu22.04下3分钟搞定GitHub加速:SwitchHosts+小鱼工具保姆级配置指南

本文提供Ubuntu22.04下快速解决GitHub下载超时问题的保姆级教程,通过SwitchHosts图形化工具和小鱼一键换源工具实现高效加速。详细步骤包括环境准备、工具安装配置及验证方法,帮助开发者轻松优化GitHub访问速度,提升工作效率。

weixin_29258297的博客 564

erdas监督分类(二)

去云 用一张没有云的影像替代有云影像 构建aoi图层 将云和云影编码合并 重编码工作 在监督分类做的差不多以后(纠正无误,无明显错误),就要对监督分类图像进行重编码和颜色调整。 在中选中Recode,对原来分类的地物类别进行重编码,(为彻底修改,记得备份)选中一列,在New Value输入新的编码,依次编码后点击应用apply,即可实现。 这时的图像如果是全黑的或者只有一两类的颜色也没有关系,新的编码覆盖掉了原来的编码,但是颜色并没有改变才会这样。可以点击图像,右击...

weixin_58968530的博客 958

POI简单实例实现Excel导入导出

POI实例 创建一张excel首先要知道excel由什么组成,比如sheet页就是一个工作表格,例如一行,一个单元格,单元格格式,单元格内容格式…这些都对应着poi里面的一个类。 Excel表格对应的POI生成: 创建Excel: HSSFWorkbook wb = new HSSFWorkbook(); 生成sheet页 HSSFSheet sheet = wb.createSheet(“PO...

weixin_39789340的博客 415

C#客户端对接工厂MES的方法

本文介绍了使用C#实现WebApi客户端与工厂MES系统交互的方法。主要包括四个步骤:1)配置工控机IP地址;2)获取服务器URL;3)创建HttpHelper帮助类实现单例模式HttpClient,提供异步POST请求方法;4)通过实例化帮助类实现设备状态数据的JSON格式发送与接收。该方案采用异步通信方式,支持超时处理,能够满足大多数MES系统交互需求,帮助工程师快速完成设备与MES系统的数据对接。文中给出了核心代码片段和完整的数据交互流程示例。

weixin_39832501的博客 264

【超级简单】SpringBoot+poi实现excel导入导出

一、pom引入 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>RELEASE</version> </dependency> <dependency>

不知道起什么名字 1309

YOLOv11 知识蒸馏完整实战:Teacher–Student 训练策略与性能飞跃

在self.alpha = alpha # 蒸馏损失权重self.temperature = temperature # 温度系数,控制分布平滑度# 输出分布蒸馏(KL散度损失)# 中间特征蒸馏(MSE损失,对齐中间层特征)# 总蒸馏损失知识蒸馏是YOLOv11在“小模型高性能部署”场景的“破局之法”——它让小模型能“站在大模型的肩膀上”,兼具速度与精度。从损失函数定义到多阶段训练,再到实战落地,本教程已为你铺就了一条清晰的路径。

m0_64661770的博客 141

修改yolov8使支持单通道图像输入

默认支持BGR三通道图像输入,但是在很多工业场景下,存在很多灰度图像的场景,因此对yolov8代码做一些修改以支持单通道图像输入,满足项目实际需求。训练时,只需要在 data 的 yaml 文件中,添加 ch=1 即可。

mingo_敏 5779

使用ssm和poi实现excel的导入导出(简单详细,附源码,适合入门的小白)

最近在学习中遇到了excel的导入和导出操作,上网查了很长时间,没有一个特别适合小白的项目,因此自己做了一个简单的可以实现导入导出功能的项目,自己做了好长时间,特此记录一下,废话不多说,看代码。 1工程目录结构 2.在maven项目中导入相关的jar包依赖 <dependency> <groupId>commons-fileupload</groupId&gt...

爱哭的毛毛虫的博客 5388

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Java原生POI实现的Excel导入导出(简单易懂)

Java用原生poi实现excel导入导出

cl617287的博客 4312

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Java-Maven-POI 简单导入导出Excel通用工具,默认使用基于poi实现

个人项目GitHub地址:https://github.com/83945105/holygrailMaven坐标: 目前最新版0.0.5&lt;groupId&gt;com.github.83945105&lt;/groupId&gt; &lt;artifactId&gt;holygrail&lt;/artifactId&gt;欢迎到官网搜索最新版:地址一:点击打开链接地址二:点击打开链接导入导...

记事本 8261

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

一个基于POI的通用excel导入导出工具类的简单实现及使用方法

前言: 最近PM来了一个需求,简单来说就是在录入数据时一条一条插入到系统显得非常麻烦,让我实现一个直接通过excel导入的方法一次性录入所有数据。网上关于excel导入导出的例子很多,但大多相互借鉴。经过思考,认为一百个客户在录入excel的时候,就会有一百个格式版本,所以在实现这个功能之前,所以要统一excel的格式。于是提供了一个通用excel模版的下载功能。当所有客户用模版录入好数据再上传...

weixin_30702413的博客 296

SpringBoot实现Excel导入导出,好用到爆,POI可以扔掉了

关于分布式,限流+缓存+缓存,这三大技术(包含:ZooKeeper+Nginx+MongoDB+memcached+Redis+ActiveMQ+Kafka+RabbitMQ)等等。这些相关的面试也好,还有手写以及学习的笔记PDF,都是啃透分布式技术必不可少的宝藏。以上的每一个专题每一个小分类都有相关的介绍,并且小编也已经将其整理成PDF啦南[外链图片转存中…(img-HULdGbPT-1711155740867)]

2401_83621004的博客 1023

POI实现Excel导入导出

利用idea创建java web的maven项目,在pom中添加对poi的jar的依赖。 1 &lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://maven.apac...

JingHaiRoad Coder 294

使用POI和EasyExcel实现数据的导入导出功能

文章目录前言一、03版Excel和07版Excel的区别二、方式一:POI1.导出2.导入3.Excel中的公式三、方式二:easyExcel1.导出2.导入 前言 功能:将数据库中的数据导出到Excel,将Excel中的数据导入导数据库。 提示:原始POI的方式比较繁琐,不想看的可以跳过,直接看方式二,使用阿里巴巴帮我们封装好POI的easyExcel 一、03版Excel和07版Excel的区别 具体两者有哪些区别,请参考https://wenku.baidu.com/view/6c592a97f52

qq_42805101的博客 569
上一篇: 导出easyExcel的简单使用
下一篇: SQL(结构化查询语言)
JavaJieRui
博客等级 码龄7年 10粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值