从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的数据进行筛选,再发到控制端该怎么做,求指导

javaweb jsp页面上传excel文件

怎样将Excel文件导入数据库(在JSP环境下Java代码)

Java web项目从eclipse上移动到tomact服务器上,之路径更改,读取excel,把数据存到数据库

jsp导入excel到DB的问题