springboot + mybatis + poi實現報表匯出
話不多說,直接上程式碼
資料庫表如下
程式碼結構如下
controller
package com.yuanyuan.smp.controller; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.yuanyuan.smp.entity.User; import com.yuanyuan.smp.service.IUserService; import com.yuanyuan.smp.utils.FileUtil; @RestController public class UserController { @Autowired private IUserService userService; @RequestMapping("/") public String hello() { return "hello"; } @RequestMapping("/exportExcel") public void exportExcel(HttpServletRequest request, HttpServletResponse response) { List<User> userList = userService.selectAll(); // 建立工作簿 HSSFWorkbook workbook = new HSSFWorkbook(); // 建立表 HSSFSheet sheet = workbook.createSheet("使用者資訊"); // 建立行 HSSFRow row = sheet.createRow(0); // 建立單元格樣式 HSSFCellStyle cellStyle = workbook.createCellStyle(); // 表頭 String[] head = {"姓名", "年齡"}; HSSFCell cell; // 設定表頭 for(int iHead=0; iHead<head.length; iHead++) { cell = row.createCell(iHead); cell.setCellValue(head[iHead]); cell.setCellStyle(cellStyle); } // 設定表格內容 for(int iBody=0; iBody<userList.size(); iBody++) { row = sheet.createRow(iBody+1); User u = userList.get(iBody); String[] userArray = new String[2]; userArray[0]=u.getName(); userArray[1]=u.getAge() + ""; for(int iArray=0; iArray<userArray.length; iArray++) { row.createCell(iArray).setCellValue(userArray[iArray]); } } // 生成Excel檔案 FileUtil.createFile(response, workbook); } }
實體類
package com.yuanyuan.smp.entity; import java.io.Serializable; public class User implements Serializable{ /** * */ private static final long serialVersionUID = 2895782870082326368L; private Integer userId; private String name; private Integer age; public Integer getUserId() { return userId; } public void setUserId(Integer userId) { this.userId = userId; } public String getName() { return name; } public void setName(String name) { this.name = name == null ? null : name.trim(); } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }
mapper
package com.yuanyuan.smp.mapper;
import java.util.List;
import com.yuanyuan.smp.entity.User;
public interface UserMapper {
List<User> selectAll();
}
mapper.xml
<?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.yuanyuan.smp.mapper.UserMapper" > <resultMap id="BaseResultMap" type="com.yuanyuan.smp.entity.User" > <id column="user_id" property="userId" jdbcType="INTEGER" /> <result column="name" property="name" jdbcType="VARCHAR" /> <result column="age" property="age" jdbcType="INTEGER" /> </resultMap> <sql id="Base_Column_List" > user_id, name, age </sql> <select id="selectAll" resultMap="BaseResultMap" > select <include refid="Base_Column_List" /> from user </select> </mapper>
Service
package com.yuanyuan.smp.service;
import java.util.List;
import com.yuanyuan.smp.entity.User;
public interface IUserService {
List<User> selectAll();
}
package com.yuanyuan.smp.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.yuanyuan.smp.entity.User;
import com.yuanyuan.smp.mapper.UserMapper;
@Service
public class UserService implements IUserService {
@Autowired
private UserMapper userMapper;
@Override
public List<User> selectAll() {
return userMapper.selectAll();
}
}
utils
package com.yuanyuan.smp.utils;
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 javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
public class FileUtil {
public static void createFile(HttpServletResponse response, HSSFWorkbook workbook) {
// 設定檔名
String fileName ="使用者資訊";
try {
// 捕獲記憶體緩衝區的資料,轉換成位元組陣列
ByteArrayOutputStream out = new ByteArrayOutputStream();
workbook.write(out);
// 獲取記憶體緩衝中的資料
byte[] content = out.toByteArray();
// 將位元組陣列轉化為輸入流
InputStream in = new ByteArrayInputStream(content);
//通過呼叫reset()方法可以重新定位。
response.reset();
// 如果檔名是英文名不需要加編碼格式,如果是中文名需要新增"iso-8859-1"防止亂碼
response.setHeader("Content-Disposition", "attachment; filename=" + new String((fileName + ".xls").getBytes(), "iso-8859-1"));
response.addHeader("Content-Length", "" + content.length);
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
ServletOutputStream outputStream = response.getOutputStream();
BufferedInputStream bis = new BufferedInputStream(in);
BufferedOutputStream bos = new BufferedOutputStream(outputStream);
byte[] buff = new byte[8192];
int bytesRead;
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
bis.close();
bos.close();
outputStream.flush();
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
啟動類
package com.yuanyuan.smp;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan(basePackages= {"com.yuanyuan.smp.mapper"})
public class SmpApplication {
public static void main(String[] args) {
SpringApplication.run(SmpApplication.class, args);
}
}
application.yml
server:
port: 8088
context-path: /
tomcat:
uri-encoding: UTF-8
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
username: root
password: root
mybatis:
mapper-locations: com.yuanyuan.smp.mapper/*.xml
pom.xml
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.yuanyuan.smp</groupId>
<artifactId>springboot-mybaits-poi</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<!-- spring boot jdbc -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- spring boot web -->
<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>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.29</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.32</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.15</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.15</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
相關推薦
springboot + mybatis + poi實現報表匯出
話不多說,直接上程式碼 資料庫表如下 程式碼結構如下 controller package com.yuanyuan.smp.controller; import java.util.List; import javax.servlet.http.Ht
springboot使用poi進行報表匯出小demo
1.新增依賴 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifac
Springboot/SpringMVC+POI 實現Excel匯出功能(點選下載方式實現)
@RequestMapping("/download") public void downstudents(HttpServletRequest request, HttpServletResponse response,@RequestParam String startTime, @Reques
SpringBoot整合POI實現檔案匯出Excel,匯入Excel更新Mysql資料庫資料
上傳功能 轉載自https://blog.csdn.net/xyy1028/article/details/79054749原創寫的非常好,但是每個人都有自己的業務邏輯;所以在研究了一點之後,打上註釋,方便新手理解,同時也方便自己記憶;專案目錄applicat
Springboot+mybatis+poi輸出報表
在Springboot專案中,結合mybatis訪問資料庫,使用poi將需要的資料整理成報表資料輸出。 一、引入pom檔案依賴 <parent> <groupId>org.springframework.boot</group
SpringBoot整合poi實現Excel的 匯入/匯出
新增依賴 <!-- excel匯出工具 --> <dependency> <groupId>org.apache.poi</groupId>
SpringBoot+Mybatis+redis實現二級緩存
gap nal configure argument prope gets ssp tro 1.2 對於查詢比較多的項目可以考慮配置二級緩存,mybatis本身的二級緩存是緩存到本地,但是對於多個節點的項目來說,可能會出現數據不一致的問題,所以采用redis緩存,這樣二級緩
SpringBoot+MyBatis+Redis實現SSO單點登入系統(二)
SpringBoot+MyBatis+Redis實現SSO單點登入系統(二) 三、程式碼 配置檔案配置資料庫,redis等相關的資訊。 # See http://docs.spring.io/spring-boot/docs/current/reference/html
SpringBoot+MyBatis+Redis實現SSO單點登入系統(一)
SpringBoot+MyBatis+Redis實現SSO單點登入系統(一) 一、SSO系統概述 SSO英文全稱Single Sign On,單點登入。SSO是在多個應用系統中,使用者只需要
springboot+mybatis的實現以及 Property ‘sqlSessionFactory’ or ‘sqlSessionTemplate’ are required問題的解決
廢話不多說,直接上步驟 前期準備 建表: CREATE TABLE book(id int primary key auto_increment ,bookId bigint,bookName varchar(200)) 插入資料: insert into book
Springboot+mybatis+MySQL實現簡單的多表查詢
Springboot+mybatis+MySQL實現簡單的多表查詢 直接進入正題 1.首先我們新建一個數據庫,再建兩個表 tbl_employee表建表SQL語句 CREATE TABLE `tbl_employee` ( `id` int(200) NOT NULL AUT
微信小程式+SpringBoot+mybatis+MySQL實現簡單的登入
微信小程式+SpringBoot+mybatis+MySQL實現簡單的登入 當下微信小程式和springboot都是比較火的。今天我們來用springboot和微信小程式來實現簡單的登入。 1.首先來完成微信小程式端,新建一個微信小程式。 如果不會的可以檢視我的上一篇文章開發微信小程式簡
使用 freemark 實現 報表匯出
使用 freemark 實現 報表匯出 使用 freemark 實現 報表匯出 1 準備 excel 模板 2 Controller 寫法 3 相關工具類 3.0
Java使用Apache的poi實現Excel匯出(日常總結)
一.導包org.apache.poi <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version&
springboot+mybatis+druid實現多資料來源配置,支援註解和xml兩種sql書寫方式
https://github.com/cheegoday/springboot-demo-djg 要點: 一、依次建立以下幾個Bean 資料來源:DataSource session工廠:SqlSessionFactory 執行緒安全session:Sql
(六)springboot + mybatis plus實現多表聯查分頁3.X版本
註明 : 上兩篇文章我們講解了springboot+mybatis-plus對於單表的CRUD和條件構造器的使用方法,但是對於我們的實戰專案中多表聯查也是經常會出現的。今天我們就來說下怎麼在springboot+MP模式下實現多表聯查並分頁。 MP推薦使用的是
springboot+mybatis+springmvc實現資料庫增加資料,除錯時service實現類中mapper物件為空
問題:service實現類裡面執行到Mapper.save(Entity)時,捕捉到空指標異常 通過除錯,發現Mapper為空 解決途徑: 在瀏覽多個回答後,在論壇裡面看到有人回答說,controller層的方法中new 了*ServiceImpl()導致,如下圖 解決方法:註釋掉該條
SpringBoot+mybatis+pagehelper實現分頁:resultType="map"
1) 在pom.xml中新增pagehelper相關依賴:pagehelper使用第一步2) application.properties配置檔案:第10行可去掉3)
Java利用POI實現匯入匯出Excel表格示例程式碼
介紹Jakarta POI 是一套用於訪問微軟格式文件的Java API。Jakarta POI有很多元件組成,其中有用於操作Excel格式檔案的HSSF和用於操作Word的HWPF,在各種元件中目前只有用於操作Excel的HSSF相對成熟。官方主頁http://poi.ap
JAVA 使用 POI實現資料匯出到Excel
前言: 人生中第一次釋出部落格,怎麼說還是有點緊張的。希望各位看官多多支援~~~!引入: 就在上個禮拜,專案中有一個需求就是把一些資料匯出到Excel中,並且要求Excel要按照規定的內容和排版顯示匯出來的資料。 當時看到這個需求內心還是有點小壓力的,畢竟剛