添加两个坐标:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency> <dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>RELEASE</version>
</dependency> <!-- https://mvnrepository.com/artifact/dom4j/dom4j -->
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>

 response.setContentType("application/excel");

        List<User> list = userService.selecetAll();

        String fileName = "user.xls";
// 设置响应头
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ";filename*=utf-8''" + URLEncoder.encode(fileName, "UTF-8"));
// 创建用户表
HSSFWorkbook excel = new HSSFWorkbook();
HSSFSheet sheet = excel.createSheet();
// 声明每0行的索引
int rowNum = 0;
// 创建标题
String[] headers = {"用户名", "年龄", "邮箱"};
// 创建第一行
HSSFRow row = sheet.createRow(rowNum);
// 将标题放入进去
for (int i = 0; i < headers.length; i++) {
// 创建一个单元格
HSSFCell cell = row.createCell(i);
// 将数据转换为字符串
HSSFRichTextString text = new HSSFRichTextString(headers[i]);
// 将数据放入进去
cell.setCellValue(text);
}
/**
* 将结果返回
*/ // 将用户数据放入进去
for (User u : list) {
++rowNum;
HSSFRow row1 = sheet.createRow(rowNum);
row1.createCell(0).setCellValue(u.getUsername());
row1.createCell(1).setCellValue(u.getAge());
row1.createCell(2).setCellValue(u.getEmail());
}
excel.write(response.getOutputStream()); 读excel
@RequestMapping("readfile")
public String readFile() {
try {
FileInputStream fileInputStream = new FileInputStream(new File("D:\\work_place.xlsx"));
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(fileInputStream);
if (xssfWorkbook != null) {
// 获取sheet个数
// 获取第一个Sheet 索引为0
XSSFSheet sheet = xssfWorkbook.getSheetAt(0);
// 获取总共有多少行
List<User> list = new ArrayList<>();
for (int i = 0; i < sheet.getLastRowNum(); i++) {
XSSFRow row = sheet.getRow(i);
if (row != null) {
User user = new User();
for (int k = 0; k < row.getLastCellNum(); k++) {
if (row.getCell(0) != null) {
user.setUsername(row.getCell(0).toString());
} if (row.getCell(1) != null) {
user.setAge(10);
} if (row.getCell(2) != null) {
user.setEmail(row.getCell(2).toString());
}
}
list.add(user);
} else {
System.out.println("null");
} }
for (User user : list) {
System.out.println(user);
}
}
return "test";
} catch (IOException e) {
e.printStackTrace();
}
return "test";
}

  

springboot 读写excel的更多相关文章

  1. MFC vs2012 Office2013 读写excel文件

    近期在忙一个小项目(和同学一起搞的),在这里客户要求不但读写txt,而且可以读写excel文件,这里本以为很简单,结果...废话少说,过程如下: 笔者环境:win7 64+VS2012+Office2 ...

  2. C# 使用 NPOI 库读写 Excel 文件(转载)

    NPOI 是开源的 POI 项目的.NET版,可以用来读写Excel,Word,PPT文件.在处理Excel文件上,NPOI 可以同时兼 容xls 和 xlsx.官网提供了一份Examples,给出了 ...

  3. Python3.4如何读写Excel

    在python3.x(散仙使用的版本是python3.4)里,我们应该如何操作excel. 首先在python3.4里,我们可以使用新的python类库,来支持3.x之后的读写excel 针对 03版 ...

  4. 用Python读写Excel文件(转)

    原文:google.com/ncr 虽然天天跟数据打交道,也频繁地使用Excel进行一些简单的数据处理和展示,但长期以来总是小心地避免用Python直接读写Excel文件.通常我都是把数据保存为以TA ...

  5. 使用NPOI读写Excel、Word

    NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目. 使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 ...

  6. 【原创】.NET读写Excel工具Spire.Xls使用(1)入门介绍

    在.NET平台,操作Excel文件是一个非常常用的需求,目前比较常规的方法有以下几种: 1.Office Com组件的方式:这个方式非常累人,微软的东西总是这么的复杂,使用起来可能非常不便,需要安装E ...

  7. 【原创】.NET读写Excel工具Spire.Xls使用(2)Excel文件的控制

                  本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html .NET读写Excel工具Spire.Xls使用文章 ...

  8. 【原创】.NET读写Excel工具Spire.Xls使用(3)单元格控制

                  本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html .NET读写Excel工具Spire.Xls使用文章 ...

  9. 【原创】.NET读写Excel工具Spire.Xls使用(4)对数据操作与控制

                  本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html .NET读写Excel工具Spire.Xls使用文章 ...

随机推荐

  1. hdu 5971 Wrestling Match

    题目链接: hdu 5971 Wrestling Match 题意:N个选手,M场比赛,已知x个好人,y个坏人,问能否将选手划分成好人和坏人两个阵营,保证每场比赛必有一个好人和一个坏人参加. 题解:d ...

  2. 4.30-5.1cf补题

    //yy:拒绝转载!!! 悄悄告诉你,做题累了,去打两把斗地主就能恢复了喔~~~ //yy:可是我不会斗地主吖("'▽'") ~~~那就听两遍小苹果嘛~~~ 五一假期除了花时间建模 ...

  3. hdu-2841 Visible Trees---容斥定理

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2841 题目大意: N*M的格点上有树,从0,0点可以看到多少棵树. 解题思路: 发现如果A1/B1= ...

  4. Django 按时间来查找数据库中的数据

    问题: 按时间来查找数据表中的数据. 前提: 1. 数据表student中有一个字段类型为DateField或者DateTimeField字段, 字段名是birthday. 2. 数据表中已经有些数据 ...

  5. Django 模型中字段类型的ImageField

    model_pic = models.ImageField(upload_to = 'pic_folder/', default = 'pic_folder/None/no-img.jpg') 参数u ...

  6. AtomicInteger线程安全的计数器

    在多线程环境下计数的时候,++i和i++是不安全的,故而需要加锁机制,也可以使用volatile关键字进行修饰,但是更简单有效的方式是使用Atomic类

  7. 人类主动探索地外文明(METI)活动正在进行中

                  请看下图:            这是位于俄罗斯克里米亚境内的行星际深空通讯雷达(口径70米,2-300GHz,建造于1978年)的外观.借助该雷达的强大发射功率,有关国际 ...

  8. SpringMVC关于请求参数乱码问题

    String names =request.getParameter("name") request主要接收的参数是form提交 form提交有的时候会伴随着乱码,该乱码的格式为I ...

  9. 解决iOS项目根目录下文件乱七八糟的问题

    对于一个刚做项目的新手来说,肯定会碰到一个相当蛋疼的问题,那就是你在项目中建立的文件夹与你在根目录下的文件夹完全对应不起来,说直接点就是你通过group的方式在项目中建立的文件夹在本目录下根本就没有. ...

  10. [转]TestNG的多线程并行

    前言 最近在做项目里的自动化测试工作,使用的是TestNG测试框架,主要涉及的测试类型有接口测试以及基于业务实际场景的场景化测试.由于涉及的场景大多都是大数据的作业开发及执行(如MapReduce.S ...