poi 上传Excel(2003|2007)到服务器导入数据库

大数据量excel2007导入(大于10M)-java 最近的项目中碰到这样一个问题,用户需要导入大数据量的数据,要导入的数据文件大于7M,用户在系统使用的高峰期进行导入,结果导致应用服务器的cpu负载过高,其他用户无法使用系统,系统崩溃的情况。 阅读详情

项目需求通过Excel把数据导入数据库,一开始用的jxl,简单完成。后来发下远程下不能导入,报错路径找不到。因为服务器上面没有你路径所说的文件。更改程序思路:先把Excel上传到服务器,在服务器上读取Excel再把数据导入数据库。

上传用到的jar:1.commons-fileupload-1.2.1.jar

                        2.commons-io.jar

.jsp文件:

<form name="formPost1" enctype="multipart/form-data" action="" method="post"> 
			Excel上传:<input type="file"  style=" width: 0 " id="file_id" name="file_name" value="" onchange="fileLeading();" >
</form>

 注意:1、form加上enctype="multipart/form-data"属性后才能上传文件。但是加上这个属性后文件会以二进制的数据传输。就是说form提交的信息都是二进制的。不能通过简单的document.xx.value的方式传值,获取的会为null。我用的是URL传参的方法把File控件的值传过去的。

js文件:

function fileLeading_drug(){
	var a = document.formPost2.file_name2.value;
	a = a.substr(a.lastIndexOf("\\") + 1);
	document.formPost2.action = "<%=request.getContextPath()%>/LeadingData/LeadingMain.jsp?file_name2="+a+"  ";
	document.formPost2.submit();
}

这样在java后台就能获取到getParameter();

java文件:
可以用截取字符串的方式判断文件类型

if(!(file_name2.substring(file_name2.length()-4)).equals(".xls")  &&!(file_name2.substring(file_name2.length()-5)).equals(".xlsx")){
			out.println("<script>alert('选择文件格式不正确,请重新选择。');window.location.href('LeadingMain.jsp');</script>");
		}else{
			/*上传开始*/
			String Filepath = "";
			try{
				DiskFileItemFactory factory = new DiskFileItemFactory();
				// 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
				factory.setRepository(new File("C:\\"));
				/**创建一个新的文件上传操作*/
				ServletFileUpload upload = new ServletFileUpload(factory);
				/**设置能上传的最大文件的大小*/
				upload.setSizeMax(10*1024*1024*1024);
				//开始读取上传信息
				Iterator<FileItem> iter = upload.parseRequest(request).iterator();
				// 依次处理每个上传的控件				while(iter.hasNext()) {
					FileItem item = (FileItem) iter.next();
				// 忽略其他不是文件域的所有表单信息
				if (!item.isFormField()) {
					if (item.getSize() > 0)
					{
						String name = item.getName();
						String endName = name.substring(name.lastIndexOf(".") + 1);
						try{
		 					item.write(new File(request.getRealPath("\\"+file_name2)));
		 					Filepath = request.getRealPath("\\"+file_name2);
							}catch(Exception e){
								e.printStackTrace();
								System.out.println("上传失败……………………");
							}
					}
					}
				}
			}catch(Exception e){
				e.printStackTrace();
			}
			/*上传结束*/

接着就是在服务器上读取Excel把内容导入到数据库,读取Excel用的是POI支持2003和2007。

poi用到的jar:1、dom4j-1.6.1.jar

                       2、poi-3.7-20101029.jar

                       3、poi-examples-3.7-20101029.jar

                       4、poi-ooxml-3.7-20101029.jar

                       5、poi-ooxml-schemas-3.7-20101029.jar

                       6、poi-scratchpad-3.7-20101029.jar

                       7、xmlbeans-2.3.0.jar

 

