【POI】的导入与导出功能

POI框架学习-导入导出案例+word转为PDF实现导出 目录 一 POI简介 二 行数限制 三 案例(导入和导出) 3.1 导入依赖 3.2 导入案例 3.3 导出案例(返回文件流方式) 3.4 导出案例(返回URL方式) 3.5 加载模板导出 一 POI简介 Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。是目前较流行的导入导出excel框架。 官方网站:Apache... 阅读详情

一、Apache POI介绍

Apache POI是Apache软件基金会的开源项目,POI提供API给Java程序对Microsoft Office格式档案读和写的功能 .NET的开发人员则可以利用NPOI (POI for .NET) 来存取 Microsoft Office文档的功能。

二、导入功能

//导入
@RequestMapping("/importExcel")
public void importExcel(MultipartFile uploadFile) throws IOException {
	// 获取到一个工作簿,也就是从上传的这个文件中读取内容
	XSSFWorkbook workbook = new XSSFWorkbook(uploadFile.getInputStream());
	// 获取工作表
	XSSFSheet sheet = workbook.getSheetAt(0);
	// 获取最后一行的行号
	int lastRowNum = sheet.getLastRowNum();
	//创建集合
	List<Emp> list = new ArrayList<>();
	// 循环读取Excel,第二行之后的数据
	for (int i = 1; i <= lastRowNum; i++) {
		// 获取一个row
		XSSFRow row = sheet.getRow(i);
		// 获取第一个单元格的编号值
		String ename = row.getCell(1).getStringCellValue();
		String sex   = row.getCell(2).getStringCellValue();
		String age   = row.getCell(3).getStringCellValue();
		String phone = row.getCell(4).getStringCellValue();
		String jointime = row.getCell(5).getStringCellValue();
		Integer deptid  = (int) row.getCell(6).getNumericCellValue();
		//创建对象
		Emp school = new Emp();
		school.setEname(ename);
		school.setSex(sex);
		school.setAge(age);
		school.setPhone(phone);
		school.setJointime(jointime);
		school.setDeptid(deptid);
		//赋值
		list.add(school);
	}

	// 将list中的数据批量插入到数据库中
	empService.addBatch(list);
	
}

三、导出功能

  1. 导出功能的私有方法
	// 导出到硬盘
	@SuppressWarnings("resource")
	private void ExportExcel(HttpServletRequest request,HttpServletResponse response,
			String[] handers, List<EmpExtend> list, String excleName) throws Exception {
		
		try {
			response.setContentType("application/vnd.ms-excel");
			String condedFileName = new String(excleName.getBytes("gb2312"), "ISO8859-1");
			response.setHeader("content-disposition", "attachment;filename=" + condedFileName+".xls");

			} catch (UnsupportedEncodingException e) {
				this.logger.error(e.getMessage(), e);
			}
		
		try {
			XSSFWorkbook wb = new XSSFWorkbook();//创建工作簿
			XSSFSheet sheet = wb.createSheet("操作记录导出");//第一个sheet
			XSSFRow rowFirst = sheet.createRow(0);//第一个sheet第一行为标题
			rowFirst.setHeight((short) 500);
			for (int i = 0; i < handers.length; i++) {
				sheet.setColumnWidth((short) i, (short) 4000);// 设置列宽
			}
			//写标题了
			for (int i = 0; i < handers.length; i++) {
			    //获取第一行的每一个单元格
			    XSSFCell cell = rowFirst.createCell(i);
			    //往单元格里面写入值
			    cell.setCellValue(handers[i]);
			}
			for (int i = 0;i < list.size(); i++) {
			    //获取list里面存在是数据集对象
				EmpExtend stu = list.get(i);
			    //创建数据行
			    HSSFRow row = sheet.createRow(i+1);
			    //设置对应单元格的值
			    row.setHeight((short)400);   // 设置每行的高度
			    //"序号","学生名称","所属班级","性别","年龄","联系电话","家庭住址"
			    row.createCell(0).setCellValue(i+1);
			    row.createCell(1).setCellValue(stu.getEname());
			    row.createCell(2).setCellValue(stu.getSex());
			    row.createCell(3).setCellValue(stu.getAge());
			    row.createCell(4).setCellValue(stu.getPhone());
			    row.createCell(5).setCellValue(stu.getJointime());
			    row.createCell(6).setCellValue(stu.getDname());
			    
			}
				OutputStream fOut = null;
				fOut = response.getOutputStream();
				wb.write(fOut);
				fOut.flush();
				fOut.close();
			
			} catch (Exception e) {
				e.printStackTrace();
				throw e;
			}
	}
  1. 导出功能的代码块
	//导出
	@RequestMapping("export")
	public void export(HttpServletRequest request,HttpServletResponse response){
		JSONObject result = new JSONObject();
		try {
			String time = TimeUtil.formatTime(new Date(), "yyyyMMddHHmmss");
		    String excelName = "导出"+time;
			//创建对象
		    EmpExtend emp = new EmpExtend();
		    //查询所有数据
		    List<EmpExtend> list =  empService.findEmpPage(emp);
		    //设置标题题目
			String[] handers = {"编号","姓名","性别","年龄","手机号","入职日期","所属部门"};
			// 导出到硬盘 调用上面的方法
			ExportExcel(request,response,handers,list, excelName);
			
			
		} catch (Exception e) {
			e.printStackTrace();
			result.put("", "对不起,导出失败");
		}

	}
