需要引入依赖:

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.0.0</version>
</dependency> <!-- 如果要使用 xlsx 和 流,需要引入下面这个包 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.0.0</version>
</dependency>

数据导入:

 @PostMapping("/imp")
public String imp(@RequestPart("filePath") MultipartFile filePath) { //创建一个excel文件
HSSFWorkbook workbook = null;
try { workbook = new HSSFWorkbook(filePath.getInputStream()); //获取文件
Sheet sheet = workbook.getSheetAt(0); //获取第一个工作表 //循环工作表的数据
//getLastRowNum() 获取行
for (int i = 0; i < sheet.getLastRowNum(); i++) {
Row row = sheet.getRow(i + 1); //下表是从0开始的所以 把行数设置为第二行从第二行开始读
Cell cell = row.getCell(0); //获取第一个单元格,以此类推
Cell cel2 = row.getCell(1);
Cell cel3 = row.getCell(2);
Cell cel4 = row.getCell(3);
Cell cel5 = row.getCell(4); //获取值
int id = (int) cell.getNumericCellValue();
String name = cel2.toString();
String sex = cel3.toString();
String education = cel4.toString();
int monthly = (int) cel5.getNumericCellValue(); //把值放到对象
Staff staff = new Staff(id, name, sex, education, monthly); //调用mapper进行添加
int count = staffMapper.insert(staff);
if (count > 0) {
System.out.println("上传成功");
}
} } catch (IOException e) {
e.printStackTrace();
}
return "redirect:/emp";
}

数据导出到本地:

  //把数据导出到Excel中
@GetMapping("/exc") public String derive(Model model, HttpSession session) { // 第一步,创建一个webbook,对应一个Excel文件
HSSFWorkbook wb = new HSSFWorkbook(); // 第二步,在webbook中添加一页,对应Excel文件中的sheet
HSSFSheet sheet = wb.createSheet("员工表一"); // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
HSSFRow row = sheet.createRow((int) 0); //0代表第一行 // 第四步,创建单元格,并设置值表头 设置表头居中
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HorizontalAlignment.CENTER); HSSFCell cell = row.createCell((short) 0);
cell.setCellValue("员工编号");
cell.setCellStyle(style); cell = row.createCell((short) 1);
cell.setCellValue("姓名");
cell.setCellStyle(style); cell = row.createCell((short) 2);
cell.setCellValue("性别");
cell.setCellStyle(style); cell = row.createCell((short) 3);
cell.setCellValue("学历");
cell.setCellStyle(style); cell = row.createCell((short) 4);
cell.setCellValue("月薪");
cell.setCellStyle(style); // 第五步,写入实体数据 实际应用中这些数据从数据库得到,
List<Staff> list = staffMapper.selectAll();
for (int i = 0; i < list.size(); i++) {
row = sheet.createRow((int) i + 1);
// 第四步,创建单元格,并设置值
row.createCell((short) 0).setCellValue(list.get(i).getId());
row.createCell((short) 1).setCellValue(list.get(i).getName());
row.createCell((short) 2).setCellValue(list.get(i).getSex());
row.createCell((short) 3).setCellValue(list.get(i).getEducation());
row.createCell((short) 4).setCellValue(list.get(i).getMonthly());
}
// 第六步,将文件存到指定位置
try {
FileOutputStream fout = new FileOutputStream("E:\\aaa.xls");
wb.write(fout);
fout.close();
} catch (Exception e) {
e.printStackTrace();
}
session.setAttribute("add","数据导出成功");
return "redirect:/emp";
}

可以结合 SpringMVC 的上传下载使用

@Controller
public class ExcelController {
@Autowired
private ExcelService excelService; @GetMapping(value = "/excel_download")
ResponseEntity<byte[]> downloadFile() throws IOException {
byte[] contents = excelService.exportExcel().toByteArray(); HttpHeaders headers = new HttpHeaders();
headers.setCacheControl("no-cache, no-store, must-revalidate");
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentLength(contents.length);
headers.setContentDispositionFormData("attachment", "xxx_" + new SimpleDateFormat("yyyyMMddhhmmss").format(new Date()) + ".xls"); return ResponseEntity.ok().headers(headers).body(contents);
}
}

