當前位置:首頁 » 文件管理 » ajax上傳excel

ajax上傳excel

發布時間: 2022-06-28 03:36:49

A. java中利用poi生成excel,在頁面中如何使用ajax提交請求

簡單的poiEXCEL操作。部分代碼。嘿嘿
/**
* 創建標准模板
* @param request
* @param response
* @throws Exception
*/
private void createEXCELTemplet(HttpServletRequest request,
HttpServletResponse response) throws Exception {
HSSFWorkbook hssfworkbook = new HSSFWorkbook();
HSSFSheet hssfsheet = hssfworkbook.createSheet();
String downloadFileName = sellActivityTitle;
createSheetTableTile(hssfsheet,ExcelConstantTitle.sellActivityTitleMap,TEMPLET_CELL_COUNT);
downloadEXCEL(hssfworkbook, downloadFileName, request, response);
}
/**
* 提供下載
* @param hssfworkbook
* @param downloadFileName
* @param request
* @param response
* @throws Exception
*/
private void downloadEXCEL(HSSFWorkbook hssfworkbook,
String downloadFileName, HttpServletRequest request,
HttpServletResponse response) throws Exception {
try {
//設置response,下載附件頭設置
response.setContentType("application/vnd.ms-excel");
response.setHeader("content-disposition",
"attachment;filename=\""
+ new String(downloadFileName.getBytes("GBK"),
"ISO-8859-1") + "\";size="
+ hssfworkbook.getBytes().length);
OutputStream out = response.getOutputStream();
//將工作簿輸出到response
hssfworkbook.write(out);
out.flush();
out.close();
} catch (Exception e) {
throw new Exception(e);
}
}

/**
* 創建校驗數據之後的模板
*/
private void (HttpServletRequest request,
HttpServletResponse response,List list) throws Exception {
HSSFWorkbook hssfworkbook = new HSSFWorkbook();
HSSFSheet hssfsheet = hssfworkbook.createSheet();
// 創建正文
String downloadFileName = ;
createSheetTableTile(hssfsheet,ExcelConstantTitle.sellActivityTitleMap,VALIDATE_AFTER_CELL_COUNT);
//添加數據
addSheetContentList(hssfsheet,ExcelConstantTitle.sellActivityContentMap,list);

downloadEXCEL(hssfworkbook, downloadFileName, request, response);
}
/**
* 創建EXCEL表頭
* @param hssfsheet
* @param titleMap
* @param size
* @return
*/
private HSSFSheet createSheetTableTile(HSSFSheet hssfsheet,Map titleMap,int size){
// 創建正文
HSSFRow hssfrow = hssfsheet.createRow(0);
for (int i = 0; i < size; i++) {
// 設置列寬度
hssfsheet.setColumnWidth((short) i, (short) 4000);
HSSFCell hssfcell = hssfrow.createCell((short) i);
hssfcell.setEncoding(HSSFWorkbook.ENCODING_UTF_16);
switch (i) {
case 0:
hssfcell.setCellValue((String)titleMap.get(String.valueOf(i)));
break;
case 1:
hssfcell.setCellValue((String)titleMap.get(String.valueOf(i)));
break;
case 2:
hssfcell.setCellValue((String)titleMap.get(String.valueOf(i)));
break;
case 3:
hssfcell.setCellValue((String)titleMap.get(String.valueOf(i)));
break;
case 4:
hssfcell.setCellValue((String)titleMap.get(String.valueOf(i)));
break;
case 5:
hssfcell.setCellValue((String)titleMap.get(String.valueOf(i)));
break;
case 6:
hssfcell.setCellValue((String)titleMap.get(String.valueOf(i)));
break;
}
}
return hssfsheet;
}
/**
* 添加excel正文數據
*/
private HSSFSheet addSheetContentList(HSSFSheet hssfsheet,Map contentMap,List contentList){
for(int k = 0;k < contentList.size();k++){
HSSFRow hssfrow = hssfsheet.createRow(k+1);
for (int i = 0; i < VALIDATE_AFTER_CELL_COUNT; i++) {
Map map = (Map) contentList.get(k);
HSSFCell hssfcell = hssfrow.createCell((short) i);
hssfcell.setEncoding(HSSFWorkbook.ENCODING_UTF_16);
switch (i) {
case 0:
hssfcell.setCellValue((String)map.get(contentMap.get(String.valueOf(i))));
break;
case 1:
hssfcell.setCellValue((String)map.get(contentMap.get(String.valueOf(i))));
break;
case 2:
hssfcell.setCellValue((String)map.get(contentMap.get(String.valueOf(i))));
break;
case 3:
hssfcell.setCellValue((String)map.get(contentMap.get(String.valueOf(i))));
break;
case 4:
hssfcell.setCellValue((String)map.get(contentMap.get(String.valueOf(i))));
break;
case 5:
hssfcell.setCellValue((String)map.get(contentMap.get(String.valueOf(i))));
break;
case 6:
hssfcell.setCellValue((String)map.get(contentMap.get(String.valueOf(i))));
break;
}
}
}
return hssfsheet;
}
吧不知道能不能幫你,我也不動感我在csdn看看的。實在不行你在那問問。。。。。。。。。。。。。