如何优雅的用POI导入Excel文件 Apache POI 是用Java编写的免费开源的跨平台的Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能,其中使用最多的就是使用POI操作Excel文件。至此,我们就实现了POI导入excel文件的操作,当然还有一些更复杂的操作在这里没有展开,例如导入excel中的部分行、部分列的数据,以及导出数据到excel等操作。从一个准备好的Excel表格文件中读取学生信息,然后将学生的信息通过POI技术导入到数据库的学生表中。 阅读详情

相关推荐

基于POI实现Excel表的导入导出功能

对于批量数据的操作,在项目中引进Excel的导入和导出功能是个不错的选择。对于Excel表的结构,简单理解可以把它分成三部分(Sheet,Cell,Row),这三部分可以理解为excel表中的页,列,行。因此,我们想要获取到某一个单元的内容,可以通过获取该单元所在的页数、对应所在的行和对应的列数从而定位到该单位,继而便可执行操作从而获取其中的内容。本文在SSM环境下基于Java的POI实现对exc...

林风自在 4万+

基于poi的三种excel导出方式

本文主要记录了日常开发中常见的excel导出方式,包括直接遍历设值、基于自定义注解和基于excel文件模板。

qq_32590535的博客 1万+

Spring+Struts2+Hibernate+Apache POI 实现的Excel2007导入导出功能代码分享

由于工作需要,负责做了两个Excel的导入导出功能,由于发现之前的代码繁琐效率低下,所以自己根据网上的案例实现了一个比较简单的导入导出方法,分享出来。希望能听取到其他开发人员的意见,继续改进。 一.编写Excel中每行对应的实体类,本文案例实体类如下: package com.ultrapower.eoms.ultrabpp.runtime.custom.model; import

小白到大神的java之路 2988

Java使用POI导出Excel

在项目开发中往往需要使用到Excel的导入和导出,导入就是从Excel中导入到DB中,而导出就是从DB中查询数据然后使用POI写到Excel上。POI不仅仅可以操作Excel,他的定位是Microsoft Of操作读和写,Microsoft Office其中包含了很多常用的办公文件,例如:Excel、ppt、word、Visio等等…

怪咖@的博客 1万+

基于Maven的Apache POI实现Excel导入导出功能实战

Apache POI是Java生态中处理Microsoft Office文档的核心开源库,尤其在Excel文件的导入导出场景中占据主导地位。其核心模块HSSF和XSSF分别用于处理.xls和.xlsx格式文件:HSSF基于二进制BIFF结构解析旧版Excel,而XSSF则依托Office Open XML标准,通过XML与ZIP封装实现对新版文件的读写。两者共享统一的抽象接口如WorkbookSheetRow和Cell,支持开发者以一致的编程模型操作不同格式。// 读取 .xlsx。

