jxl解析excel表格
来源:互联网 发布:sql 新增字段默认值 编辑:程序博客网 时间:2024/04/27 08:49
基础工作要导入commons.fileupload.jar、commons.io-1.4.0.jar、jxl.jar
前台传入一个excel文件,后台在不向服务器保存excel文件的情况下,对excel进行解析,并处理其中数据
前台页面:
<form id="searchForm" method="post" action="/importProd" enctype="multipart/form-data"> <div class="import"> <p> <a href="javascript:void(0)" onclick="temple()">产品模板</a> <input type="file" name="importExcel" id="importExcel" value="浏览" class="validate[required]"> <p> <p style="margin-top:40px"> <button type="submit" class="btn btn-success">导入</button> </p> </div></form>
后台接受并处理:
a.后台接收的controller签名中使用@RequestParam标签来接收参数,用一个元素类型为MultipartFile类型的数组来接收
b.参数名称与前台页面input标签name名称一致
@RequestMapping(value = "/importProd",produces = "text/plain;charset=UTF-8") @ResponseBody public String importProd(@RequestParam MultipartFile[] importExcel,MultipartHttpServletRequest request,HttpServletResponse response) { String validateMsg = ""; try { if (importExcel != null && importExcel.length > 0) { for (int i = 0; i < importExcel.length; i++) {//循环上传的文件 MultipartFile file = importExcel[i]; // 保存文件 InputStream is = file.getInputStream();//将上传的文件直接写入InputStream输入流,不进行服务器保存操作 List<String> list = productListService.saveProd(is,params);//params为controller中定义的一个接收请求参数的全局变量 } } //String path = Global.getConfig("REFER_UPLOAD_ADDRESS"); response.setHeader("Content-type", "text/html;charset=UTF-8"); response.setCharacterEncoding("UTF-8"); response.getWriter().write("产品导入完成"); response.getWriter().flush(); return null; } catch (Exception e) { e.printStackTrace(); try { response.getWriter().write("产品导入失败,请检查是否已经导入."); response.getWriter().flush(); } catch (IOException e1) { e1.printStackTrace(); } } return null; }
public String saveProd(InputStream is,Map<String,String> params){ Workbook wb = null; try { wb = Workbook.getWorkbook(is);//通过InputStream输入流来获得excel文件 Sheet sheet = wb.getSheet(0);//wb.getSheet(n)为获取excel中的第几个sheet页,当有过个sheet页时需循环获取 List<String> list = new ArrayList<String>(); if(sheet!=null){ for (int i = 2; i < 10; i++) { Cell[] cells = sheet.getRow(i); list.add(cells[2].getContents());//取每行的第三个值 } } return list;
总结读取解析excel原理:
1、通过input标签上传excel文件,标签type=“file”,标签所在的form表单增加一个enctype=”multi-part/form-data”属性
2、后台controller使用@RequestParam标签来接收前台传来的文件请求,封装在与前台input标签name属性同名的请求参数中
3、由于未向服务器中做文件的存储操作,则直接利用file.getInpuStream()来获得输入流
4、从输入流中利用Workbook.getWorkbook(is)获取excel对象
5、分析excel对象:
一个excel对象包含n个sheet页,一个sheet包含n行记录,一行记录包含n个字段,
所以,特殊情况下,想解析获得字段值,需进行多层多层for循环嵌套
6、a、获取Excel对象
Workbook wb = Workbok.getWorkbook(is);
b、获取Excel中的sheet页
Sheet sheet = wb.getSheet(0);//下标为0时,获取第一个sheet页
c、获取某sheet页中的行
Cell[] cells = sheet.getRow(0);//下标为0时,获取sheet页的第一行
d、获取某行的第中的字段
cells[0].getContents();
- jxl解析excel表格
- jxl解析excel表格
- jxl解析excel表格代码
- jxl操作excel表格
- jxl(解析,写入)Excel表格~学习日记
- jxl解析excel
- JXL 解析EXCEL
- JXL对Excel解析
- java jxl解析excel
- JXL解析Excel
- java,jxl解析excel
- 使用jxl操作excel表格
- 使用jxl输出excel表格
- java jxl下载excel表格
- JXL应用-解析excel工具包
- java使用jxl解析Excel
- jxl创建、解析Excel-01
- Excel实战之JXL解析
- AngularJS实际项目应用——前端js框架以及库介绍
- Linux 查看CPU信息,机器型号,内存等信息
- CSS笔记摘抄及理解
- java io学习小结
- ios开发pch文件的注意事项
- jxl解析excel表格
- JAVA的静态变量、静态方法、静态类
- How To Verify the Word Size (32bit vs 64bit) of the Oracle Binary on MS Windows systems (文档 ID 46506
- JAVA设计模式之抽象工厂模式
- TCP建立连接三次握手和释放连接四次握手
- springmvc整合mybatis框架源码 bootstrap html5 mysql oracle maven SSM
- (c++)小乐同学学会了用程序做进制转换,异常高兴。小鹏为了不让他骄傲自满,决定出道难点的题目考考他。字母集A到Z,依次表示26到1,26个数字。也就是A=26,B=25...Z=1。他用这些字符来构
- CCNP-ACL访问控制表
- 关于pjax的一些坑