后台为java,ssm框架
1、在SpringMvc.xml文件中增加Spring文件上传的解析器
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="10485760" />
<property name="resolveLazily" value="true" />
<property name="defaultEncoding" value="UTF-8" />
</bean>
2、添加依赖包
<!-- 文件传输 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
<!-- jxl -->
<!-- https://mvnrepository.com/artifact/net.sourceforge.jexcelapi/jxl -->
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.12</version>
</dependency>
3、微信小程序前端将Excel传到后台解析
wxml文件
<view class="button-sp-area">
<button formType="button" class="weui-btn weui-btn_plain-default" bindtap='getfile'>从本地选表格</button>
</view>
js文件
Page({
getfile: function() {
//从本地挑选文件
wx.chooseMessageFile({
count:1,
type: 'file',
success(res) {
var path = res.tempFiles[0].path;//文件资源地址
console.log(res)
wx.showModal({
title: '提示',
content: '确认您的选择:' + res.tempFiles[0].name,
success(res) {
if (res.confirm) {
console.log('用户点击确定')
//将文件传给开发者服务器
wx.uploadFile({
header: { "Content-Type": "multipart/form-data" },//类型
filePath: path,//文件路径
name: 'myfile',//文件名
url: 'http://localhost:8080/ssm/wechat/getExcel',//后台接口
success(res) {
console.log('传输成功')
}
})
} else if (res.cancel) {
console.log('用户点击取消')
}
}
})
}
})
},
})
后台Java
@RequestMapping("getExcel")
@ResponseBody
//这里value值与form中的input上传中的name相对应
public void getExcel(HttpServletRequest request, HttpServletResponse response)
throws UnsupportedEncodingException {
response.setContentType("text/html;charset=utf-8");
/*设置响应头允许ajax跨域访问*/
response.setHeader("Access-Control-Allow-Origin", "*");
/* 星号表示所有的异域请求都可以接受, */
response.setHeader("Access-Control-Allow-Methods", "GET,POST");
MultipartHttpServletRequest req = (MultipartHttpServletRequest) request;
MultipartFile file=req.getFile("myfile"); //与微信小程序的name一致(获取文件)
System.out.println("后台输出:"+file.getOriginalFilename());//打印出文件名
Workbook rwb;
try {
rwb = Workbook.getWorkbook(file.getInputStream());//将MultipartFile类型转成字节流,强转成(File)会报错
Sheet rs=rwb.getSheet(0);
int clos=rs.getColumns();//得到所有的列
int rows=rs.getRows();//得到所有的行
System.out.println(clos+" rows:"+rows);
for (int i = 0; i < rows; i++) {
for (int j = 0; j < clos; j++) {
//第一个是列数,第二个是行数
//默认最左边编号也算一列 所以这里得j++
System.out.print(rs.getCell(j, i).getContents()+"\t");
}
System.out.println();
}
} catch (BiffException | IOException e) {
e.printStackTrace();
}
}
4、结果
微信界面:
后台输出
excel文件