java中 Excel表实现数据导入导出的更多相关文章

  1. 1、数据库与excel表格的数据导入导出

    1.居民用户界面中,excel数据导入导出: 2.其他5张表数据显示到本角色主页的container容器中.

  2. java实现excel与mysql的导入导出

    注意:编码前先导入poi相关jar包 1 /** * 读excel 到list * * @param file excel file * @param fields 字段数组 * @return * ...

  3. java中通过jacob调用dts进行数据导入导出

    在一个项目中需要金蝶软件对接,但是业务服务器和财务服务器相隔很远(中间经过好几台服务器,有内网也有外网),从一个内网向另一个内网中传输时,需要外网辅助,因为不让原始数据受污染,使用了DTS数据同步到另 ...

  4. ITTC数据挖掘平台介绍(五) 数据导入导出向导和报告生成

    一. 前言 经过了一个多月的努力,软件系统又添加了不少新功能.这些功能包括非常实用的数据导入导出,对触摸进行优化的画布和画笔工具,以及对一些智能分析的报告生成模块等.进一步加强了平台系统级的功能. 马 ...

  5. Access中一句查询代码实现Excel数据导入导出

    摘 要:用一句查询代码,写到vba中实现Excel数据导入导出,也可把引号中的SQL语句直接放到查询分析器中执行正 文: 导入数据(导入数据时第一行必须是字段名): DoCmd.RunSQL &quo ...

  6. Java实现大批量数据导入导出(100W以上) -(三)超过25列Excel导出

    前面一篇文章介绍大数据量导出实现: Java实现大批量数据导入导出(100W以上) -(二)导出 这篇文章在Excel列较少时,按以上实际验证能很快实现生成.但如果列较多时用StringTemplat ...

  7. ssm框架之将数据库的数据导入导出为excel文件

    在这里首先我要将自己遇到的各种问题,以及需求记录下来,做一个备忘,便于以后查看: 需求:主要实现两个功能,将oracle数据库里的数据导出为excel,同时需要将excel表格的数据导入到数据库 环境 ...

  8. SQL SERVER 与ACCESS、EXCEL的数据导入导出转换

    * 说明:复制表(只复制结构,源表名:a 新表名:b)      select * into b from a where 1<>1 * 说明:拷贝表(拷贝数据,源表名:a 目标表名:b) ...

  9. Java实现大批量数据导入导出(100W以上) -(二)导出

    使用POI或JXLS导出大数据量(百万级)Excel报表常常面临两个问题: 1. 服务器内存溢出: 2. 一次从数据库查询出这么大数据,查询缓慢. 当然也可以分页查询出数据,分别生成多个Excel打包 ...

随机推荐

  1. PostgreSQL-UNION与Order by 冲突

    问题描述 union 连接的两个sql 都包含 order SELECT <property1>, <property2> FROM <table1> ORDER ...

  2. JavaEE--JSP详解

    一.JSP JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Microsystems公司倡导.许多公司参与一起建立的一种 ...

  3. QItemDelegate edit某个控件后把数据写回model

    QWidget *TrackDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const ...

  4. vue-cli中开发生产css注入形式不同导致bug

    开发环境和生产环境不同导致的差异.主要是css层级有变动:开发环境只是单纯的使用了style-loader进行style标签插入,不进行额外的处理,比如说资源合并和添加md5后缀等,这样做是为了让编译 ...

  5. java 过滤器filter使用案例

    主要需要 过滤器类  和配置文件 1.过滤器类 SessionFilter package com.service; import javax.servlet.*; import javax.serv ...

  6. ifconfig - 配置网络接口

    总览 ifconfig [接口] ifconfig 接口 [aftype] options | address ... 描述 ifconfig 用于配置常驻内核的网络接口.它用于在引导成功时设定网络接 ...

  7. KVM虚拟化网卡管理

    brctl常用命令 查看当前虚拟网桥状态 brctl show 添加一个网桥 addbr 删除一个网桥 delbr 添加网口 addif 删除网口 delif VALN LAN 表示 Local Ar ...

  8. python核心编程正则表达式练习题1-2匹配由单个空格分隔的任意单词对,也就是性和名

    # 匹配由单个空格分隔的任意单词对,也就是姓和名 import re patt = '[A-Za-z]+ [A-Za-z]+' # 方法一 +加号操作符匹配它左边的正则表达式至少出现一次的情况 # p ...

  9. 【洛谷P2647】最大收益

    题目大意 现在你面前有n个物品,编号分别为1,2,3,--,n.你可以在这当中任意选择任意多个物品.其中第i个物品有两个属性Wi和Ri,当你选择了第i个物品后,你就可以获得Wi的收益:但是,你选择该物 ...

  10. Java 11必掌握的8大特性,完美代码信手拈来

    [MyEclipse CI 2019.4.0安装包下载] 美国时间 09 月 25 日,Oralce正式发布了Java 11,这是据Java 8以后支持的首个长期版本.从官方发布的支持路线图表看出,J ...