基于struts2解析前端提交的Excel文档(小白篇)
首先看向前端
写一个最基础的form表单传入一个Excel文件
<form action = "../agent/agent.test.receiveExcel.action" enctype="multipart/form-data" method = "post" onsubmit = "return true" >
选择文件:
<input type="file" id="activityFile" name="activityFile"/>
<button id="dowmloadExcel" type="button" onclick="downLoadExcel();"><i class="fa fa-repeat"></i>下载模板</button>
<input type = "submit" value = "提交">
</form>
这就是这个表单运行出来的结果
有一个模板下载按钮,可以下载需要的Excel模板,在我前边的博文中有提到过此方法。然后就是普通的文件上传功能,在此可以上传各种文件,但是这次我们只上传Excel文件并解析出来。
注意form表单中 ***enctype=“multipart/form-data”***这个字段不能少 用于发送文件到后端的必须条件。然后就是注意from表单中传输文件的input中的名称。
然后就是通过struts2自动接收来自前端传来的文件。
接口:
//首先声名一个文件 和 文件的名称
private File activityFile;
private String activityFileFileName;
public File getActivityFile() {
return activityFile;
}
public void setActivityFile(File activityFile) {
this.activityFile = activityFile;
}
public String getActivityFileFileName() {
return activityFileFileName;
}
public void setActivityFileFileName(String activityFileFileName) {
this.activityFileFileName = activityFileFileName;
}
//然后写一个方法用于接收传来的Excel表格
public void ExcelAnalysis() throws IOException{
//在Struts中可以直接用文件的名称通过IO流去解析到对应的文件
InputStream inputStream = new FileInputStream(activityFile);
//struts解析前端传来的Excel 表格
XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
//取得第Sheet中第一个数据表
XSSFSheet sheet = workbook.getSheetAt(0);
//判断开头不能为空的
if(sheet.getPhysicalNumberOfRows() != 0) {
//遍历每一行
for(int i = 1; i<sheet.getPhysicalNumberOfRows();i++) {
//取得某一行
XSSFRow row = sheet.getRow(i);
//这一行的每一列遍历出来
for(int j = 0 ; j<row.getPhysicalNumberOfCells(); j++){
String str= row.getCell(j).toString();
System.out.print(str + " "); //依次打印在控制台
}
System.out.println(); //注意换行
}
这是适用于小白的struts的一篇博文,如果您有什么问题或者建议可直接留言讨论,欢迎指正。