Workbook wb = null;
			if(Filepath.matches("^.+\\.(?i)(xls)$")){//2003
				wb = new HSSFWorkbook(new FileInputStream(Filepath));
			}
			if(Filepath.matches("^.+\\.(?i)(xlsx)$")){//2007
				wb = new XSSFWorkbook(new FileInputStream(Filepath)); 
			}
			Sheet sheet = wb.getSheetAt(0);
			if(!(sheet.getRow(0).getCell(1).getStringCellValue().toLowerCase()).equals("drug_name")){
					out.println("<script>alert('导入文件数据不正确。');window.location.href('LeadingMain.jsp');</script>");
				}else{
					for(int i=1;i<=sheet.getLastRowNum();i++){
						max_mapid_sql2 = "select max(DRUG_MAP_ID)  from drug_map";
						TCommonRecord max_mapid2 = (TCommonRecord)query.queryForObject(max_mapid_sql2,new CommonMapper());
						int a = max_mapid2.getInt("max(DRUG_MAP_ID)")+1;
							map_sql2 = "insert into DRUG_MAP (DRUG_MAP_ID,DRUG_NO_LOCAL,DRUG_NAME_LOCAL,DRUG_SPEC,UNITS,DRUG_FORM,TOXI_PROPERTY,DOSE_PER_UNIT,DOSE_UNITS,DRUG_INDICATOR,INPUT_CODE,CLIENT_NAME) values "+
	 					"('"+a+"'," 						+
	 					"'"+getCell_Value(sheet.getRow(i).getCell(0))+"',"			+
	 					"'"+getCell_Value(sheet.getRow(i).getCell(1))+"',"			+
	 					"'"+getCell_Value(sheet.getRow(i).getCell(2))+"',"			+
	 					"'"+getCell_Value(sheet.getRow(i).getCell(3))+"',"			+
	 					"'"+getCell_Value(sheet.getRow(i).getCell(4))+"',"			+
	 					"'"+getCell_Value(sheet.getRow(i).getCell(5))+"',"			+
	 					"'"+getCell_Value(sheet.getRow(i).getCell(6))+"',"			+
	 					"'"+getCell_Value(sheet.getRow(i).getCell(7))+"',"			+
	 					"'"+getCell_Value(sheet.getRow(i).getCell(8))+"',"			+
	 					"'"+getCell_Value(sheet.getRow(i).getCell(9))+"',"	+
	 					"'"+crUser.get("OWNER_HOSPITAL")+"')";
						query.update(map_sql2);
					}
						out.println("<script>alert('导入HIS数据成功。');window.location.href('LeadingMain.jsp');</script>");
				}

其中的getCell_Value方法是用来判断读到的单元格内容类型的,再做相应的转换。

 

String getCell_Value (Cell cell) //判断单元格cell的类型并且做出相应的转换
{
	String strCell = "";
	if(cell!=null){
		switch(cell.getCellType()){
		case Cell.CELL_TYPE_STRING:
			strCell = cell.getStringCellValue();
			break;
		case Cell.CELL_TYPE_NUMERIC:
			strCell = String.valueOf(cell.getNumericCellValue());
			break;
		case Cell.CELL_TYPE_BLANK:
			strCell = "";
			break;
		case Cell.CELL_TYPE_BOOLEAN:
			strCell = String.valueOf(cell.getBooleanCellValue());
			break;
		default:
		    strCell = "";
	        break;
		}
	}
return strCell;
}


这样就可以把数据用Excel的方式导入到数据库。出现错误做出相应的修改就好。错误不可怕,就怕它不报错。

 

 

