需要引入依赖:

<!-- 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. $().click()和$(document).on('click','要选择的元素',function(){})的不同(转https://www.cnblogs.com/sqh17/p/7746418.html)

    $(document).on();用于动态绑定事件 jQuery的出现,大大简化了对dom的操作,但是如果不是仔细阅读api和进行操作,就不知道其中最大的优点和使用方式.就拿$().click()和$ ...

  2. js 计算倒计时

    第一个是我自己写的 // t等于时间戳差 function changeTime(t) { let timeStr = '' let tmp = t/(24* 3600 * 1000) if (tmp ...

  3. Eclipse 配置 tomcat

    1.第一步 去官网下载 进入点击 Downloads 点击如图位置下载 我下载的是 apache-tomcat-7.0.82.zip(图片中不是,但都是一样的) 我解压到D:\tomcat\apach ...

  4. 常用插件html

    1.上传模板,插件 https://github.com/kartik-v/bootstrap-fileinput 2.

  5. 23_1spring基础

    1.spring是什么 2.spring的优势 3.spring体系结构 4.耦合 程序间的依赖关系:类之间的依赖和方法之间的依赖. 解构:降低程序间的依赖关系. 实际开发中应该做到:编译期不依赖,实 ...

  6. (转) linux实现ssh免密码登录的正确方法

    方法/步骤 验证ssh远程登录,未作免密处理的两台机器,登录时,是需要输入密码的 本地系统执行 ssh-keygen -t rsa 命令,生成密钥文件 在相应的目录下查看生成的密钥文件,其中:id_r ...

  7. (转) oracle清空数据库脚本

    在开发过程中,可能经常需要重新初始化数据库,在初始化之前,我们肯定希望不再有以前的老表.存储过程等用户对象,用下面的教本就可以做到这一点: BEGIN     FOR rec IN     (SELE ...

  8. 百度贴吧自动回帖的两种方式,使用requests(urllib2)和selenium两种方式回帖

    本文介绍,回复贴吧指定某楼层主的帖子的方法.在这里不介绍无限发主贴和无限回复主贴的方法,无限发主题帖会爆吧,引起别人的反感,并且很容易遭到吧主的封杀:无限回主题帖,会让整个帖子的每楼的回复充满了自己的 ...

  9. No application found. Either work inside a view function or push an application context.

    flask报了这个错,字面意思是说没有应用上下文,字面给的解决意见是要么放置在一个视图内,要么提供一个应用(flask)上下文. 查看文档发现文档给了个解决方案: 一个是通过app.app_conte ...

  10. 开启mysql审计功能

    下面方式是在线开启,重启后会失效: 1.mysql社区版没有审计插件,先获取server_audit.so文件,我是先在一台测试服务器上安装了一个mariadb数据库,然后搜索find / -name ...