html文件代码如下:

  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title></title>
  6. <link href="${base}/financing/css/index.css" rel="stylesheet" type="text/css">
  7. <script type="text/javascript" src="${base}/financing/js/jquery.min.js"></script>
  8. <script type="text/javascript" src="${base}/financing/js/common.js"></script>
  9. <script type="text/javascript" src="${base}/financing/js/search.js"></script>
  10. <script type="text/javascript" src="${base}/financing/js/product.js"></script>
  11. <script type="text/javascript" src="${base}/financing/js/index.js"></script>
  12. </head>
  13. <body>
  14.  
  15. <form method="POST" enctype="multipart/form-data" id="form" action="${base}/upfile/poistudy.action">
  16. <input type="file" id="upfile" name="upfile">
  17. <input type="button" name="checkSAPmain" id="checkSAPmain" value="导入数据" onclick="submit();" Class="listLink" >
  18. </form>
  19. </body>
  20. <script>
  21. function submit(){
  22. var form = document.getElementById("form");
  23. form.submit();
  24. }
  25. </script>
  26. </html>

控制类(Controller文件poistudyAction):

  1. package cn.fulong.cgn.web.action.poistudy;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.util.List;
  6.  
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpSession;
  9.  
  10. import org.springframework.stereotype.Controller;
  11. import org.springframework.ui.Model;
  12. import org.springframework.web.bind.annotation.RequestMapping;
  13. import org.springframework.web.bind.annotation.RequestMethod;
  14. import org.springframework.web.multipart.MultipartFile;
  15. import org.springframework.web.multipart.MultipartHttpServletRequest;
  16.  
  17. import cn.fulong.common.web.action.BaseAction;
  18. import cn.fulong.entity.InfoVo;
  19. import cn.fulong.entity.SysUser;
  20. import cn.fulong.util.ImportExcelUtil;
  21.  
  22. @Controller
  23. @RequestMapping("/upfile")
  24. public class poistudyAction extends BaseAction {
  25.  
  26. /**
  27. * 解析excel
  28. * @throws Exception
  29. */
  30. @RequestMapping("/kkkk")
  31. public String kkk(Model model,HttpServletRequest request) throws Exception{
  32. System.out.println("123456789");
  33. return "/poistudy/upfile";
  34. }
  35.  
  36. @RequestMapping(value="/poistudy",method={RequestMethod.GET,RequestMethod.POST})
  37. public String top(Model model,HttpServletRequest request) throws Exception{
  38. MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
  39. System.out.println("通过传统方式form表单提交方式导入excel文件!");
  40.  
  41. InputStream in =null;
  42. List<List<Object>> listob = null;
  43. MultipartFile file = multipartRequest.getFile("upfile");
  44. if(file.isEmpty()){
  45. throw new Exception("文件不存在!");
  46. }
  47. in = file.getInputStream();
  48. listob = new ImportExcelUtil().getBankListByExcel(in,file.getOriginalFilename());
  49. in.close();
  50.  
  51. //该处可调用service相应方法进行数据保存到数据库中,现只对数据输出
  52. for (int i = 0; i < listob.size(); i++) {
  53. List<Object> lo = listob.get(i);
  54. InfoVo vo = new InfoVo();
  55. vo.setCode(String.valueOf(lo.get(0)));
  56. vo.setName(String.valueOf(lo.get(1)));
  57. vo.setDate(String.valueOf(lo.get(2)));
  58. vo.setMoney(String.valueOf(lo.get(3)));
  59.  
  60. System.out.println("打印信息-->机构:"+vo.getCode()+" 名称:"+vo.getName()+" 时间:"+vo.getDate()+" 资产:"+vo.getMoney());
  61. }
  62. return "/poistudy/upfile";
  63. }
  64.  
  65. }

实体类(InfoVo):

  1. package cn.fulong.entity;
  2.  
  3. public class InfoVo {
  4.  
  5. private String code;
  6. private String name;
  7. private String date;
  8. private String money;
  9.  
  10. public String getCode() {
  11. return code;
  12. }
  13. public void setCode(String code) {
  14. this.code = code;
  15. }
  16. public String getName() {
  17. return name;
  18. }
  19. public void setName(String name) {
  20. this.name = name;
  21. }
  22. public String getDate() {
  23. return date;
  24. }
  25. public void setDate(String date) {
  26. this.date = date;
  27. }
  28. public String getMoney() {
  29. return money;
  30. }
  31. public void setMoney(String money) {
  32. this.money = money;
  33. }
  34. }