excel导入并解析入库,多线程实现 此demo涉及多线程,远程调用,excel从页面读取解析(用流的方式读);先从页面选择excel, 然后点击导入按钮, 后台用POI解析校验, 然后远程调用ejb,存入数据库.(注意:excel文件并没有存储在服务器.)框架是基于struts1,  里面的多线程实现方式是实现Callable接口. public ActionForward importUleAddress(ActionMappi 阅读详情

相关推荐

Java Apache POI实现Excel指定行复制操作

本文还有配套的精品资源,点击获取 简介:Apache POI是用于处理Microsoft Office文件格式的Java库,特别是在Excel文件中。文章详细说明了如何使用Apache POI在Java中复制指定行数的Excel表格内容,包括行内容和样式。通过创建Workbook、Sheet、Row和Cell对象,遍历指定行数进行复制,并展示如何保存修改后的文件。这对于自动...

weixin_31659095的博客 1908

如何在线查看.woff, .ttf 文件里有什么图标

免费在线查看`.woff`, `.ttf` 文件里有什么图标,支持在线编辑和下载图标。

Emily's Blog 1万+

woff-viewer:简单的技巧,可基本查看woff和woff2文件。 用于搜索和查看Unicode描述和范围的附加功能

Woff Viewer 可在 这是一个基本的Web应用程序,允许用户查看woff或woff2 Webfont的字形。 用户在其硬盘驱动器上选择一种Web字体,然后该应用程序显示该字体的所有选定glpyh。 我为这件事情对我来说很好而感到自豪,但是为了重新整理代码,我想最终重新讨论一下。 我还希望能够从CDN等加载woff。 谢谢阅读! 屏幕截图

爬虫--简单woff文件的处理

woff文件 Web开放字体格式(Web Open Font Format,简称WOFF)是一种网页所采用的字体格式标准。此字体格式发展于2009年,现在正由万维网联盟的Web字体工作小组标准化,以求成为推荐标准。此字体格式不但能够有效利用压缩来减少档案大小,并且不包含加密也不受DRM(数位著作权管理)限制。 而且有时候再页面接受的时候其返回的是一个字符串:如下 不过看其这个url,其实简单理解就是 data:font/truetype;charset=utf-8;base64,+字符串 有要尝试的可以

u011863822的博客 8523

Claude Code × SolidWorks:批量填属性、格式转换、BOM 汇总自动化实战

摘要:本文介绍利用 Claude Code 生成 VBA 宏实现 SolidWorks 批量处理任务的自动化方案。包含5个实战案例:批量填写自定义属性(60分钟任务→10秒)、批量格式转换(80分钟→30秒)、多配置工程图自动生成(120分钟→2分钟)、滚珠丝杠选型计算(15分钟→10秒)和装配体递归BOM导出(40分钟→1分钟)。所有代码基于SolidWorks 2020+ API,提供完整VBA实现和操作指南,可显著提升设计效率。

m0_64424835的博客 613

N32G003学习——第九章 第三节1 串口 发送

经过第九章前2节的学习,基础打下之后,开始敲代码。

qq_34525008的博客 1034

woff 字体文件解析 字体结构说明

woff文件样式查看 http://fontstore.baidu.com/static/editor/index.html 在这个网址 上传woff文件 即可看到woff文件的展示效果 woff代码查看 woff文件可以用python的fontTools 打开 font = TTFont('xxx.woff') # 打开文件 font.saveXML('xxx/6329.xml'...

彦文的专栏 2万+

再见 n8n?Google Opal 实测:一句话生成 APP,这才是 AI 的正确打开方式!

Google Opal深度评测:这款自然语言生成工作流的AI工具,通过三个实战案例(科技早报生成器、冰箱食谱助手、爆款文案转译机)展示了其零代码开发的强大能力。它凭借Gemini 3.0 Pro和Google生态的无缝集成,将自动化门槛降至新低,预示着一个“意图驱动开发”的新时代。

莫潇羽的个人博客 848

woff格式字体怎么打开和编辑?

如题!   woff百度百科:http://baike.baidu.com/link?url=toS7yqpN9VlEcO2GOEp5JEA9-TeaZgIdVqTOv7iHshsNvk-V8HtxEY0ku08TzUoDaEfRhGy_atYdr88bCHpwkK   Web开放字体格式   woff是字体文件,做网页时放到服务端,如果客户端浏览器中可以加载这个。   那么,wo

小酷陪你玩安卓 3万+

工业异常检测评价指标(I-AUROC、PRO等)

模型评价指标:TPR、FPR、Recall、ROC、AUC、AUROC、IoU、PRO、AUPRO等

qq_1532145264的博客 7434

ABAP CDS 货币与计量单位换算全攻略:CURRENCY_CONVERSION、UNIT_CONVERSION 与 DECIMAL_SHIFT 的工程化实践

本文介绍了SAP ABAP CDS中三种单位/货币换算函数(UNIT_CONVERSION、CURRENCY_CONVERSION、DECIMAL_SHIFT)的实战应用。重点包括:各函数的职责边界与适用场景,参数配置与精度控制策略,以及基于标准表(T006、TCUR*等)的换算规则来源。文章提供可运行的CDS示例,涵盖单位换算(如MI转KM)、货币汇率转换(含小数位处理)及纯小数位调整等典型场景,并强调生产环境中需注意的精度差异与审计风险控制。适用于企业报表、成本核算等需要统一口径的业务场景。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1554

Excel文件一键上传并解析完成数据批量导入数据库

原来做文件上传的时候,都是有一个输入框,点击上传按钮,先浏览文件,选择文件后,把文件的路径保存到form表单中,最后通过form表单提交到服务端。这样的界面不是很美观。为了用户有更好地体验(UE),现在的大多数系统都是采用一键文件上传,用户点击上传按钮,选择要上传的文件,确定之后,文件就直接上传了,不需要提供额外的form表单,而且可以实现页面文件上传无刷新。 文件上传和一键文件上传的原理 文件上...

小机灵鬼 8445

安卓15_ROM修改定制化_____修改rom的前提条件 去除各种验证 安卓设备通用

通过博文了解💝💝💝 1-------💝💝💝了解安卓设备的启动流程与核心验证机制 2-------💝💝💝了解安卓设备修改rom中的各种验证机制以及对应的去除方法 3-------💝💝💝了解avb验证与dm验证的本质区别与对应的操作方式 4-------💝💝💝修改rom前的循序步骤 避免验证机制导致的不开机

小马哥的专栏 507

蓄力-利用POI进行excel的导入导出(包含图片)

这里写自定义目录标题利用POI进行excel的导入导出excel导入excel导出 利用POI进行excel的导入导出 项目背景: excel导入 excel导出

zhaya的博客 4575

R语言机器学习算法实战系列(十五)随机森林生存预后模型+SHAP值 (Random Survival Forest + SHAP)

本教程运用随机森林生存分析筛选与患者生存状态显著相关特征。该方法借随机森林这一强大机器学习算法,构建多棵决策树并集成结果,以提高生存分析准确性,识别关键生物标志物。接着,利用选定特征构建风险得分,将多个特征转化为单一数值,量化患者风险水平。之后,依据风险得分将患者分为高、低风险亚型,为临床治疗提供个性化指导。最后,通过分析时间依赖的 ROC 曲线评估模型长期预测能力。此曲线计算不同阈值下的真正例率与假正例率,在多个时间点评估,全面展现模型长期稳定性与准确性。。并且增加了SHAP值评估特征重要性

专注生信领域 2623

YOLO11涨点优化:Loss魔改 | WIoU (Wise-IoU) v3版本全面替换,基于动态非单调聚焦机制,让模型更聪明地学习

YOLOv11目标检测中的WIoU v3损失函数改进 本文探讨了YOLOv11目标检测模型中CIoU损失函数的局限性,并提出了WIoU v3改进方案。关键发现包括: CIoU的缺陷:在低质量样本(小目标/遮挡目标)上过度惩罚,导致模型优化方向偏离,小目标AP往往比大目标低30%左右。 WIoU v3的创新: 动态非单调聚焦机制:根据样本"离群度"智能分配梯度 让模型重点优化中等质量样本,减少对低质量样本的无效关注 采用指数移动平均来自适应调整质量评判标准 实际效果:WIoU v3在保持大

2601_95807009的博客 422

Excel上传至服务器与从服务器弹框下载到本地

Excel从服务器下载,以及本地上传excel至服务器的简单处理操作方式,及一些注意事项。

李白的粉的博客 1585

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

jsp后台批量导入excel表格数据到mysql中_【Javaweb】poi实现通过上传excel表格批量导入数据到数据库...

1.导入poi相关jar包对于只操作2003及以前版本的excel,只需要导入poi-XXX.jar ,如果还需要对2007及以后版本进行操作,则需要导入poi-ooxml-XXX.jarpoi-ooxml-schemas-XXX.jarMaven方式1 2 org.apache.poi3 poi4 3.175 67 8 ...

weixin_34209060的博客 413

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

jquery插件Ajaxfileupload上传Excel文件

在做批量导入文件的功能时使用ajaxfileupload插件上传Excel文件。 首先下载ajaxfileupload.js 按钮样式: "text-file"css样式,用于透明隐藏选择文件域,点击"批量导入"按钮时实际点击的是上传文件的选择域 .text-file { filter:alpha(opacity:0); opacity: 0;

asunjianren的专栏 1万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

关于MultipartFile接收文件与POI-EXCEL操作

本来标题想叫关于我放弃码农生活到异世界码头吃了一整年薯条又回来敲代码这件事。。 前景:回来敲代码半个月了,之前入职的有做web的、做iot的,做嵌入式的、做cv的,这次入职的做web。(写文章为了巩固自己的记忆也给大家做参考) (找问题参考的前边废话可以不看,直接正文) 首先前端是内部基于vue的框架,不知道魔改了哪个开源框架还是参考了哪个框架,这几年大家开发基于vue的内部框架很多都是魔改了ele-UI,基本都差不多; 后端基于springmvc,java好久不做了,maven管理,一开始搞不懂m

weixin_42727578的博客 2469

java ftp上传excel_读取FTP上的excel文件,并写入数据库

今天遇到一些问题,需要从ftp上读取一些excel文件,并需要将excel中的数据写入到数据库,这样就可以通过管理页面查看这些数据。我将相关工作分为三步,1、从ftp上读取相关文件,并将excel文件下载到本地。2、读取本地下载完成的excel,读取相关信息 3、将读取的信息存储到数据库中。1、获取java操作ftp操作,首先要从maven仓库https://mvnrepository.com/a...

weixin_29723669的博客 1910

java保存文件到数据库中_java程序上传excel文件,保存数据到数据库中

1 packagecontrollers;23 importjava.io.File;4 importjava.io.FileInputStream;5 importjava.io.IOException;6 importjava.io.InputStream;7 importjava.text.DecimalFormat;8 importjava.util.ArrayList;9 importj...

weixin_42713608的博客 373

springboot -- 整合poi 实现-数据库数据逆向生成excel文件

目录: 1、poi Maven 依赖+json依赖 2、ExcelUtil 工具类及测试代码 3、JsonUtil 工具类及main测试 4、prop 配置文件 SqlConfig.properties(单纯导出数据无需配置,需修改代码逻辑) 5、读取prop 配置文件工具类 PropUtli.java(单纯导出数据无需配置) 6、Excel 生成核心类 流程: 1、获取前台传递的要导出的文件...

ws - 兮的博客空间 1598

Excel文件一键上传并解析导入数据库

文件一键上传 解析excel

宏微的博客 1万+

读取FTP上的excel文件,并写入数据库

今天遇到一些问题,需要从ftp上读取一些excel文件,并需要将excel中的数据写入到数据库,这样就可以通过管理页面查看这些数据。 我将相关工作分为三步,1、从ftp上读取相关文件,并将excel文件下载到本地。2、读取本地下载完成的excel,读取相关信息 3、将读取的信息存储到数据库中。 1、获取java操作ftp操作,首先要从maven仓库https:...

weixin_33739646的博客 936
上一篇: eclipse Ant打war包自动部署到Tomcat
下一篇: Tomcat 启动超过45秒
xulai_java
博客等级 码龄15年 1粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值