- 浏览: 1589680 次
- 来自: 上海
文章分类
- 全部博客 (374)
- Java (101)
- Struts (54)
- Oracle (30)
- JavaScript (16)
- Spring (27)
- Hibernate (16)
- MyEclipse (3)
- JSF (1)
- FreeMarker (2)
- SiteMesh (2)
- JfreeChart (2)
- Ibatis (2)
- JSP (12)
- MyBatis (4)
- SWFupload (1)
- EJB (4)
- Jboss (4)
- WebService (2)
- Linux (16)
- Android (2)
- XML (6)
- Java 网络编程 (13)
- AXIS2 (1)
- FTP (1)
- Jswing (1)
- Socket (3)
- 杂文选集 (6)
- solr (2)
- PS (1)
- Tomcat (7)
- JDBC (9)
- Highcharts (1)
- maven (1)
- Nodejs (0)
- navicat (2)
- Exception (5)
- eclipse (3)
- jQuery (1)
- springMVC (4)
- MySQL (11)
- SVN (1)
- Sql Server (1)
- zookeeper (1)
- JVM (1)
- Groovy (2)
- Git (1)
- Nginx (1)
- DynamicReport (1)
- IDEA (2)
- JasperReports (1)
- Postgresql (2)
- Mac (1)
- gradle (1)
- 数据结构算法 (1)
最新评论
-
hpu145:
引用引用
java 千分位的添加和去除 -
被遗忘的下路:
少了个junit-4.8.2的包
SSH2整合完整案例(四十三) -
白天看黑夜:
java过滤emoji字符处理,希望能帮到你http://ww ...
emoji 表情图片解决方法 -
caipeiming:
这个挺好JavaScript实现input输入框控件只允许输入 ...
js 控制文本框只能输入中文、英文、数字等 -
双子树:
东西太好啦受教啊
Struts2 JSP中将list,set ,Map传递到Action然后<s:iterator>遍历(三十五)
1.上传省略
2.得到文件后,采用POIFSFileSystem 进行解析
解析每一列的数据
3.
4.使用上面的解析出来的数据
poi-3.6 不支持 2007 的excel 3.7 就可以了
2.得到文件后,采用POIFSFileSystem 进行解析
/*** @return 批量调整用户财富 */ public String batchRegulateMoneybag(){ HttpServletRequest request=this.getRequest(); try { if(file!=null){ //判断文件是否为空 不为空 就进行解析 User sessionuser = (User) request.getSession(true).getAttribute(Constants.SESSION_USER); //Excel 2003 if(file.getContentType()!=null && "application/vnd.ms-excel".equals(file.getContentType())){ POIFSFileSystem poiFileSystem = new POIFSFileSystem(file.getInputStream()); //得到文档对象 HSSFWorkbook workbook = new HSSFWorkbook(poiFileSystem); //得到第一个表单 HSSFSheet aSheet = workbook.getSheetAt(0); String msg=""; if (aSheet == null) { logger.error("workbook.getSheetAt(0) is null!"); msg="上传的文档中没有内容!"; return SUCCESS; } //得到最后一行的 行号 int lastRow = aSheet.getLastRowNum(); if(lastRow > 5000){ msg= "文档记录超过了5000条,请拆分文档,<B>拆分时请保证同一订单号的订单在一个文件里</B>"; request.setAttribute("msg", msg); return SUCCESS; } //存放错误信息的集合 List<String> errorList=new ArrayList<String>(); //从0 开始 跳过第一列(不处理表头) int amount=lastRow; //调整记录成功的条数 int samount=0; //调整失败的记录数 int famount=0; //循环取出每行 然后 循环每一列 for(int i=1;i<=lastRow;i++){ HSSFRow row=aSheet.getRow(i); //得到 第 n 行 int lastCell=row.getLastCellNum(); //得到 n行的总列数 if(lastCell!=6){ //不是 6 的就有问题 errorList.add("第【"+(row.getRowNum()+1)+"】行,总列数不正确!"); famount++; continue; //结束这次循环 }else{ boolean flag=true; //默认是执行 调整的 如果 用户名为空就不执行了 String [] params=new String[6]; //用户保存 一行记录中的 6个值 for(int j=0;j<lastCell;j++){ HSSFCell cell= row.getCell(j); //得到每行 第 n列 if(j==0 && cell==null){ //判断第一个用户名是否为空 如果为空 就跳出这次循环 不进行用户 errorList.add("第【"+(row.getRowNum()+1)+"】行【"+(j+1)+"】列,用户名为空!"); famount++; flag=false; break; }else{ String param= getCellValue(cell); //解析当前列的值 params[j]=param; } } if(flag){ //经过上面的处理后 获取到每一行的 6个值 然后进行 修改 用户的财富 int result=upUsermoneyBag(sessionuser,params); if(result==1){ samount++; }else if(result==0){ errorList.add("第【"+(row.getRowNum()+1)+"】行,调整财富失败!"); famount++; }else if(result==-1){ errorList.add("第【"+(row.getRowNum()+1)+"】行,用户名不存在!"); famount++; } } } } request.setAttribute("amount", amount); request.setAttribute("famount", famount); request.setAttribute("samount", samount); request.setAttribute("errorList", errorList); } } } catch (Exception e) { e.printStackTrace(); } return SUCCESS; }
解析每一列的数据
3.
/** * @author LuoB. * @return 得到当前列的值 */ private String getCellValue(HSSFCell cell){ String param=""; if(cell==null){ param="0"; }else{ int type=cell.getCellType(); switch (type) { case 0: Double d=cell.getNumericCellValue(); param=d.toString(); break; case 1: param=cell.getStringCellValue(); break; default: param="0"; break; } } return param; }
4.使用上面的解析出来的数据
/** * @param sessionuser 操作者 * @param params Excel表格中 一行的 6列值 * @return 1 成功 0 失败 -1 不存在这个用户 */ private int upUsermoneyBag(User sessionuser,String [] params){ try{ if(params.length==6){ BiUser user=iBiUserService.findBiUserByName(params[0]); Double cashback=Util.parseDouble(params[1]); /*String cstr=params[2]; cstr=cstr.contains(".")?cstr.substring(0,cstr.indexOf(".")):cstr;*/ Long credits=Util.parseLong(params[2]); Double nscashback=Util.parseDouble(params[3]); /*String nscstr=params[4]; nscstr=nscstr.contains(".")?nscstr.substring(0,nscstr.indexOf(".")):nscstr;*/ Long nscredits=Util.parseLong(params[4]); String note=params[5]; if(user != null){ BiMessage biMessage = new BiMessage(); biMessage.setContent(sessionuser.getUsername()+"调整用户“"+user.getLoginname()+"”的财富,现金"+(cashback+nscashback)+",贝壳"+(credits+nscredits)+" 。用户的IP是"+user.getYahooim()+",用户最后登录时间"+MyUtils.getTimeString(user.getLastlogin())); biMessage.setTitle(user.getLoginname() + "调整财富提醒"); biMessage.setType("sys"); biMessage.setFromuser("系统"); biMessage.setTouser("购物狂"); biMessage.setTouserid(19717165l); biMessage.setDownflag("0"); iMessageService.sendTextMsg(biMessage); iBiUserService.regulateMoneybag(user, cashback, credits,nscashback,nscredits, sessionuser.getUsername(), note); return 1; } else{ return -1; } } return 0; }catch(Exception e){ e.printStackTrace(); return 0; } }
poi-3.6 不支持 2007 的excel 3.7 就可以了
- poi-3.6-20091214.jar (1.5 MB)
- 下载次数: 154
发表评论
-
检测一个字符串是否在jvm的常量池中
2018-12-18 17:34 997public static boolean inPool( ... -
UTC时间, GMT时间 ,夏令时
2017-08-18 15:12 2281经常混淆于此,特地研究了一下,记录在此以备忘。 整个地 ... -
java 反射List
2017-02-18 01:58 5653package com.enhance.reflect; ... -
JDK1.5 Exchange 两个线程互换数据
2016-08-04 18:00 985import java.util.concurrent ... -
JDK1.5 CountDownLatch
2016-08-04 16:25 1055/* * 还有一个利用场景: ... -
java CyclicBarrier 循环障碍阻塞
2016-08-03 23:54 1008//一个同步辅助类,它允许一组线程互相等待,直到到达某个公 ... -
java 信号灯 Semaphore
2016-08-03 23:53 1823更多介绍http://blog.csdn.net/java20 ... -
java 使用读写锁设计一个缓存模型
2016-08-03 23:49 1416import java.util.HashMap; ... -
java 读写锁
2016-08-03 23:46 814import java.util.Random; i ... -
java 多个线程之间同步通信
2016-08-02 17:16 2396import java.util.concurrent ... -
jdk1.5 锁 Lock 和 Condition
2016-08-02 17:03 924// lock 练习 public class Lock ... -
JDK1.5 获取线程执行结果 Callable Future
2016-08-02 15:08 1172import java.util.Random; i ... -
JDK1.5 线程池
2016-08-02 14:48 801import java.util.concurrent ... -
java 多线程ThreadLocal
2016-08-02 00:13 1145import java.util.Random; ... -
java 定时器 Timer
2016-08-01 16:53 3891import java.util.Calendar; ... -
java 多线程同步+通信
2016-08-01 16:48 964/** *父子线程 交替打印10 次, 100次 ... -
java 线程同步
2016-08-01 16:43 1021import java.util.concurrent.l ... -
java多线程练习
2016-08-01 16:35 1839Java 传统多线程 Java 多线程同步 Java 多线 ... -
java 传统多线程
2016-08-01 16:34 1004/** * 传统多线程 */ public ... -
java 图片,剪切,缩放
2016-01-06 10:21 2230package out; import ja ...
相关推荐
Java解析Excel源码主要涉及到的是使用Java处理Microsoft Excel文件的技术,这一技术在数据处理、数据分析以及报表生成等场景中非常常见。在这个过程中,我们通常会使用Apache POI库,这是一个强大的开源API,专为...
然后,我们可以使用 `FileInputStream` 读取 Excel 文件,并使用 `POIFSFileSystem` 将其转换为 POI 可以识别的格式: ```java InputStream input = new FileInputStream("D:\\test.xls"); POIFSFileSystem fs = ...
【Java解析Excel的POI框架】是Apache Jakarta项目的一个组件,专门用于处理OLE2对象,尤其是Microsoft Excel文件。它的核心接口HSSF(Horrible Spreadsheet Format)提供了读取、写入和修改Excel文件的能力,使...
代码中展示了如何使用`BufferedInputStream`读取Excel文件,然后使用`POIFSFileSystem`和`HSSFWorkbook`来解析Excel文件的内容。 - `BufferedInputStream`:提供缓冲功能,提高读取效率。 - `FileInputStream`:...
- 使用 `POIFSFileSystem` 类来创建文件系统对象,然后通过这个对象创建 `HSSFWorkbook` 实例,从而可以访问 Excel 工作簿。 - `HSSFSheet` 的 `getSheetAt(0)` 方法获取第一个工作表,假设标题在第一行。 - `...
Java生成写入Excel文件是常见的数据导出需求,特别是在企业级应用中,如报表生成、数据分析等场景。在Java中,我们通常使用Apache POI库来处理Microsoft Office格式的文件,包括Excel。以下是对给定代码段的详细解析...
2. Excel数据处理:处理Excel文件涉及到读取和解析Excel文件中的数据。在文件中提到使用了POI库来处理Excel文件,具体是用到了POI中的HSSFWorkbook类来读取Excel文件。HSSFWorkbook是处理Excel 2007之前版本文件的一...
在IT领域,尤其是企业级应用开发中,处理Excel文件是常见的需求之一。Java作为广泛使用的编程语言,提供了多种库来实现对Excel文件的读写操作,其中较为流行的有Apache POI和JExcelAPI(jxl)。下面将详细解析基于...
`POIFSFileSystem`是Apache POI提供的用于处理Excel文件的类,它能够处理`.xls`格式的文件。接下来,通过`HSSFWorkbook`类加载工作簿对象,该对象代表了一个Excel文件。 ### 二、获取Excel中的数据 ```java ...
在示例代码中,我们首先使用 `FileInputStream` 获取 Excel 文件流,然后使用 `POIFSFileSystem` 将其解析为一个Workbook 对象。接着,我们可以使用 `HSSFWorkbook` 对象来获取 Excel 文件的所有Sheet。 遍历所有 ...
本文档将详细讲解如何使用Java语言来完成这一过程,包括读取Excel文件、解析Excel内容、以及将解析后的数据导入数据库的具体步骤。 #### 二、技术栈 1. **Java**: 编程语言。 2. **Apache POI**: 用于读写...
我们可以使用HSSFListener接口来解析Excel文件内容,该接口提供了许多方法来处理Excel文件的记录,例如processRecord()方法可以处理Excel文件的记录。 5. 将数据导入到数据库 最后,需要将解析后的数据导入到...
Java POI库是Apache软件基金会开发的一个开源项目,专门用于...通过这些步骤,你可以实现Java程序对Excel文件的完整解析和数据导入。根据实际需求,你还可以扩展功能,比如写入数据到Excel、处理更复杂的单元格格式等。
这里定义了三个构造函数,第一个构造函数接受一个输入流 `InputStream` 参数,并创建一个 `POIFSFileSystem` 对象来读取 Excel 文件,然后通过这个对象创建一个 `HSSFWorkbook` 工作簿实例。如果在创建过程中发生...
这两个库都提供了对Microsoft Excel文件的读写支持,但POI库功能更强大,支持更多的Excel版本和特性。 1. **jxl 库**: - `jxl` 是一个轻量级的库,适用于简单的Excel操作,如创建、读取和修改工作表。在上述代码...
同样地,Apache POI 提供了读取 Excel 文件的功能,通过解析文件中的数据,可以将其导入到数据库中。 ```java import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel....
本文将详细介绍如何使用Java及Apache POI库来读取Excel文件中的数据,并提供一段示例代码及其注释解析。 #### 二、准备工作 在开始编写代码之前,我们需要做一些准备工作: 1. **下载并导入POI包**:Apache POI是一...