weixin_42471823的博客 887

abaqus wcm插件下载_Abaqus随机短纤维增强复合材料建模插件

文末附Abaqus随机短纤维增强复合材料建模插件下载链接前言短纤维增强复合材料相对于长纤维增强复合材料来说更容易制备,且短纤维的填充性能略有改善,可制造复杂产品,广泛应用于车辆、航空航天、建筑等行业,对短纤维增强复合材料进行细观力学分析,可对其宏观力学性能进行预测、分析破坏机理等。接下来对随机短纤维增强复合材料建模插件进行介绍。NO.1 【算法简介】难点一:此插件核心在于判断生成的纤维是...

weixin_39974882的博客 2833

POI导出Excel (满满的干货啊)

已经实现的POI导出Excel 步骤一:导入依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> <d

小七会喷火 1万+

ZYNQ平台AXI DMA传输避坑指南:如何快速定位‘errors:200‘等中断故障

本文详细解析了ZYNQ平台AXI DMA传输中常见的'errors:200'等中断故障,提供了从寄存器解析到压力测试的完整解决方案。通过深入分析XILINX_DMA中断机制、错误分类及五步排查法,帮助开发者快速定位并解决DMA传输问题,提升系统稳定性与性能。

weixin_29159613的博客 441

poi实现导入和导出功能

利用poi可以实现excel文件导入和导出功能   本例子结合了springboot做demo pom文件 1.8 org.springframework.boot spring-boot-starter 1.5.4.RELEASE org.springframework

某某人的博客 1万+

单细胞多组学数据整合分析实战:从原始数据到跨平台合并

本文详细介绍了单细胞多组学数据整合分析的实战流程,从原始数据处理到跨平台合并分析。通过Seurat和Harmony等工具的应用,帮助研究者有效解决批次效应问题,保留真实的生物学信号。文章包含代码示例和常见问题解决方案,特别适合需要进行单细胞合并分析的研究人员参考。

weixin_30752699的博客 90

OTA 升级失败/回滚策略设计:打造安全可靠的双分区/断点续传/签名校验方案

双分区机制(A/B Partitioning)是OTA升级的“保险箱”。简单来说,设备存储分为两个分区:A分区(当前运行)和B分区(备用)。升级时,新固件写入B分区,A分区保持不变。如果升级成功,系统切换到B分区运行;如果失败,设备直接回滚到A分区,完全不受影响。这就像玩游戏存档:你打Boss前存了个档,万一挂了还能读档重来。双分区就是设备的“读档”机制,避免了变砖的尴尬。以Android设备为例,Google从Android 7.0开始强制引入A/B分区机制(Seamless Updates)。

大模型大数据攻城狮的专栏 1235

SSM框架下的POI导入导出功能

在pom.xml中添加导入jar包 pom.xml: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-scratchpad</artifactId> <version>3.14</version> &lt...

No上善若水的博客 2741

AI上推荐 之 逻辑回归模型与GBDT+LR(特征工程模型化的开端)