工具类(ImportExcelUtil)

  1. package cn.fulong.util;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.text.DecimalFormat;
  6. import java.text.SimpleDateFormat;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9.  
  10. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  11. import org.apache.poi.ss.usermodel.Cell;
  12. import org.apache.poi.ss.usermodel.Row;
  13. import org.apache.poi.ss.usermodel.Sheet;
  14. import org.apache.poi.ss.usermodel.Workbook;
  15. import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  16.  
  17. public class ImportExcelUtil {
  18.  
  19. private final static String excel2003L =".xls"; //2003- 版本的excel
  20. private final static String excel2007U =".xlsx"; //2007+ 版本的excel
  21.  
  22. /**
  23. * 描述:获取IO流中的数据,组装成List<List<Object>>对象
  24. * @param in,fileName
  25. * @return
  26. * @throws IOException
  27. */
  28. public List<List<Object>> getBankListByExcel(InputStream in,String fileName) throws Exception{
  29. List<List<Object>> list = null;
  30.  
  31. //创建Excel工作薄
  32. Workbook work = this.getWorkbook(in,fileName);
  33. if(null == work){
  34. throw new Exception("创建Excel工作薄为空!");
  35. }
  36. Sheet sheet = null;
  37. Row row = null;
  38. Cell cell = null;
  39.  
  40. list = new ArrayList<List<Object>>();
  41. //遍历Excel中所有的sheet
  42. for (int i = 0; i < work.getNumberOfSheets(); i++) {
  43. sheet = work.getSheetAt(i);
  44. if(sheet==null){continue;}
  45.  
  46. //遍历当前sheet中的所有行
  47. System.out.println(sheet.getFirstRowNum());
  48. System.out.println(sheet.getLastRowNum());
  49. for (int j = sheet.getFirstRowNum(); j <=sheet.getLastRowNum(); j++) {
  50. row = sheet.getRow(j);
  51. if(row==null||row.getFirstCellNum()==j){continue;}
  52.  
  53. //遍历所有的列
  54. List<Object> li = new ArrayList<Object>();
  55. for (int y = row.getFirstCellNum(); y < row.getLastCellNum(); y++) {
  56. cell = row.getCell(y);
  57. li.add(this.getCellValue(cell));
  58. }
  59. list.add(li);
  60. }
  61. }
  62. // work.close();
  63. return list;
  64. }
  65.  
  66. /**
  67. * 描述:根据文件后缀,自适应上传文件的版本
  68. * @param inStr,fileName
  69. * @return
  70. * @throws Exception
  71. */
  72. public Workbook getWorkbook(InputStream inStr,String fileName) throws Exception{
  73. Workbook wb = null;
  74. String fileType = fileName.substring(fileName.lastIndexOf("."));
  75. if(excel2003L.equals(fileType)){
  76. wb = new HSSFWorkbook(inStr); //2003-
  77. }else if(excel2007U.equals(fileType)){
  78. wb = new XSSFWorkbook(inStr); //2007+
  79. }else{
  80. throw new Exception("解析的文件格式有误!");
  81. }
  82. return wb;
  83. }
  84.  
  85. /**
  86. * 描述:对表格中数值进行格式化
  87. * @param cell
  88. * @return
  89. */
  90. public Object getCellValue(Cell cell){
  91. Object value = null;
  92. DecimalFormat df = new DecimalFormat("0"); //格式化number String字符
  93. SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd"); //日期格式化
  94. DecimalFormat df2 = new DecimalFormat("0.00"); //格式化数字
  95.  
  96. switch (cell.getCellType()) {
  97. case Cell.CELL_TYPE_STRING:
  98. value = cell.getRichStringCellValue().getString();
  99. break;
  100. case Cell.CELL_TYPE_NUMERIC:
  101. if("General".equals(cell.getCellStyle().getDataFormatString())){
  102. value = df.format(cell.getNumericCellValue());
  103. }else if("m/d/yy".equals(cell.getCellStyle().getDataFormatString())){
  104. value = sdf.format(cell.getDateCellValue());
  105. }else{
  106. value = df2.format(cell.getNumericCellValue());
  107. }
  108. break;
  109. case Cell.CELL_TYPE_BOOLEAN:
  110. value = cell.getBooleanCellValue();
  111. break;
  112. case Cell.CELL_TYPE_BLANK:
  113. value = "";
  114. break;
  115. default:
  116. break;
  117. }
  118. return value;
  119. }
  120.  
  121. }

使用的是Spring MVC 但是其他的MVC框架和Spring MVC差不多的.

POI所用的jar包:http://pan.baidu.com/s/1eRYC6o6

