1. 程式人生 > >ssm框架實現execl上傳,並插入資料庫功能

ssm框架實現execl上傳,並插入資料庫功能

從前端最後到資料庫,分為頁面(jsp),Controller、service、mapper 。 比較簡單但是使用的方法,沒有封裝成工具類感覺太麻煩。

用到了poi解析execl,給出pom.xml

<!-- 		匯入execl jar包 -->
		<dependency>
		    <groupId>org.apache.poi</groupId>
		    <artifactId>poi</artifactId>
	    	<version>3.7</version>
	   </dependency>

頁面:(jsp),enctype="multipart/form-data"  上傳檔案必須寫, target="message" 為了插入成功之後能返回頁面資訊提示

<iframe id='message' name='message' style="display:none;"></iframe>插入成功,顯示提示資訊實現:建立iframe,屬性設定隱藏,將請求返回的資訊寫在裡面,在通過js獲取,彈窗顯示。

<div class="modal-body">
	<form id="fileForm" action="${ctx}" method="post" enctype="multipart/form-data"
target="message"> <input type="file" name="fileUser" accept="xls/xlsx"><br> </form> <iframe id='message' name='message' style="display:none;"></iframe> </div> <div class="modal-footer"> <button type="submit" class="btn btn-primary" data-dismiss="modal" id="submitFile">匯入短號</button> <button type="button" class="btn btn-default" data-dismiss="modal">關閉</button> </div>

js:

$(function() {
	$("#submitFile").click(function() {
		$("#fileForm").submit();
		$('#message').unbind('load').on('load', function() {
			var result = $("#message").contents().find('body').text();
			alert(result);
		});
	});
});co

Controller:

/**
	 * 匯入使用者
	 * 
	 * @param <HSSFWorkbook>
	 */
	@ResponseBody
	@RequestMapping(value = "/importShortTel")
	public String importTel(@RequestParam(value = "fileUser", required = false) MultipartFile file,
			HttpServletRequest request, HttpServletResponse response) {
		if (file == null) {
			return "獲取檔案失敗";
		}
		// 檔名
		String fileName = file.getOriginalFilename();
		// 路徑
		String path = request.getSession().getServletContext().getRealPath("upload");
		// 長度
		long size = file.getSize();
		if (fileName == null || ("").equals(fileName) && size == 0) {
			return "空檔案或者檔名字為空";
		}
		if (fileName.indexOf(".xls") > 0) {
			// 建立存放上傳檔案的資料夾
			File filePath = new File(path);
			if (!filePath.exists()) {
				filePath.mkdirs();
			}
			// 儲存
			File targetFile = new File(path, fileName);
			try {
				file.transferTo(targetFile);
				InputStream in = new FileInputStream(targetFile);

				HSSFWorkbook workbook = new HSSFWorkbook(in);// 建立對Excel工作薄
				HSSFSheet sheet = workbook.getSheetAt(0);
				// 呼叫Service,將資料插入Excel
				int i = shortTelService.importShortTel(sheet);
				if (i > 0) {
					return "匯入成功";
				} else {
					return "匯入失敗";
				}
			} catch (IOException e) {
				return "存在異常"+e.getMessage();
			}
		}
		return "空檔案或者檔案不是execl";
	}

service:獲取多少列以及每列的對應的類的屬性自己設定,行通過for迴圈讀取,讀取完成的是一個List集合,在Mapper裡會利用到批量插入

@Override
	public Integer importShortTel(HSSFSheet sheet) {
		// 獲取該工作表的第一行
		HSSFRow row = null;
		// 獲取該工作表的第一個單元格
		HSSFCell cell = null;

		// 存放短號的List
		List<ShortTel> shortTelList = new ArrayList<>();
		for (int i = 1; i <= sheet.getLastRowNum(); i++) {
			// 在迴圈裡面寫,List儲存的是引用,故在外邊寫會被覆蓋,物件的地址相同
			ShortTel tel = new ShortTel();
			row = sheet.getRow(i);

			// 數字取整
			DecimalFormat df = new DecimalFormat("0");

			// 獲取第I列 第一個單元格
			cell = row.getCell(0);
			if (null == cell) {
				continue;
			}
			if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {
				String number = df.format(cell.getNumericCellValue());
				if (number.equals("")) {
					continue;
				}
			} else {
				if (cell.getRichStringCellValue().getString().equals("")) {
					continue;
				}
			}
			String shortTel = "";
			if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {
				shortTel = df.format(cell.getNumericCellValue());
			} else {
				shortTel = cell.getRichStringCellValue().getString();
			}

			tel.setShortTel(shortTel);
			// 將放到list中
			shortTelList.add(tel);

		}

		return shortTelMapper.insertShortTelBatch(shortTelList);
	}

Mapper.xml

