POI插件使用读取office文件
html文件代码如下:
- <!doctype html>
- <html>
- <head>
- <meta charset="utf-8">
- <title></title>
- <link href="${base}/financing/css/index.css" rel="stylesheet" type="text/css">
- <script type="text/javascript" src="${base}/financing/js/jquery.min.js"></script>
- <script type="text/javascript" src="${base}/financing/js/common.js"></script>
- <script type="text/javascript" src="${base}/financing/js/search.js"></script>
- <script type="text/javascript" src="${base}/financing/js/product.js"></script>
- <script type="text/javascript" src="${base}/financing/js/index.js"></script>
- </head>
- <body>
- <form method="POST" enctype="multipart/form-data" id="form" action="${base}/upfile/poistudy.action">
- <input type="file" id="upfile" name="upfile">
- <input type="button" name="checkSAPmain" id="checkSAPmain" value="导入数据" onclick="submit();" Class="listLink" >
- </form>
- </body>
- <script>
- function submit(){
- var form = document.getElementById("form");
- form.submit();
- }
- </script>
- </html>
控制类(Controller文件poistudyAction):
- package cn.fulong.cgn.web.action.poistudy;
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.List;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpSession;
- import org.springframework.stereotype.Controller;
- import org.springframework.ui.Model;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.multipart.MultipartFile;
- import org.springframework.web.multipart.MultipartHttpServletRequest;
- import cn.fulong.common.web.action.BaseAction;
- import cn.fulong.entity.InfoVo;
- import cn.fulong.entity.SysUser;
- import cn.fulong.util.ImportExcelUtil;
- @Controller
- @RequestMapping("/upfile")
- public class poistudyAction extends BaseAction {
- /**
- * 解析excel
- * @throws Exception
- */
- @RequestMapping("/kkkk")
- public String kkk(Model model,HttpServletRequest request) throws Exception{
- System.out.println("123456789");
- return "/poistudy/upfile";
- }
- @RequestMapping(value="/poistudy",method={RequestMethod.GET,RequestMethod.POST})
- public String top(Model model,HttpServletRequest request) throws Exception{
- MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
- System.out.println("通过传统方式form表单提交方式导入excel文件!");
- InputStream in =null;
- List<List<Object>> listob = null;
- MultipartFile file = multipartRequest.getFile("upfile");
- if(file.isEmpty()){
- throw new Exception("文件不存在!");
- }
- in = file.getInputStream();
- listob = new ImportExcelUtil().getBankListByExcel(in,file.getOriginalFilename());
- in.close();
- //该处可调用service相应方法进行数据保存到数据库中,现只对数据输出
- for (int i = 0; i < listob.size(); i++) {
- List<Object> lo = listob.get(i);
- InfoVo vo = new InfoVo();
- vo.setCode(String.valueOf(lo.get(0)));
- vo.setName(String.valueOf(lo.get(1)));
- vo.setDate(String.valueOf(lo.get(2)));
- vo.setMoney(String.valueOf(lo.get(3)));
- System.out.println("打印信息-->机构:"+vo.getCode()+" 名称:"+vo.getName()+" 时间:"+vo.getDate()+" 资产:"+vo.getMoney());
- }
- return "/poistudy/upfile";
- }
- }
实体类(InfoVo):
- package cn.fulong.entity;
- public class InfoVo {
- private String code;
- private String name;
- private String date;
- private String money;
- public String getCode() {
- return code;
- }
- public void setCode(String code) {
- this.code = code;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getDate() {
- return date;
- }
- public void setDate(String date) {
- this.date = date;
- }
- public String getMoney() {
- return money;
- }
- public void setMoney(String money) {
- this.money = money;
- }
- }
工具类(ImportExcelUtil)
- package cn.fulong.util;
- import java.io.IOException;
- import java.io.InputStream;
- import java.text.DecimalFormat;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.List;
- import org.apache.poi.hssf.usermodel.HSSFWorkbook;
- import org.apache.poi.ss.usermodel.Cell;
- import org.apache.poi.ss.usermodel.Row;
- import org.apache.poi.ss.usermodel.Sheet;
- import org.apache.poi.ss.usermodel.Workbook;
- import org.apache.poi.xssf.usermodel.XSSFWorkbook;
- public class ImportExcelUtil {
- private final static String excel2003L =".xls"; //2003- 版本的excel
- private final static String excel2007U =".xlsx"; //2007+ 版本的excel
- /**
- * 描述:获取IO流中的数据,组装成List<List<Object>>对象
- * @param in,fileName
- * @return
- * @throws IOException
- */
- public List<List<Object>> getBankListByExcel(InputStream in,String fileName) throws Exception{
- List<List<Object>> list = null;
- //创建Excel工作薄
- Workbook work = this.getWorkbook(in,fileName);
- if(null == work){
- throw new Exception("创建Excel工作薄为空!");
- }
- Sheet sheet = null;
- Row row = null;
- Cell cell = null;
- list = new ArrayList<List<Object>>();
- //遍历Excel中所有的sheet
- for (int i = 0; i < work.getNumberOfSheets(); i++) {
- sheet = work.getSheetAt(i);
- if(sheet==null){continue;}
- //遍历当前sheet中的所有行
- System.out.println(sheet.getFirstRowNum());
- System.out.println(sheet.getLastRowNum());
- for (int j = sheet.getFirstRowNum(); j <=sheet.getLastRowNum(); j++) {
- row = sheet.getRow(j);
- if(row==null||row.getFirstCellNum()==j){continue;}
- //遍历所有的列
- List<Object> li = new ArrayList<Object>();
- for (int y = row.getFirstCellNum(); y < row.getLastCellNum(); y++) {
- cell = row.getCell(y);
- li.add(this.getCellValue(cell));
- }
- list.add(li);
- }
- }
- // work.close();
- return list;
- }
- /**
- * 描述:根据文件后缀,自适应上传文件的版本
- * @param inStr,fileName
- * @return
- * @throws Exception
- */
- public Workbook getWorkbook(InputStream inStr,String fileName) throws Exception{
- Workbook wb = null;
- String fileType = fileName.substring(fileName.lastIndexOf("."));
- if(excel2003L.equals(fileType)){
- wb = new HSSFWorkbook(inStr); //2003-
- }else if(excel2007U.equals(fileType)){
- wb = new XSSFWorkbook(inStr); //2007+
- }else{
- throw new Exception("解析的文件格式有误!");
- }
- return wb;
- }
- /**
- * 描述:对表格中数值进行格式化
- * @param cell
- * @return
- */
- public Object getCellValue(Cell cell){
- Object value = null;
- DecimalFormat df = new DecimalFormat("0"); //格式化number String字符
- SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd"); //日期格式化
- DecimalFormat df2 = new DecimalFormat("0.00"); //格式化数字
- switch (cell.getCellType()) {
- case Cell.CELL_TYPE_STRING:
- value = cell.getRichStringCellValue().getString();
- break;
- case Cell.CELL_TYPE_NUMERIC:
- if("General".equals(cell.getCellStyle().getDataFormatString())){
- value = df.format(cell.getNumericCellValue());
- }else if("m/d/yy".equals(cell.getCellStyle().getDataFormatString())){
- value = sdf.format(cell.getDateCellValue());
- }else{
- value = df2.format(cell.getNumericCellValue());
- }
- break;
- case Cell.CELL_TYPE_BOOLEAN:
- value = cell.getBooleanCellValue();
- break;
- case Cell.CELL_TYPE_BLANK:
- value = "";
- break;
- default:
- break;
- }
- return value;
- }
- }
使用的是Spring MVC 但是其他的MVC框架和Spring MVC差不多的.
POI所用的jar包:http://pan.baidu.com/s/1eRYC6o6
POI插件使用读取office文件的更多相关文章
- Java实现word文档在线预览,读取office文件
想要实现word或者其他office文件的在线预览,大部分都是用的两种方式,一种是使用openoffice转换之后再通过其他插件预览,还有一种方式就是通过POI读取内容然后预览. 一.使用openof ...
- .NET读取Office文件内容(word、excel、ppt)
引用命名空间 using Microsoft.Office.Core; using Word = Microsoft.Office.Interop.Word; using Excel = Micros ...
- 使用Apache下poi创建和读取excel文件
一:使用apache下poi创建excel文档 @Test /* * 使用Apache poi创建excel文件 */ public void testCreateExcel() { // 1:创建一 ...
- 在线读取office 文件(Word excel 等)
https://view.officeapps.live.com/op/view.aspx?src=http://www.xxx.com/uploadfile/app/11.xls src 后面的网址 ...
- java 解析office文件 大全
原文地址:http://ansjsun.iteye.com/blog/791142 读取OFFICE文件纯文本 package org.css.resource.businesssoft.search ...
- Office文件的实质是什么
Office文件的实质是什么 一.总结 一句话总结:对于一个Microsoft Office文件,其实质是一个Windows复合二进制文件(Windows Compound Binary File), ...
- Office文件的奥秘——.NET平台下不借助Office实现Word、Powerpoint等文件的解析
Office文件的奥秘——.NET平台下不借助Office实现Word.Powerpoint等文件的解析 分类: 技术 2013-07-26 15:38 852人阅读 评论(0) 收藏 举报 Offi ...
- Office系列(1)---将Office文件(Word、PPT、Excel)转换为PDF文件
需求: 将Office文件作为文章并在网页上预览,主要为(Word.PPT.Excel)3种类型文件. 研究了一下,找到了两种解决方案 直接调用微软的在线预览功能实现(预览前提:预览资源必须可以直接通 ...
- 分别用Java和JS读取Properties文件内容
项目中经常用到的配置文件,除了XML文件之外,还会用到Properties文件来存储一些信息,例如国际化的设置.jdbc连接信息的配置等.有时候也会把一些路径或者sql语句放到Properties中, ...
随机推荐
- 【IOS开发】UItextfield输入电话号码,自动调整格式
UItextfield中实现输入电话号码,自动按位置在加“—”效果.效果图如下. 核心代码: -(BOOL)textField:(UITextField *)textField shouldChang ...
- D12
orz!=-=今天莫名爆人品..表示受到了惊吓.. 一下子从rank20-30+,突然间蹦到了rank3..=-=可怕.. 或许是因为T1有看过啊类似的啊..然后T3又被40指点了一下,T2打了个暴力 ...
- C#编译器闭包机制
背景 C# 在编译器层面为我们提供了闭包机制(Java7 和 Go 也是这种思路),本文简单的做个解释. 背景知识 你必须了解:引用类型.值类型.引用.对象.值类型的值(简称值). 关于引用.对象和值 ...
- SVN版本冲突解决详解
SVN版本冲突解决详解 分类: SVN(SubVersion)2009-11-23 15:45 27014人阅读 评论(12) 收藏 举报 svnsubversion服务器文档工作c 版本冲突原因: ...
- Hive查询结果批量插入分区
在hive的数据建表时,为了查询的高效性,我们经常会对表建立分区,例如下面的表 create external table dm_fan_photo_icf_basic(user string, it ...
- 寻找最大的k个数
这个题目是非常经典的一个题目,解法也有很多,现在就把我已经理解的解法记录下来. 题目描述 有n个无序的数,它们各不相等,怎样选出其中的最大的k个数呢? 题目分析: 解法1: 最容易想到的就是把n个数进 ...
- [笔记] OS X and iOS 内核开发
一.KEXT包的安全性说明 KEXT 程序包及其包含的所有文件及文件夹必须属于 root 用户(用户 id 是 0) KEXT 程序包及其包含的所有文件及文件夹必须属于 wheel 组(组 id 是 ...
- Cocos2d学习之路三(使用Zwoptex创建精灵表单和CCAnimate动画)
创建精灵表单: 创建动画先要把图片整合到一个图片上然后生成plist文件: 方法下载Zwoptex软件:http://www.zwopple.com/zwoptex/ 然后打开选择 create ne ...
- match in shell scripts
for iter_ in $(seq 1 $END); do strLabel=`expr $i \* 200` echo $strLabel done
- UML在需求分析与系统设计中之实战讲解
UML在需求分析与系统设计中之实战讲解(完整UML图形演示) 小序: 从学生时代就接触到UML,几年的工作中也没少使用,各种图形的概念.图形的元素和属性,以及图形的画法都不能说不熟悉.但是怎样在实际中 ...