简单Excel表格上传下载,POI
一、废话
Excel表格是office软件中的一员,几乎是使用次数最多的办公软件。所以在java进行企业级应用开发的时候经常会用到对应的上传下载便利办公。
目前,比较常用的实现Java导入、导出Excel的技术有两种Jakarta POI和Java Excel。
我最近使用的是POI进行上传下载。
官方主页http://poi.apache.org/index.html,API文档http://poi.apache.org/apidocs/index.html
二、正事
HSSF(用于操作Excel的组件)提供给用户使用的对象在rg.apache.poi.hssf.usermodel包中,有以下几种对象:
HSSFWorkbook excel的文档对象
HSSFSheet excel的表单
HSSFRow excel的行
HSSFCell excel的格子单元
HSSFFont excel字体
HSSFDataFormat 日期格式
HSSFHeader sheet头
HSSFFooter sheet尾(只有打印的时候才能看到效果)
HSSFCellStyle cell样式
HSSFDateUtil 日期
HSSFPrintSetup 打印
HSSFErrorConstants 错误信息表
其实Excel表格的操作类似于前端的TABLE操作:
HSSFWorkbook→HSSFSheet →HSSFRow→HSSFCell
(工作文档对象→列表单对象 →行对象→列对象)
然后可以插入文字,设置格式,设置字体等处理
下面演示一个小小的示范
//文件源对象
POIFSFileSystem fs=null;
//工作文档对象
HSSFWorkbook wb=null;
//工作表单对象
HSSFSheet sheet=null; fs=new POIFSFileSystem(new FileInputStream("D:/P1200/P1200/WebRoot/excel/"+filename+".xls"));
wb = new HSSFWorkbook(fs);
//获取第一个表单
sheet =wb.getSheetAt(0);
//获取第一行
HSSFRow row = sheet.getRow(0);
//获取第一行的第一列
HSSFCell cell = row.getCell(0);
//为得到的单元格对象赋值
cell.setCellValue("随意");
操作过程中需要记得几个要点:
第一:你操作的对象是建立在java中的对象所以最后要是用如下IO流进行实现
FileOutputStream fileOut = new FileOutputStream("D:/P1200/P1200/WebRoot/excel/"+filename+".xls");
wb.write(fileOut);
第二:注意每一个对象类似数组:也就是说起点是0;
第三:setCellValue()这个方法现在是不推荐使用;
现在给出一个SpringMVC上传实例;
@RequestMapping("/report")
public String report(@RequestParam("Excle")MultipartFile file,HttpServletRequest request){
//设置文件名,由系统时间生成比较难冲突,用来保存上传记录
String fileName=System.currentTimeMillis()+".xls";
String path = request.getSession().getServletContext().getRealPath("reportExcle");
//创建文档对象
File targetFile = new File(path,fileName);
//异常字符串
String EXCEPTION_PersonMsg=null;
//文档对象实例化
if(!targetFile.exists()){
targetFile.mkdirs();//递归创建父目录
}
try {
file.transferTo(targetFile);
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} HSSFWorkbook wb=null;
try {
POIFSFileSystem fs=new POIFSFileSystem(new FileInputStream("d:/P1200/P1200/WebRoot/reportExcle/"+fileName));
wb = new HSSFWorkbook(fs);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} //得到Excel工作表对象
HSSFSheet sheet = wb.getSheetAt(0); //校验可以不用看自己另外写 //与数据库进行交互
//通过循环遍历表中每行
for(i=1;i<sheet.getLastRowNum();i++){
Personalmsg bean=new Personalmsg();
HSSFRow row = sheet.getRow(i);
//通过循环遍历行中每列
for(int j=0;j<5;j++){
HSSFCell cell = row.getCell((short)j);
System.out.println(cell);
if(j==1&&cell!=null&&!cell.toString().trim().equals("")){
bean.setPersonMsgs(cell.toString()); }
if(j==2&&cell!=null&&!cell.toString().trim().equals("")){
bean.setPersonMsgNote(cell.toString());
}
if(j==3&&cell!=null&&!cell.toString().trim().equals("")){
bean.setPrice(Double.parseDouble(cell.toString()));
}
if(j==4){
bean.setPersonMsgDate(new Date());
bean.setStatus(1);
System.out.println(bean);
XXXXXXXX.save(bean);
} }
}
return "redirect:/test/PersonMsg/tolist.spring"; }
在使用上传过程中可以把上传文件直接转换成IO流不用保存源文件
在上传过程中应该避免以ajax技术提交文件,因为会与MultipartFile冲突导致找不到对应的Requestmapping
简单Excel表格上传下载,POI的更多相关文章
- 基于Spring Mvc实现的Excel文件上传下载
最近工作遇到一个需求,需要下载excel模板,编辑后上传解析存储到数据库.因此为了更好的理解公司框架,我就自己先用spring mvc实现了一个样例. 基础框架 之前曾经介绍过一个最简单的spring ...
- Java语言实现简单FTP软件------>上传下载队列窗口的实现(七)
1.首先看一下队列窗口的界面 2.看一下上传队列窗口的界面 3.看一下下载队列窗口的界面 4.队列窗口的实现 package com.oyp.ftp.panel.queue; import stati ...
- [SAP ABAP开发技术总结]客户端文本文件、Excel文件上传下载
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- ABAP EXCEL 文件上传下载 用SMW0
T-CODE: SMW0 在这里只介绍二进制数据,HTML模板的上传也一样. 另外也可以用CBO TABLE管理文件 可以看我另一个博文:CBO TABLE管理文件上传下载 选择 二进制 写包名: 进 ...
- 简单的FTP上传下载(java实现 swing界面)
/** *阅读前请自己在win7上建立FTP主机 *具体步骤如:http://jingyan.baidu.com/article/574c5219d466c36c8d9dc138.html * 然后将 ...
- 文件一键上传、汉字转拼音、excel文件上传下载功能模块的实现
----------------------------------------------------------------------------------------------[版权申明: ...
- Java语言实现简单FTP软件------>上传下载管理模块的实现(十一)
1.上传本地文件或文件夹到远程FTP服务器端的功能. 当用户在本地文件列表中选择想要上传的文件后,点击上传按钮,将本机上指定的文件上传到FTP服务器当前展现的目录,下图为上传子模块流程图 选择好要上传 ...
- java对excel表格上传和下载的处理方法
详见:http://www.jb51.net/article/120443.htm
- salesforce 零基础学习(四十二)简单文件上传下载
项目中,常常需要用到文件的上传和下载,上传和下载功能实际上是对Document对象进行insert和查询操作.本篇演示简单的文件上传和下载,理论上文件上传后应该将ID作为操作表的字段存储,这里只演示文 ...
随机推荐
- Java开发环境搭建——Maven配置
创建Java应用程序项目mvn archetype:generate -DgroupId=com.liq -DartifactId=firstApp -DarchetypeArtifactId=mav ...
- sql语法:inner join on, left join on, right join on详细使用方法
inner join(等值连接) 只返回两个表中联结字段相等的行 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有 ...
- 面试web前端开发,被打击了
今天我去面试web前端开发,被打击了,也跟我也有一定的关系,最基础的东西我都没回答好,哎! 主要是我在等我有意向的公司给我发offer,闲着没事,刚好又有公司叫我去面试,我抱着多面一家也没有啥子坏处就 ...
- .Net 中的反射(反射特性) - Part.3
反射特性(Attribute) 可能很多人还不了解特性,所以我们先了解一下什么是特性.想想看如果有一个消息系统,它存在这样一个方法,用来将一则短消息发送给某人: // title: 标题:author ...
- Python学习笔记——列表
1.创建列表类型数据并给其赋值 >>> aList = [123,'abc',4.56,['inner','list'],7-9j] >>> aList [123, ...
- PHP利用P3P实现跨域
本文转自:点这里 有别于JS跨域.IFRAME跨域等的常用处理办法,还可以利用P3P来实现跨域. P3P是什么 P3P(Platform for Privacy Preferences)是W3C公布的 ...
- 用<forEach>遍历list集合时,提示我找不到对象的属性
<c:forEach items="${list}" var="item"> <tr> <td>${item.UserId} ...
- [译]git的那些flag
git add -p console有一个交互式的界面(如下图),让你一个一个文件的选择是add还是不add.注意这些文件必须是tracked过的, 也就是说如果你的新的文件从来没有add过,那么他不 ...
- SQL SERVER 中 GO 的用法
用信号通知 Microsoft® SQL Server™ 实用工具一批 Transact-SQL 语句的结束.GO 不是 Transact-SQL 语句:而是可为 osql 和 isql 实用工具及 ...
- CF#138 div 1 A. Bracket Sequence
[#138 div 1 A. Bracket Sequence] [原题] A. Bracket Sequence time limit per test 2 seconds memory limit ...