简单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作为操作表的字段存储,这里只演示文 ...
随机推荐
- TypeScript Type Compatibility(类型兼容)
TypeScript中的类型兼容是基于结构归类的.在普通分类的相比之下,结构归类是一种纯粹用于将其成员的类型进行关联的方法.思考下面的代码: interface Named { name: strin ...
- [Android]Volley源码分析(四)
上篇中有提到NetworkDispatcher是通过mNetwork(Network类型)来进行网络访问的,现在来看一下关于Network是如何进行网络访问的. Network部分的类图:
- rails
http://ruby-toolbox.com/ ~/.gemrc --- :backtrace: false :benchmark: false :bulk_threshold: 1000 :sou ...
- API接口:分页
// 查询满足要求的总记录数 $count = M("back")->where($back_map)->count(); $pagecount = ceil($cou ...
- CSS3按钮效果
来自codepen,http://codepen.io/PalashSharma20/pen/YWBAgN 知识点:屏幕居中.transform.transition.transition-delay ...
- 为什么为 const 变量重新赋值不是个静态错误
const 和 let 的唯一区别就是用 const 声明的变量不能被重新赋值(只读变量),比如像下面这样就会报错: const foo = 1 foo = 2 // TypeError: Assig ...
- R语言:规划求解优化ROI
今天看到一篇文章介绍如何用excel建模对ROI 进行规划求解. 蓝鲸的网站分析笔记 成本 Cost 每次点击费用 CPC 点击量 \[clickRate = \frac{cost}{CPC}\] 转 ...
- uboot学习第一天
Windows操作系统BIOS(设置) Windows系统 文件系统 驱动程序 应用程序 linux操作系统bootloader(引导系统) kernel(内核) 文件系统 驱动程序 应用程序 交叉编 ...
- 微信"附近的人"新增商家公众号入驻功能
微信近日升级了“附近的人”,新增商家公众号(认证的服务号和有卡券功能的公众号)可自入驻,这是微信在推出卡券和微信wifi功能后,又一加强连接线下商户能力的功能. 微信在“附近的人”中 增加搜索商户功能 ...
- 《征服 C 指针》摘录4:函数 与 指针
一.指向函数的指针 函数名可以在表达式中被解读成“指向函数的指针”,因此,正如代码清单 2-2 的实验那样,写成 func 就可以取得指向函数的指针. “指向函数的指针”本质上也是指针(地址),所以可 ...