导出excel文件 java_java实现导出excel文件

dd9f34a1c872545786877e545e01518e.png

实现方法如下:

(视频教程推荐:java课程)

1、首先新建一个SpringBoot项目

2、导入依赖–pom.xml<?xml version="1.0" encoding="UTF-8"?>

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.2.6.RELEASE

com.briup

demo3

0.0.1-SNAPSHOT

war

demo3

Demo project for Spring Boot

1.8

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-tomcat

provided

org.springframework.boot

spring-boot-starter-test

test

org.junit.vintage

junit-vintage-engine

org.apache.poi

poi

3.6

javax.servlet

servlet-api

log4j

log4j

org.springframework.boot

spring-boot-maven-plugin

3、建各种类

新建实体类

记得添加get/set方法public class User {

private String username;

private String email;

private String createTime;

private String LastLoginTime;

private String roleName;

private String enable;

public User() {

super();

}

}

新建接口Serviceimport java.util.List;

public interface UserService {

public List findAllUser();

}

新建实现Service接口的Implimport java.util.List;

public class UserServiceImpl implements UserService {

@Override

public List findAllUser() {

User user = new User();

return null;

}

}

新建ExcelUtil工具类import java.util.List;

import java.util.Map;

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;

public class ExcelUtil {

public static HSSFWorkbook getHSSFWorkbook(String sheetName,String sheetName1,String sheetName2, String []title, String[] content,String[] app){

// 第一步,创建一个HSSFWorkbook,对应一个Excel文件

HSSFWorkbook wb = new HSSFWorkbook();

// 第二步,在workbook中添加一个sheet,对应Excel文件中的sheet

HSSFSheet sheet = wb.createSheet(sheetName);

HSSFSheet sheet1 = wb.createSheet(sheetName1);

HSSFSheet sheet2 = wb.createSheet(sheetName2);

// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制

HSSFRow row = sheet.createRow(0);

HSSFRow row1 = sheet1.createRow(0);

HSSFRow row2 = sheet2.createRow(0);

// 第四步,创建单元格样式,并设置值表头 设置表头居中

HSSFCellStyle style = wb.createCellStyle();

style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式

//声明单元格

HSSFCell cell = null;

//创建标题

for(int i=0;i

//创建一个单元格

cell = row.createCell(i);

//给单元格赋值

cell.setCellValue(title[i]);

//给单元格设置样式

cell.setCellStyle(style);

}

//创建标题

for(int i=0;i

//创建一个单元格

cell = row1.createCell(i);

//给单元格赋值

cell.setCellValue(title[i]);

//给单元格设置样式

cell.setCellStyle(style);

}

//创建内容

if (content != null && content.length > 0){

for(int i=0;i

row = sheet.createRow(i + 1);

for(int j=0;j

//将内容按顺序赋给对应的列对象

row.createCell(j).setCellValue(content[j]);

}

}

}

if (content != null && content.length > 0){

for(int i=0;i

row1 = sheet1.createRow(i + 1);

for(int j=0;j

//将内容按顺序赋给对应的列对象

row1.createCell(j).setCellValue(content[j]);

}

}

}

if (app != null && app.length > 0){

for(int i=0;i

row2 = sheet2.createRow(i + 1);

for(int j=0;j

//将内容按顺序赋给对应的列对象

row2.createCell(j).setCellValue(app[j]);

}

}

}

return wb;

}

}

新建Controller类import java.io.OutputStream;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.List;

import javax.servlet.http.HttpServletResponse;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.springframework.util.StringUtils;

import org.springframework.web.bind.annotation.RequestBody;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;

import org.springframework.web.bind.annotation.RestController;

@RestController

@RequestMapping("/MyTest")

