从jsp页面上传 excel文件 存到数据库 用json做
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从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
} 参考技术A 你的意思是 ajax 提交excel实现上传功能吗? JSON 没听过
然后后台是什么呢? servlet + jsp? s2sh ? 还是Spring mvc 呢? 每种方式都不一样的. 再补充下问题. 参考技术B 可以用 poi这个工具包 获取上传的excel 在后台取出excel的值 封装成json数据 就可以写sql保存到数据库中了追问
我用poi读取了 但是封装的json不是知己想要的格式!
参考技术C 只需要将excel文件传入到相关服务器存储,然后用一个接口软件取excel文件将其解析提取数据通过数据库接口传入到数据库追问什么接口软件?
以上是关于从jsp页面上传 excel文件 存到数据库 用json做的主要内容,如果未能解决你的问题,请参考以下文章
怎样通过JSP页面上传个Excel文件,并实现Java读取EXCEL存入数据库
jsp 接收用户上传的excel,先对excle的数据进行筛选,再发到控制端该怎么做,求指导
怎样将Excel文件导入数据库(在JSP环境下Java代码)