SpringMVC 엑셀 업로드 및 해석 방법
XML 파일 설정
다시 spring 의 xml 파일 에 업로드 할 파일 의 크기 를 설정 합 니 다.
<!-- , 10M=10*1024*1024(B)=10485760 bytes -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="10485760" />
</bean>
JSP 인터페이스 설정
<div>
<form id="sourcefile" name="sourcefile" action="" method="post" enctype="multipart/form-data">
<input type="button" value=" " onClick="addAirLine()" />
<input style="margin-left: 20px;" id="source_file" name="sourceFile" type="file" value=" " />
<input style="margin-left: 20px;" data-loading-text=" " type="submit" value=" " onClick="upPolicy()">
<input style="margin-left: 20px;" type="submit" value=" " onClick="return downloadTemplate();">
</form>
</div>
js 파일
function upPolicy() {
document.sourcefile.action = "/login/policy/uploadCSV";
var submitUrl = document.getElementById("sourcefile").attributes["action"].value;
$.ajax({
type: "POST",
url: submitUrl,
data: $('#sourcefile').serialize(),
dataType: "json",
success: function (result) {
var json = JSON.parse(result);
if (json.flag == "0" || json.flag == "1") {
alert(tableJson.success);
return;
}
}
})
}
컨트롤 러 설정
@RequestMapping(value = "/uploadCSV" ,method = RequestMethod.POST)
@ResponseBody
public String uploadCSV(@RequestParam("sourceFile") MultipartFile sourceFile, HttpServletRequest request,HttpServletResponse response) throws IOException{
//
if (sourceFile==null) return null;
//
String name=sourceFile.getOriginalFilename();
// ( 0 null)
long size =sourceFile.getSize();
if (name==null ||("").equals(name) && size==0) return null;
// 。 : , 。
boolean b = batchImport(name,sourceFile);
JSONObject jsonObject=new JSONObject();
if(b){
jsonObject.put("flag",0);
jsonObject.put("success"," EXCEL !");
}else{
jsonObject.put("flag",1);
jsonObject.put("success"," EXCEL !");
}
return jsonObject.toString();
}
레이 어 링 이 그렇게 상세 하지 않 습 니 다.Controller 에서 처리 한 것 입 니 다.
public boolean batchImport(String name,MultipartFile file){
boolean b = false;
// EXCEL
ExcelUtils readExcel=new ExcelUtils();
// excel, 。
List<OTAPolicyModel> cpolicyList = readExcel.getExcelInfo(name ,file);
if(cpolicyList != null){
b = true;
}
// ( : cpolicyList ,
Mybatis foreach 。)
for(OTAPolicyModel customer:cpolicyList){
policyDao.insertOTAPolicy(customer);
}
return b;
}
도구 류 ExcelUtils.java즉,상기 방법 에서 readExcel.getExcelInfo(name,file);문장 호출 방법 및 기타 관련 방법
Apache POI 는 자바 프로그램 에 Microsoft Office 형식의 파일 을 읽 고 쓰 는 기능 을 제공 합 니 다.그러나 이것 은 먼저 엑셀 버 전 을 판단 하고 서로 다른 워 크 북 방식 을 선택해 야 한다(2003 버 전 은 HSSFWorkbook,2007 버 전 및 이상 은 XSSFWorkbook).그 밖 에 일반적으로 클 라 이언 트 사용자 가 업로드 한 파일 을 서버 의 로 컬 디스크 에 복사 한 다음 에 이 복사 파일 에서 읽 으 면 클 라 이언 트 의 네트워크 이상 이나 다른 상황 으로 인해 읽 을 때 발생 하 는 데이터 유실 이나 손상 을 피 할 수 있다.
package com.flight.inter.otaadapter.commons.util;
import com.flight.inter.otaadapter.model.OTAPolicyModel;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import java.io.*;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* Created by ling.zhang on 2016/12/29.
*/
public class ExcelUtils {
//
private int totalRows = 0;
//
private int totalCells = 0;
//
private String errorMsg;
//
public ExcelUtils(){}
//
public int getTotalRows() { return totalRows;}
//
public int getTotalCells() { return totalCells;}
//
public String getErrorInfo() { return errorMsg; }
/**
* EXCEL
* @param filePath
* @return
*/
public boolean validateExcel(String filePath){
if (filePath == null || !(WDWUtil.isExcel2003(filePath) || WDWUtil.isExcel2007(filePath))){
errorMsg = " excel ";
return false;
}
return true;
}
/**
* EXCEL ,
* @param
* @return
*/
public List<OTAPolicyModel> getExcelInfo(String fileName, MultipartFile Mfile){
// spring MultipartFile CommonsMultipartFile
CommonsMultipartFile cf= (CommonsMultipartFile)Mfile; //
File file = new File("D:\\fileupload");
// ( File , 。)
if (!file.exists()) file.mkdirs();
//
File file1 = new File("D:\\fileupload" + new Date().getTime() + ".xlsx");
//
try {
cf.getFileItem().write(file1);
} catch (Exception e) {
e.printStackTrace();
}
//
List<OTAPolicyModel> customerList=new ArrayList<OTAPolicyModel>();
//
InputStream is = null;
try{
//
if(!validateExcel(fileName)){
return null;
}
// 2003 2007
boolean isExcel2003 = true;
if(WDWUtil.isExcel2007(fileName)){
isExcel2003 = false;
}
//
is = new FileInputStream(file1);
// excel
customerList = getExcelInfo(is, isExcel2003);
is.close();
}catch(Exception e){
e.printStackTrace();
} finally{
if(is !=null)
{
try{
is.close();
}catch(IOException e){
is = null;
e.printStackTrace();
}
}
}
return customerList;
}
/**
* excel
* @param is
* @param isExcel2003 excel 2003 2007
* @return
* @throws IOException
*/
public List<OTAPolicyModel> getExcelInfo(InputStream is,boolean isExcel2003){
List<OTAPolicyModel> customerList=null;
try{
/** Workbook */
Workbook wb = null;
// excel 2003
if(isExcel2003){
wb = new HSSFWorkbook(is);
}
else{// excel 2007
wb = new XSSFWorkbook(is);
}
// Excel
customerList=readExcelValue(wb);
}
catch (IOException e) {
e.printStackTrace();
}
return customerList;
}
/**
* Excel
* @param wb
* @return
*/
private List<OTAPolicyModel> readExcelValue(Workbook wb){
// shell
Sheet sheet=wb.getSheetAt(0);
// Excel
this.totalRows=sheet.getPhysicalNumberOfRows();
// Excel ( )
if(totalRows>=1 && sheet.getRow(0) != null){
this.totalCells=sheet.getRow(0).getPhysicalNumberOfCells();
}
List<OTAPolicyModel> oTAPolicyModelList=new ArrayList<OTAPolicyModel>();
OTAPolicyModel oTAPolicyModel;
// Excel , 。
for(int r=1;r<totalRows;r++){
Row row = sheet.getRow(r);
if (row == null) continue;
oTAPolicyModel = new OTAPolicyModel();
try {
Thread.currentThread().sleep(1);
}catch (InterruptedException e){
e.printStackTrace();
}
oTAPolicyModel.setPolicyid(System.currentTimeMillis());
// Excel
for(int c = 0; c <this.totalCells; c++){
Cell cell = row.getCell(c);
if (null != cell){
if(c==0){
oTAPolicyModel.setSource(cell.getStringCellValue());//
}else if(c==1){
oTAPolicyModel.setVendee(cell.getStringCellValue());//
}else if(c==2){
int triptype=0;
if (cell.getStringCellValue()==" "){
triptype=0;
}else if (cell.getStringCellValue().equals(" ")){
triptype=10;
}else if (cell.getStringCellValue().equals(" ")){
triptype=20;
}else if (cell.getStringCellValue().equals(" ")){
triptype=11;
}else if (cell.getStringCellValue().equals(" ")){
triptype=12;
}else if (cell.getStringCellValue().equals(" ")){
triptype=21;
}else if (cell.getStringCellValue().equals(" ")){
triptype=22;
}
oTAPolicyModel.setTriptype(triptype);//
}else if(c==3){
oTAPolicyModel.setCarrier(cell.getStringCellValue());//
}else if(c==4){
oTAPolicyModel.setDepcity(cell.getStringCellValue());//
}else if(c==5){
oTAPolicyModel.setArrcity(cell.getStringCellValue());//
}else if(c==6){
oTAPolicyModel.setSalebegindatel(new BigDecimal(cell.getNumericCellValue()).setScale(0,BigDecimal.ROUND_HALF_DOWN).longValue());//
}else if(c==7){
oTAPolicyModel.setSaleenddatel(new BigDecimal(cell.getNumericCellValue()).setScale(0,BigDecimal.ROUND_HALF_DOWN).longValue());//
}else if(c==8){
oTAPolicyModel.setTravelbegindatel(new BigDecimal(cell.getNumericCellValue()).setScale(0,BigDecimal.ROUND_HALF_DOWN).longValue());//
}else if(c==9){
oTAPolicyModel.setTravelenddatel(new BigDecimal(cell.getNumericCellValue()).setScale(0,BigDecimal.ROUND_HALF_DOWN).longValue());//
}else if(c==10){
int cabintype=9;
if (cell.getStringCellValue().equals(" ")){
cabintype=9;
}else if (cell.getStringCellValue().equals(" ")){
cabintype=1;
}else if (cell.getStringCellValue().equals(" ")){
cabintype=2;
}else if (cell.getStringCellValue().equals(" ")){
cabintype=3;
}
oTAPolicyModel.setCabintype(cabintype);//
}else if(c==11){
oTAPolicyModel.setFdtype(cell.getStringCellValue().equals(" ")?1:2);//
}else if(c==12){
oTAPolicyModel.setCabin(cell.getStringCellValue());//
}else if(c==13){
oTAPolicyModel.setPricebegin(cell.getNumericCellValue());//
}else if(c==14){
oTAPolicyModel.setPriceend(cell.getNumericCellValue());//
}else if(c==15){
oTAPolicyModel.setLmoney(cell.getNumericCellValue());//
}else if(c==16){
oTAPolicyModel.setFpercent(cell.getNumericCellValue());//
}else if(c==17){
oTAPolicyModel.setFtpercent(cell.getNumericCellValue());//
}else if(c==18){
int carrierlimit=2;
if (cell.getStringCellValue().equals(" ")){
carrierlimit=1;
}else if (cell.getStringCellValue().equals(" ")){
carrierlimit=0;
}else if (cell.getStringCellValue().equals(" ")){
carrierlimit=2;
}
oTAPolicyModel.setCarrierlimit(carrierlimit);//
}else if(c==19){
int transport=2;
if (cell.getStringCellValue().equals(" ")){
transport=1;
}else if (cell.getStringCellValue().equals(" ")){
transport=0;
}else if (cell.getStringCellValue().equals(" ")){
transport=2;
}
oTAPolicyModel.setTransport(transport);//
}else if(c==20){
int sharedflight=2;
if (cell.getStringCellValue().equals(" ")){
sharedflight=1;
}else if (cell.getStringCellValue().equals(" ")){
sharedflight=0;
}else if (cell.getStringCellValue().equals(" ")){
sharedflight=2;
}
oTAPolicyModel.setSharedflight(sharedflight);//
}else if(c==21){
oTAPolicyModel.setPstatus(cell.getStringCellValue().equals(" ")?1:2);//
}else if(c==22){
int faretype=0;
if (cell.getStringCellValue().equals(" ")){
faretype=1;
}else if (cell.getStringCellValue().equals(" ")){
faretype=2;
}else if (cell.getStringCellValue().equals(" ")){
faretype=0;
}
oTAPolicyModel.setFaretype(faretype);//
}else if(c==23){
oTAPolicyModel.setLimitprice(new BigDecimal(cell.getNumericCellValue()).setScale(0,BigDecimal.ROUND_HALF_DOWN).longValue());//
}else if(c==24){
int limittransit=2;
if (cell.getStringCellValue().equals(" ")){
limittransit=2;
}else if (cell.getStringCellValue().equals(" ")){
limittransit=0;
}else if (cell.getStringCellValue().equals(" ")){
limittransit=1;
}
oTAPolicyModel.setLimittransit(limittransit);//
}else if(c==25){
oTAPolicyModel.setArrcity(cell.getStringCellValue());//
}else if(c==26){
int limitnation=2;
if (cell.getStringCellValue().equals(" ")){
limitnation=2;
}else if (cell.getStringCellValue().equals(" ")){
limitnation=0;
}else if (cell.getStringCellValue().equals(" ")){
limitnation=1;
}
oTAPolicyModel.setLimitnation(limitnation);//
}else if(c==27){
oTAPolicyModel.setArrcity(cell.getStringCellValue());//
}else if (c==28){
oTAPolicyModel.setUsername(cell.getStringCellValue());//
}
}
}
//
oTAPolicyModelList.add(oTAPolicyModel);
}
return oTAPolicyModelList;
}
}
도구 류 WDWUtil.java
package com.flight.inter.otaadapter.commons.util;
/**
* Created by ling.zhang on 2016/12/29.
*/
public class WDWUtil {
// @ : 2003 excel, true 2003
public static boolean isExcel2003(String filePath) {
return filePath.matches(“^.+\.(?i)(xls)$”);
}
//@ : 2007 excel, true 2007
public static boolean isExcel2007(String filePath) {
return filePath.matches("^.+\\.(?i)(xlsx)$");
}
}
설명:위의 코드 는 읽 기 편 의 를 위해 먼저 부모 방법 을 붙 이 고 나중에 하위 방법 을 붙 입 니 다.실제 코드 편집 에 서 는 하위 방법 을 먼저 편집 한 다음 에 부모 방법 을 편집 합 니 다.예 를 들 어 위 에 도구 류 의 코드 를 먼저 편집 한 다음 에 서비스 층 의 코드 를 편집 하고 마지막 에 컨트롤 러 의 코드 를 편집 해 야 합 니 다.이렇게 하면 전체 절차 가 됩 니 다.어서 가 져 가서 테스트 하 세 요.
더 많은 하 이 라이트 내용 은《봄 업로드 다운로드 특집》.을 클릭 하여 깊이 있 는 학습 과 연 구 를 진행 하 세 요.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ssm 프레임워크 업로드 이미지 로컬 및 데이터베이스에 저장 예시본고는 ssm 프레임워크 업로드 이미지를 로컬과 데이터베이스에 저장하는 예시를 소개하고 주로 Spring+SpringMVC+MyBatis 프레임워크를 사용하여 ssm 프레임워크 업로드 이미지의 실례를 실현했다. 구체...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.