public class HelloController {

@ResponseBody

@RequestMapping("/hello")

public void export(@RequestBody(required = false) User user,String username,HttpServletResponse response) throws Exception {

if (user ==null && !StringUtils.isEmpty(username)){

//GET 请求的参数

user = new User();

user.setUsername(username);

}

UserService userService = new UserServiceImpl();

//获取数据

List list = userService.findAllUser();

//excel标题

String[] title = {"姓名", "邮箱", "创建时间", "最近登录时间","角色","是否可用"};

//excel文件名

String fileName = System.currentTimeMillis() + ".xls";

//sheet名

String sheetName = "用户信息";

String sheetName1 = "hello";

String sheetName2 = "xixi";

//没有数据就传入null吧,Excel工具类有对null判断

String[] content= {"ali","aaa","ddd","aaa","aaa","aaaa"};

String[] app= {"bbbb","bbbb","bbbb","bbbb","bbbb","bbbb",};

if (list != null && list.size() > 0){

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

for (int i = 0; i < list.size(); i++) {

User obj = list.get(i);

content[1] = obj.getUsername();

content[1] = obj.getEmail();

content[2] = obj.getCreateTime() == null ? "" : sdf.format(obj.getCreateTime());

content[3] = obj.getLastLoginTime() == null ? "": sdf.format(obj.getLastLoginTime());

content[4] = obj.getRoleName();

}

}

if (list != null && list.size() > 0){

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

for (int i = 0; i < list.size(); i++) {

User obj = list.get(i);

app[1] = obj.getUsername();

app[1] = obj.getEmail();

app[2] = obj.getCreateTime() == null ? "" : sdf.format(obj.getCreateTime());

app[3] = obj.getLastLoginTime() == null ? "": sdf.format(obj.getLastLoginTime());

app[4] = obj.getRoleName();

}

}

//创建HSSFWorkbook

HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook(sheetName,sheetName1,sheetName2, title, content,app);

// HSSFWorkbook wb1 = ExcelUtil.getHSSFWorkbook(sheetName1, title, content);

//响应到客户端

try {

fileName = new String(fileName.getBytes(), "UTF-8");

response.setContentType("application/vnd.ms-excel;charset=utf-8");

response.setHeader("Content-Disposition", "attachment; filename=" + fileName);

OutputStream os = response.getOutputStream();

wb.write(os);

os.flush();

os.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

设置application.properties

server.port=8081

最重要的一定要注意:Application类一定要在最外侧的包中!!!

4、最后访问

localhost:8081/MyTest/hello

结果:

9f073500f46a6d4975deac798c0b9ec0.png

没有写前端,可以写一个html,设置一个a标签,点击事件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现导出多个Excel文件并打包成压缩包,可以使用Java中的ZipOutputStream类来实现。以下是一个简单的示例代码: ```java try { // 创建ZipOutputStream对象 ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream("result.zip")); // 定义要导出Excel文件列表 List<File> excelFiles = new ArrayList<>(); excelFiles.add(new File("data1.xlsx")); excelFiles.add(new File("data2.xlsx")); // 遍历Excel文件列表,逐个写入到压缩包中 for (File excelFile : excelFiles) { // 创建ZipEntry对象,指定压缩包中的文件名 ZipEntry entry = new ZipEntry(excelFile.getName()); zipOut.putNextEntry(entry); // 读取Excel文件内容,并将其写入到ZipOutputStream中 FileInputStream in = new FileInputStream(excelFile); byte[] buffer = new byte[1024]; int len; while ((len = in.read(buffer)) > 0) { zipOut.write(buffer, 0, len); } // 关闭ZipEntry和输入流 in.close(); zipOut.closeEntry(); } // 关闭ZipOutputStream对象 zipOut.close(); } catch (IOException e) { e.printStackTrace(); } ``` 以上示例代码创建了一个ZipOutputStream对象,然后遍历要导出Excel文件列表,逐个将其写入到压缩包中。最后关闭ZipOutputStream对象即可。需要注意的是,在写入每个Excel文件时,都需要先创建一个ZipEntry对象来指定压缩包中的文件名,并调用ZipOutputStream的putNextEntry方法来开始写入该文件;写入完成后需要调用ZipOutputStream的closeEntry方法来结束该文件的写入。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值