<insert id="insertShortTelBatch" parameterType="java.util.List">
		insert into short_tel(short_tel)
		values
		 <foreach collection="list" item="item"  separator=",">
		 	  (#{item.shortTel}) 
		 </foreach>	
	</insert>

到此 插入成功,返回插入行數,判斷是不是大於0,返回資訊,在前端提示使用者。

相關推薦

ssm框架實現execl插入資料庫功能

從前端最後到資料庫,分為頁面(jsp),Controller、service、mapper 。 比較簡單但是使用的方法,沒有封裝成工具類感覺太麻煩。用到了poi解析execl,給出pom.xml<!-- 匯入execl jar包 --> <depen

ssm框架實現圖片顯示(myeclips)

ssm框架實現圖片上傳並顯示 第一步:匯入common-io以及common-fileupload兩個jar包,儘量新一點,老的有可能出錯 第二步:配置圖片上傳儲存的位置,針對myeclips來說,開啟檔案D:\Java\MyEclipse.metadata.me_tcat\co

SSM框架實現圖片查詢資料庫中的圖片(多圖片請看下篇部落格)

第一步:首先要在我們的springMVC.xml檔案中新增上傳檔案解析器 <!-- 定義檔案上傳解析器 --> <bean id="multipartResolver" class="org.springfra

微信端調取相冊和攝像頭實現圖片到本地服務器

配置 epic 替換 pan source 工具 alert 調試 family 在微信公眾號網頁開發時,遇到了圖片上傳的問題,查看了微信的開發者文檔,裏面的資料比較全。接著我們看一下整個的流程 1、config權限配置 $.ajax({ url:‘wx_getC

MultipartRequest實現檔案修改檔名稱

用JSP+servlet實現檔案的上傳 一、編寫一個上傳的jsp頁面,這裡注意<form>屬性,編碼格式為enctype="multipart/form-data"格式,以二進位制形式提交資料,提交方式為post方式 <html> <

jquery 實現圖片在前端顯示出來

目前遇到一個圖片上上傳的需求,突然發現,原來之前都沒有做過此種類型的需求,以下是需求樣式: 看到需求後之所以有點懵,是因為我接觸到的檔案上傳,一般都是按鈕型別的,例如以下這種: 深呼吸,好好想一下,整理整理思路: 1.需要有一個虛線框,這裡為一個div元素 2.再有一個十字框(和文字說明一起,

WebForm實現文件預覽

image form ict itl lec nbsp style object 是否 實現效果: 頁面代碼: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inh

ssm 框架下的文件功能

quest let mail body ring upload gem 擴展 stream 這兩天在弄上傳文件(圖片或視頻)的功能 ,特記錄於此,其核心是字符串的拼接路徑。要求是:服務器上(Tomcat為例)保存上傳的圖片或視頻,數據庫中插入相對路徑。數據庫中的A表設置一個

PHP加JS實現分片斷點續

index ech start prevent control stat 選擇 pen append <!DOCTYPE html> <html> <head> <meta charset="U

yii框架實現檔案

yii框架實現檔案上傳 1.首先yii框架下載uploadFile類 2.html程式碼 <input type="file" class="file" style="display: none" name="business_license" /> 3.j

Linux搭建FTP服務實現不下載

筆者最近收到一個需求,搭建Linux上的Ftp服務,但是隻能上傳,不能下載,且使用者不能跳開Ftp,通過Sftp來獲得檔案。大致看了些網上分享。通過配置,完成這個“奇葩”需求。 首先跳開Ftp,使用Sftp那麼可以通過設定虛擬賬戶來實現。 其次Ftp上只上傳,不下載,那麼通過配置Ft

SSM框架——springmvc檔案和攔截器

檔案上傳 1.檔案上傳前提 form表單的enctype取值必須是:mutipart/form-data(預設值是:application/x-www-form-urlencoded) method屬性取值必須是Post 提供一個檔案選擇域 2.使用 Commo

java Ueditor 百度編輯器 整合ssm後臺多圖片無縫加入專案做新增儲存

效果圖  多圖片單圖片 上傳到後臺 本地儲存。編輯框回顯,複製貼上直接用,適合實際專案中做 內容發表,發表文章等等編輯自定義上傳圖片 多圖片到後臺路徑,看了網上一推教程,走了很多彎路,簡單明瞭 ,複製貼上直接用 專案地址 https://download.csdn.net/d

cropper.js 移動端圖片 裁剪 的功能實現

定好頁面  效果如圖 要求 點選 + 號之後  上傳圖片  裁剪之後 放在頁面上 實現 依賴  remodal 和 cropper.js  把裁剪的內容 放在remodal裡  點選 +

SSM框架之檔案

1.匯入檔案上傳的jar包 2.圖片不是存在資料庫中,而是存在某個目錄下面,然後返回一個路徑(找圖片的路徑)     資料庫只需要儲存該路徑即可。 3.springmvc是支援檔案上傳的     在springMVC中配置檔案上傳,並限制檔案上傳的大小         這裡一定要配置ID,並且ID的

SSH框架實現圖片

第一步,先寫上傳的jsp頁面upload.jsp,注意:一定要在form裡面加enctype="multipart/form-data" <!--在開頭加上這個,以防萬一--> <%@taglib prefix="s" uri="/struts-tags"%> <

Extjs附件實戰開發實現批量及線上預覽功能(二)

SWFUpload的使用:         SWFUpload採用czpae86的UploadPanel二次開發,在此鳴謝。         SWFUpload下載最新版本swfupload.swf.v2.5.0.beta3.2.zip,你會發現資料夾裡只有swfuploa

由SpringMVC實現檔案前端基於easyui

後臺控制層的方法參考部落格:http://blog.csdn.net/qciwyy/article/details/54017166 本部落格主要講解前臺方法(基於easyui的easyui-filebox控制元件) 一 .easyui-1.4.0前版本使用方法,在這之前e

koa框架實現檔案伺服器

koa有個好用的生成器koa-generator  ,npm install -g koa-generator 安裝之koa2 test_app生成專案,cd test_app進入目錄,npm inst

用SpringMVC框架實現圖片與下載

1、新建一個Maven webapp專案,引入需要用的夾包,pom.xml檔案的依賴包如下: <dependencies> <!-- 用於生成圖片的縮圖 --> <dependency> <g