B. ajax如何實時顯示後台的處理結果

方案1:
服務端收到excel處理請求,開始處理.

服務端解析Excel得到需要處理的項目數量.
完成一項A,返回A狀態信息以及附加信息,附加信息包括是否還有待處理任務,以及剩餘數量.同時處理進度/狀態要寫入資料庫.
前端接收到A狀態信息以及附加信息
當前端完成A狀態信息更新時候,服務端可能已經處理到D了,此時前端通過A的附加信息得到還有剩餘,繼續發起查詢請求,得到B~D狀態信息.
方案2:
websocket

C. struts2 如何通過ajax上傳文件

ajax是不能上傳文件的,一般做法是使用一個隱藏的iframe 來個傳,達到無刷新上傳的效果。
還有就是使用swf上傳控制項,swfUpload等

D. 怎麼樣通過jQuery Ajax實現上傳文件

Query Ajax在web應用開發中很常用,它主要包括有ajax,get,post,load,getscript等等這幾種常用無刷新操作方法,接下來通過本文給大家介紹jquery ajax 上傳文件處理方式。
FormData對象
XMLHttpRequest Level 2添加了一個新的介面FormData.利用FormData對象,我們可以通過JavaScript用一些鍵值對來模擬一系列表單控制項,我們還可以使用XMLHttpRequest的send()方法來非同步的提交這個」表單」.比起普通的ajax,使用FormData的最大優點就是我們可以非同步上傳一個二進制文件.
所有主流瀏覽器的較新版本都已經支持這個對象了,比如Chrome 7+、Firefox 4+、IE 10+、Opera 12+、Safari 5+。之前都是用原生js的XMLHttpRequest寫的請求
XMLHttpRequest方式
xhr.open("POST", uri, true);

xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
// Handle response.
alert(xhr.responseText); // handle response.
}
};
fd.append('myFile', file);
// Initiate a multipart/form-data upload
xhr.send(fd);

其實jquery的ajax也可以支持到的,關鍵是設置:processData 和 contentType 。
ajax方式

var formData = new FormData();
var name = $("input").val();
formData.append("file",$("#upload")[0].files[0]);
formData.append("name",name);
$.ajax({
url : Url,
type : 'POST',
data : formData,
// 告訴jQuery不要去處理發送的數據
processData : false,
// 告訴jQuery不要去設置Content-Type請求頭
contentType : false,
beforeSend:function(){
console.log("正在進行,請稍候");
},
success : function(responseStr) {
if(responseStr.status===0){
console.log("成功"+responseStr);
}else{
console.log("失敗");
}
},
error : function(responseStr) {
console.log("error");
}
});

E. JS怎樣用AJAX上傳文件

可以使用jquery的uploadfild插件,或者jquery upload插件進行附件上傳,兩種插件的實現原理差不多,可以進行參考。

F. 從jsp頁面上傳 excel文件 存到資料庫 用json做

