web开发excel文件上传及解析(上)

web开发excel文件上传及解析(上)

前言

在web开发的时候,我们经常有遇到文件的上传以及解析的需求,比如我们将excel文件上传并且解析,最后将解析的excel的内容插入到数据库中,今天就实践一下文件的上传以及excel的解析,这篇博客主要是实践文件上传功能,对应的excel文件的解析,将在下一篇博客实践。

准备工作:

本文上传文件使用了apche下面的commons-fileupload.jar、commons-io.jar

如果是maven项目,则需要在pom.xml配置如下依赖

<dependency>
	<groupId>commons-fileupload</groupId>
	<artifactId>commons-fileupload</artifactId>
	<version>${commons.fileupload.version}</version>
</dependency>

<dependency>
	<groupId>commons-io</groupId>
	<artifactId>commons-io</artifactId>
	<version>2.2</version>
</dependency>

如果不是maven项目则下载jar包的,然后导入到项目中,下载地址如下:

链接:https://pan.baidu.com/s/12FHorV5ImIn4aiCqFcBUkg 密码:yxgj

功能实现:

用上述两个jar包实现上传的功能比较简单,这里就直接上传代码

前端代码:主要就是一个表单

<form name="frm_test" action="${pageContext.request.contextPath }/uploadExcelFile" method="post" enctype="multipart/form-data">
		用户名:<input type="text" name="userName">  <br/>
		文件:   <input type="file" name="file">   <br/>
        <input name="upload" type="submit" value="上传">
</form>

注意事项,一定要将enctype=”multipart/form-data”,另外就是<input type=”file” name=”file”>

其他没什么注意的地方,记得接口不要写错了

后台代码:

@RequestMapping(value="/uploadExcelFile",method=RequestMethod.POST,produces = "text/html;charset=UTF-8")
	@ResponseBody
	public String uploadExcelFile(@RequestParam("file") CommonsMultipartFile file,HttpServletRequest request) {
		try {
			String path = request.getSession().getServletContext().getRealPath("/");
			String fileName = "display.xlsx";
			File excelFile = new File(path+fileName);
			LOGGER.info("uploadExcelFile file = "+excelFile.toString());
			if(excelFile.exists()) {
				excelFile.delete();
			}
			file.transferTo(excelFile);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return "fail";
		}
		return "success";
	}

 这里有个小的地方需要注意@RequestParam(“file”)这个里面的file和前端的 <input type=”file” name=”file”>中的name=“file”要一致。

这部分代码是简单的功能实现,并不是特别符合springmvc的设计,因为良好的mvc的设计controller层是不能写太多的逻辑,业务逻辑应当写道model层去的。另外返回的话也只是简单的返回success和fail。除了上面的代码,还需要在配置文件applicationContext.xml中配置一个关键的bean,不然上传的时候会报错。

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
        p:maxUploadSize="5242880"
        p:maxInMemorySize="4096"
        p:defaultEncoding="UTF-8">

    </bean>

这里有个注意的地方就是bean的id必须设置为“multipartResolver”,不然同样会报错的。

好了,按照上面的操作,基本上是可以实现文件上传的功能,下面看运行的效果吧

前端展示:

web开发excel文件上传及解析(上)

web开发excel文件上传及解析(上)

web开发excel文件上传及解析(上)

我这边是上传到了tomcat中对应的该项目中,上传之后的该项目的根目录

web开发excel文件上传及解析(上)

这里仅仅是实战了一把文件上传的功能,接下来看看如何实现excel的文件解析,excel文件解析

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111241.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • navicat 15 激活码(破解版激活)

    navicat 15 激活码(破解版激活),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    56
  • Pycharm中修改运行快捷键「建议收藏」

    Pycharm中修改运行快捷键「建议收藏」在Pycharm中默认运行的快捷键是Ctrl+Shift+F10。如何修改Pycharm运行的快捷键?步骤一:在File中找到Settings.步骤二:找到Keymap,并在搜索框中搜索run,找到对应的【Run】.步骤三:右键点击Run,选择【AddKeyboardShortcut】.步骤四:在此处填入想设置的快捷键即可.最后点击应用和OK即可设置完毕!成功!!!…

    2022年8月28日
    0
  • 矩阵转置基本性质

    矩阵转置基本性质一个矩阵的转置与本身相乘得到对称矩阵

    2022年6月29日
    25
  • 前端实现多语言切换_等红灯时频繁D到N档切换

    前端实现多语言切换_等红灯时频繁D到N档切换这两天做了多国家多语言切换的需求,遇到了一个问题。androidN版本之后在进入包含webview页面之后,再次切换语言失效的问题,记录一下。原因是:webview在AndroidN之后,webview的相关类以及相关jar的修改AndroidN之前:Android的WebView是使用webkit构建的。虽然它最初是AOSP的一部分,但是从KitKat开始,决定分离出We

    2022年9月3日
    2
  • win32中SetCapture 和 ReleaseCapture的使用

    win32中SetCapture 和 ReleaseCapture的使用     最近在用win32写《visualC++经典游戏程序设计》中的扫雷游戏,在写到鼠标点击雷区的时候用到了SetCapture,和ReleaseCapture这对系统函数。那么为什么需要用到鼠标捕获的函数呢?我错误地认为鼠标的跟踪可以由Point进行传值处理,就能实现我想要的功能,但是我却疏忽了如果我的鼠标按下的时候把鼠标移除窗口外面的情况,这种情况的时候鼠标是在外面的,那么当我把鼠标弹起的时候鼠标的位置就不在扫雷窗口里面了,因此我需要在按下鼠标的时候捕获鼠标的位置,这样就解决了鼠标不在窗口里面的

    2022年6月6日
    28
  • ping指定IP的指定端口_ping命令端口号多少

    ping指定IP的指定端口_ping命令端口号多少ping是简单的测试网络连接情况的小工具,对于一般用户很实用,但是ping有个缺点就是,不能指定端口tcping命令是针对tcp监控的,也可以看到ping值,即使源地址禁ping也可以通过tcpin

    2022年8月1日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号