POI插件使用读取office文件的更多相关文章

  1. Java实现word文档在线预览,读取office文件

    想要实现word或者其他office文件的在线预览,大部分都是用的两种方式,一种是使用openoffice转换之后再通过其他插件预览,还有一种方式就是通过POI读取内容然后预览. 一.使用openof ...

  2. .NET读取Office文件内容(word、excel、ppt)

    引用命名空间 using Microsoft.Office.Core; using Word = Microsoft.Office.Interop.Word; using Excel = Micros ...

  3. 使用Apache下poi创建和读取excel文件

    一:使用apache下poi创建excel文档 @Test /* * 使用Apache poi创建excel文件 */ public void testCreateExcel() { // 1:创建一 ...

  4. 在线读取office 文件(Word excel 等)

    https://view.officeapps.live.com/op/view.aspx?src=http://www.xxx.com/uploadfile/app/11.xls src 后面的网址 ...

  5. java 解析office文件 大全

    原文地址:http://ansjsun.iteye.com/blog/791142 读取OFFICE文件纯文本 package org.css.resource.businesssoft.search ...

  6. Office文件的实质是什么

    Office文件的实质是什么 一.总结 一句话总结:对于一个Microsoft Office文件,其实质是一个Windows复合二进制文件(Windows Compound Binary File), ...

  7. Office文件的奥秘——.NET平台下不借助Office实现Word、Powerpoint等文件的解析

    Office文件的奥秘——.NET平台下不借助Office实现Word.Powerpoint等文件的解析 分类: 技术 2013-07-26 15:38 852人阅读 评论(0) 收藏 举报 Offi ...

  8. Office系列(1)---将Office文件(Word、PPT、Excel)转换为PDF文件

    需求: 将Office文件作为文章并在网页上预览,主要为(Word.PPT.Excel)3种类型文件. 研究了一下,找到了两种解决方案 直接调用微软的在线预览功能实现(预览前提:预览资源必须可以直接通 ...

  9. 分别用Java和JS读取Properties文件内容

    项目中经常用到的配置文件,除了XML文件之外,还会用到Properties文件来存储一些信息,例如国际化的设置.jdbc连接信息的配置等.有时候也会把一些路径或者sql语句放到Properties中, ...

随机推荐

  1. 【IOS开发】UItextfield输入电话号码,自动调整格式

    UItextfield中实现输入电话号码,自动按位置在加“—”效果.效果图如下. 核心代码: -(BOOL)textField:(UITextField *)textField shouldChang ...

  2. D12

    orz!=-=今天莫名爆人品..表示受到了惊吓.. 一下子从rank20-30+,突然间蹦到了rank3..=-=可怕.. 或许是因为T1有看过啊类似的啊..然后T3又被40指点了一下,T2打了个暴力 ...

  3. C#编译器闭包机制

    背景 C# 在编译器层面为我们提供了闭包机制(Java7 和 Go 也是这种思路),本文简单的做个解释. 背景知识 你必须了解:引用类型.值类型.引用.对象.值类型的值(简称值). 关于引用.对象和值 ...

  4. SVN版本冲突解决详解

    SVN版本冲突解决详解 分类: SVN(SubVersion)2009-11-23 15:45 27014人阅读 评论(12) 收藏 举报 svnsubversion服务器文档工作c 版本冲突原因: ...

  5. Hive查询结果批量插入分区

    在hive的数据建表时,为了查询的高效性,我们经常会对表建立分区,例如下面的表 create external table dm_fan_photo_icf_basic(user string, it ...

  6. 寻找最大的k个数

    这个题目是非常经典的一个题目,解法也有很多,现在就把我已经理解的解法记录下来. 题目描述 有n个无序的数,它们各不相等,怎样选出其中的最大的k个数呢? 题目分析: 解法1: 最容易想到的就是把n个数进 ...

  7. [笔记] OS X and iOS 内核开发

    一.KEXT包的安全性说明 KEXT 程序包及其包含的所有文件及文件夹必须属于 root 用户(用户 id 是 0) KEXT 程序包及其包含的所有文件及文件夹必须属于 wheel 组(组 id 是 ...

  8. Cocos2d学习之路三(使用Zwoptex创建精灵表单和CCAnimate动画)

    创建精灵表单: 创建动画先要把图片整合到一个图片上然后生成plist文件: 方法下载Zwoptex软件:http://www.zwopple.com/zwoptex/ 然后打开选择 create ne ...

  9. match in shell scripts

    for iter_ in $(seq 1 $END); do strLabel=`expr $i \* 200` echo $strLabel done

  10. UML在需求分析与系统设计中之实战讲解

    UML在需求分析与系统设计中之实战讲解(完整UML图形演示) 小序: 从学生时代就接触到UML,几年的工作中也没少使用,各种图形的概念.图形的元素和属性,以及图形的画法都不能说不熟悉.但是怎样在实际中 ...