不明白為啥指定json,我的建議是:
1、STRUTS文件標簽選擇並上傳EXCEL文件,示例代碼:
<html:form action="/uploadExcelFile/UploadExcelFileAction.go" enctype="multipart/form-data" method="post" onsubmit="return confirm_save()">
<table border="0" cellpadding="0" cellspacing="5" align="center" style="margin:50">
<tr>
<td align="right" nowrap > 請選擇Excel文件(.<%=excelType%>):</td>
<td align="right" colspan="3" valign="middle" nowrap ><html:file property="aircraftExcel" size="200" style="width:400;height:25" value=""></html:file></td>
</tr><tr>
<td></td>
<td align="right">Excel文件中標題(表頭)占行:</td>
<td align="left"><input name="topicRow" value="0" style="width:50" onKeyUp="value=value.replace(/[\D]/g,'')"/></td>
<TD align="right" nowrap title="上傳"><html:submit value="開始更新" style="height:25; width:70"></html:submit></TD>
</tr>
</table>
</html:form>
2、UploadExcelFileAction接收、寫入後台指定目錄(局部代碼)
FileOutputStream fos = null;
try {
//得到文件數據(數組)
byte[] fileDate = ff.getFileData();
//得到伺服器硬碟文件夾的絕對路徑
ServletContext application = this.getServlet().getServletContext();
String realPath = application.getRealPath("/");
if(excelType==null||excelType.equals("xlsx"))//默認生成2007以後版本格式
fos = new FileOutputStream(realPath+"aircraftExcelTable.xlsx");
else
fos = new FileOutputStream(realPath+"aircraftExcelTable.xls");
fos.write(fileDate);
fos.close();
if(excelType==null||excelType.equals("xlsx"))//默認生成2007以後版本格式
num=ReadExcelSaveToDB.ReadAndSaveNew(realPath+"aircraftExcelTable.xlsx",topicNumber);
else
num=ReadExcelSaveToDB.ReadAndSave(realPath+"aircraftExcelTable.xls",topicNumber);
if(num==-1){
session.setAttribute("forwardPage", currentPage);
session.setAttribute("prompt", "文件傳輸失敗或無法連接資料庫!");
return mapping.findForward("promptpage");
}else if(num==-2){
session.setAttribute("forwardPage", currentPage);
session.setAttribute("prompt", "Excel文件大於1000條或不能識別!重新製作Excel文件。");
return mapping.findForward("promptpage");
}else if(num==-3){
session.setAttribute("forwardPage", currentPage);
session.setAttribute("prompt", "Excel文件中包含非法字元(非數字),請修正後重試。");
return mapping.findForward("promptpage");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
3、解析讀取表數據(POI)並存入資料庫(局部代碼)
public static int ReadAndSave(String path,String topicNumber){
try {
File file=new File(path);
FileInputStream fs=new FileInputStream(file);
@SuppressWarnings("resource")
HSSFWorkbook workbook=new HSSFWorkbook(fs);
//一共有幾張表
int sheet_num=workbook.getNumberOfSheets();
setSheetNumber(0);
setProcess(0);//開始
//循環每個表
for(int i=0;i<sheet_num;i++){
HSSFSheet sheet=workbook.getSheetAt(i);
setSheetNumber(i+1);
if(sheet!=null&&sheet.getPhysicalNumberOfRows()!=0){
int topicNumberNum=Integer.parseInt(topicNumber);//越過首行的標題(如果有)
totalNumber=sheet.getPhysicalNumberOfRows()-topicNumberNum;
//循環各個行
for(int j=sheet.getFirstRowNum()+topicNumberNum;j<=sheet.getPhysicalNumberOfRows();j++){
HSSFRow row=sheet.getRow(j);
String aircraft=null;
//String aircraftType=null;
Double takeoffWeight=0.00;
Double payloadMax2=0.00;
int seatNumberMax2=0;
if(row!=null&&row.getPhysicalNumberOfCells()!=0){
switch(row.getCell(0).getCellType()){
case Cell.CELL_TYPE_STRING:
aircraft=(row.getCell(0).getStringCellValue()).trim();
break;
case Cell.CELL_TYPE_NUMERIC:
aircraft=String.valueOf(row.getCell(0).getNumericCellValue()).trim();
break;
}
//繼續處理其他單元格、行

//存入資料庫
AircraftTableActionForm atb=new AircraftTableActionForm();
if(aircraft!=null&&!aircraft.equals("")){
atb.setAircraft(aircraft);
//set其他值
updateByExcel(atb)!=-1

}

G. Ajax,提交帶上傳數據的表單,伺服器端接收不到啊,

sumi 這個元素的代碼貼來看下 。是form 中的name么。你可以alert($('sumi'))看下定位元素正確沒 。我估計沒正確 而且你的data 傳遞到後台的有錯吧。我一般是這樣寫的




$.ajax({
dataType:"json",
data:"post",
url:"/MyMember/RTaddLanguage",
data:{
resumeid:resumeid,
Language:Language,
Degree:Degree
},
success:function(result){
if(result.success){
document.getElementById("Language").value="";
document.getElementById("Degree").value="";
document.getElementById("LanguageIdHidden").value="";
varpagerLanguage0="";
for(vari=0;r<result.list.length;i++){
pagerLanguage0+="<divclass='jsborder'><divclass='ziliaobox'><divclass='textziliao'>";
pagerLanguage0+="<divclass='textziliaoNext'>語言:</div><divclass='textziliaoNextTwo'>"+result.list[i].Language+"</div>";
pagerLanguage0+="<divstyle='clear:both;'></div></div><divclass='textziliao'>";
pagerLanguage0+="<divclass='textziliaoNext'>程度:</div><divclass='textziliaoNextTwo'>"+result.list[i].Degree+"</div>";
pagerLanguage0+="<divstyle='clear:both;'></div></div><divstyle='clear:both;'></div></div><divclass='Delete'style='display:block;'>";
pagerLanguage0+="<divstyle='clear:both;'></div></div><divstyle='clear:both;'></div></div><divclass='Delete'style='display:block;'>";
}

}
else{}
},
error:function(){
alert("伺服器錯誤!");
}

H. ajax怎麼提交帶文件上傳表單

上傳的文件是沒有辦法和表單內容一起非同步的,可考慮使用jquery的ajaxfileupload,或是其他的插件,非同步上傳文件後,然後再對表單進行操作。

I. 求用java、ajax、jsp導入Excel的例子

目前,純AJAX,上傳不了——不過有JQuery上傳,請在網路,搜索 Jquery Ajax 上傳文件。

而excel 導入,請在知道上面,搜索 POI 導入Excel

J. 如何用ajax上傳文件

  1. 引入ajaxfileupload.js

jQuery.extend({


createUploadIframe:function(id,uri)
{
//createframe
varframeId='jUploadFrame'+id;

if(window.ActiveXObject){
vario=document.createElement('<iframeid="'+frameId+'"name="'+frameId+'"/>');
if(typeofuri=='boolean'){
io.src='javascript:false';
}
elseif(typeofuri=='string'){
io.src=uri;
}
}
else{
vario=document.createElement('iframe');
io.id=frameId;
io.name=frameId;
}
io.style.position='absolute';
io.style.top='-1000px';
io.style.left='-1000px';

document.body.appendChild(io);

returnio
},
createUploadForm:function(id,fileElementId)
{
//createform
varformId='jUploadForm'+id;
varfileId='jUploadFile'+id;
varform=$('<formaction=""method="POST"name="'+formId+'"id="'+formId+'"enctype="multipart/form-data"></form>');
varoldElement=$('#'+fileElementId);
varnewElement=$(oldElement).clone();
$(oldElement).attr('id',fileId);
$(oldElement).before(newElement);
$(oldElement).appendTo(form);
//setattributes
$(form).css('position','absolute');
$(form).css('top','-1200px');
$(form).css('left','-1200px');
$(form).appendTo('body');
returnform;
},
addOtherRequestsToForm:function(form,data)
{
//addextraparameter
varoriginalElement=$('<inputtype="hidden"name=""value="">');
for(varkeyindata){
name=key;
value=data[key];
varcloneElement=originalElement.clone();
cloneElement.attr({'name':name,'value':value});
$(cloneElement).appendTo(form);
}
returnform;
},

ajaxFileUpload:function(s){
//TODOintroceglobalsettings,,notonlytimeout
s=jQuery.extend({},jQuery.ajaxSettings,s);
varid=newDate().getTime()
varform=jQuery.createUploadForm(id,s.fileElementId);
if(s.data)form=jQuery.addOtherRequestsToForm(form,s.data);
vario=jQuery.createUploadIframe(id,s.secureuri);
varframeId='jUploadFrame'+id;
varformId='jUploadForm'+id;
//Watchforanewsetofrequests
if(s.global&&!jQuery.active++)
{
jQuery.event.trigger("ajaxStart");
}
varrequestDone=false;
//Createtherequestobject
varxml={}
if(s.global)
jQuery.event.trigger("ajaxSend",[xml,s]);
//Waitforaresponsetocomeback
varuploadCallback=function(isTimeout)
{
vario=document.getElementById(frameId);
try
{
if(io.contentWindow)
{
xml.responseText=io.contentWindow.document.body?io.contentWindow.document.body.innerHTML:null;
xml.responseXML=io.contentWindow.document.XMLDocument?io.contentWindow.document.XMLDocument:io.contentWindow.document;

}elseif(io.contentDocument)
{
xml.responseText=io.contentDocument.document.body?io.contentDocument.document.body.innerHTML:null;
xml.responseXML=io.contentDocument.document.XMLDocument?io.contentDocument.document.XMLDocument:io.contentDocument.document;
}
}catch(e)
{
jQuery.handleError(s,xml,null,e);
}
if(xml||isTimeout=="timeout")
{
requestDone=true;
varstatus;
try{
status=isTimeout!="timeout"?"success":"error";
//
if(status!="error")
{
//processthedata()
vardata=jQuery.uploadHttpData(xml,s.dataType);
//Ifalocalcallbackwasspecified,fireitandpassitthedata
if(s.success)
s.success(data,status);

//Firetheglobalcallback
if(s.global)
jQuery.event.trigger("ajaxSuccess",[xml,s]);
}else
jQuery.handleError(s,xml,status);
}catch(e)
{
status="error";
jQuery.handleError(s,xml,status,e);
}

//Therequestwascompleted
if(s.global)
jQuery.event.trigger("ajaxComplete",[xml,s]);

//HandletheglobalAJAXcounter
if(s.global&&!--jQuery.active)
jQuery.event.trigger("ajaxStop");

//Processresult
if(s.complete)
s.complete(xml,status);

jQuery(io).unbind()

setTimeout(function()
{ try
{
$(io).remove();
$(form).remove();

}catch(e)
{
jQuery.handleError(s,xml,null,e);
}

},100)

xml=null

}
}
//Timeoutchecker
if(s.timeout>0)
{
setTimeout(function(){
//
if(!requestDone)uploadCallback("timeout");
},s.timeout);
}
try
{
//vario=$('#'+frameId);
varform=$('#'+formId);
$(form).attr('action',s.url);
$(form).attr('method','POST');
$(form).attr('target',frameId);
if(form.encoding)
{
form.encoding='multipart/form-data';
}
else
{
form.enctype='multipart/form-data';
}
$(form).submit();

}catch(e)
{
jQuery.handleError(s,xml,null,e);
}
if(window.attachEvent){
document.getElementById(frameId).attachEvent('onload',uploadCallback);
}
else{
document.getElementById(frameId).addEventListener('load',uploadCallback,false);
}
return{abort:function(){}};

},

uploadHttpData:function(r,type){
vardata=!type;
data=type=="xml"||data?r.responseXML:r.responseText;
//Ifthetypeis"script",evalitinglobalcontext
if(type=="script")
jQuery.globalEval(data);
//GettheJavaScriptobject,ifJSONisused.
if(type=="json")
{
//,
//youhavetodeletethe'<pre></pre>'tag.
//ThepretaginChromehasattribute,sohavetouseregextoremove
vardata=r.responseText;
varrx=newRegExp("<pre.*?>(.*?)</pre>","i");
varam=rx.exec(data);
//thisisthedesireddataextracted
vardata=(am)?am[1]:"";//theonlysubmatchorempty
eval("data="+data);
}
//evaluatescriptswithinhtml
if(type=="html")
jQuery("<div>").html(data).evalScripts();
//alert($('param',data).each(function(){alert($(this).attr('value'));}));
returndata;
}
})

2.引入上傳文件所需的jar

7.獲取之後怎麼處理自己看著辦咯,我只能幫到這里了

熱點內容
androidstudio結構 發布:2025-01-16 06:39:22 瀏覽:245
五區布魯是什麼伺服器 發布:2025-01-16 06:35:13 瀏覽:865
androidhandler更新ui 發布:2025-01-16 06:21:28 瀏覽:171
java與mvc 發布:2025-01-16 06:20:40 瀏覽:333
lol最新刷金幣腳本 發布:2025-01-16 05:56:22 瀏覽:564
電腦登陸加密 發布:2025-01-16 05:21:57 瀏覽:153
安卓怎麼修復閃退 發布:2025-01-16 05:21:54 瀏覽:554
易盾加密 發布:2025-01-16 05:20:51 瀏覽:895
html上傳圖片的代碼 發布:2025-01-16 05:16:55 瀏覽:601
搭建伺服器租用電信的怎麼樣 發布:2025-01-16 05:12:32 瀏覽:50