1. 前言 随着信息技术和互联网的发展, 我们已经步入了一个信息过载的时代,这个时代,无论是信息消费者还是信息生产者都遇到了很大的挑战: 信息消费者:如何从大量的信息中找到自己感兴趣的信息? 信息生产者:如何让自己生产的信息脱颖而出, 受到广大用户的关注? 为了解决这个矛盾, 推荐系统应时而生, 并飞速前进,在用户和信息之间架起了一道桥梁,一方面帮助用户发现对自己有价值的信息, 一方面让信息能够展现在对它感兴趣的用户前面。 推荐系统近几年有了深度学习的助推发展之势迅猛, 从前深度学习的传统推荐模型(协

Miracle8070 8253

Java实现Excel导入导出功能(前端anglar,后端poi,jpa)

导出 前端 <kendo-button class="k-button-icontext k-primary" style="margin-left:14px;" ng-click="export();"><span class="k-button-icon icon-download"></span>导出</kendo-button> //数据下载 var downloadUrl = DSJS.getWebRoot(

卷NM呢!不干了! 1326

12、知识图谱数据处理与推理全解析

本文深入解析了知识图谱中的数据处理与推理技术,涵盖SHACL的多种约束类型(如值约束、范围约束、字符串约束、逻辑约束等)及其在数据质量控制中的应用,并介绍了常用的SHACL工具与实际案例。文章对比了SPARQL与SHACL的特点,探讨了RDF(S)的局限性,引出表达能力更强的OWL和OWL2语言及其在语义网和生物医学等领域的应用。此外,还阐述了规则在知识表示中的作用,包括产生式规则和Datalog规则,并总结了知识图谱中推理的重要性与典型流程,为构建高质量、可推理的知识图谱提供了全面的技术指导。

zz67890的博客 135

工程师必收藏,Juniper(Junos)网络设备命令大全

不要直接删除配置 → 使用deactivate配置前先修改大配置用出现风险命令一律用写自动化时一律用格式真正会用 Juniper 的工程师,不是命令多,而是命令用得精。

网络技术联盟站 404

Poi简单实现Excel的导出导入功能

Poi简单实现Excel的导出导入功能最近项目用到了有关Excel的导入导出功能,之前也没有使用过,简单的写一下基本用法(小白阶段有写错的还望大神们指教,小弟先谢过了!):步骤思想:导出Excel:1.创建一个工作簿workbook; 2.创建一个sheet; 3.创建row 4.为每一行(row)的cell赋值Example:String[] title = {"id","name","se

YMS_KK的专栏 814

21、深入了解SELinux安全系统与/proc文件系统

本文深入探讨了SELinux安全系统与/proc文件系统的原理及实际应用。详细介绍了SELinux的安全上下文、域转换、运行模式、角色管理以及策略查看工具seinfo的使用;同时解析了/proc文件系统的结构与功能,涵盖进程信息查看、系统资源监控及性能优化方法。结合SELinux与/proc的协同应用,提供了系统问题排查流程与安全管理最佳实践,帮助用户提升Linux系统的安全性与稳定性。

ik678901234的博客 61

利用POI实现表格导入导出功能

利用POI实现表格导入导出功能 maven依赖 &lt;!--微软POI依赖--&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.poi&lt;/groupId&gt; &lt;artifactId&gt;poi-ooxml&lt;/artifactId&gt; &lt;version&gt;3.17&lt;/versi

shirukai 1136

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

poi实现excel的导入导出功能

Java使用poi实现excel的导入导出功能: 工具类ExcelUtil,用于解析和初始化excel的数据:代码如下 package com.raycloud.kmmp.item.service.util; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.St...

weixin_30635053的博客 149

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

poi批量导入导出Excel(二、不需要建数据库表一键实现导入导出功能)

本项目基于SSM框架,简单封装了Excel批量导入导出功能,不用建数据库表一键导入导出Excel,不过这样只适用于对导入的Excel表进行转换。上一篇介绍了建表导入导出Excel(点击跳转)一、下载poi jar包:    点这里下载:poi 3.8/3.9/3.10三个版本下载                        poi 3.17最新版本下载二、基本操作步骤:   首先,理解一下一个E...

未曾远去 1070

Java基于POI4.1.2实现Excel的导入导出功能

Java基于POI4.1.2实现Excel的导入导出功能 ** ## 1、导入依赖 ** <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>4.1.2</version> </dependency> <dependency> &lt

qq_36069670的博客 2521

java基于poi的Excel导入导出功能

一、Excel的导入导出工具类 1、Excel导出工具类 package com.djw.excel.utils; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HS...

danjiawei的博客 4010

POI 实现Excel 导入、导出功能

【代码】POI 实现Excel 导入、导出功能。

thinkers 1207

POI完成Excel的导入导出数据库的功能

3.controller层

qq_42276876的博客 594
上一篇: 【Mybatis】中使用IN语句查询sql的方法
下一篇: java.util.Arrays$ArrayList cannot be cast to java.util.ArrayList 解决方法
Monika、
博客等级 码龄7年 16粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Monika、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值