一、废话

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的更多相关文章

  1. 基于Spring Mvc实现的Excel文件上传下载

    最近工作遇到一个需求,需要下载excel模板,编辑后上传解析存储到数据库.因此为了更好的理解公司框架,我就自己先用spring mvc实现了一个样例. 基础框架 之前曾经介绍过一个最简单的spring ...

  2. Java语言实现简单FTP软件------>上传下载队列窗口的实现(七)

    1.首先看一下队列窗口的界面 2.看一下上传队列窗口的界面 3.看一下下载队列窗口的界面 4.队列窗口的实现 package com.oyp.ftp.panel.queue; import stati ...

  3. [SAP ABAP开发技术总结]客户端文本文件、Excel文件上传下载

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  4. ABAP EXCEL 文件上传下载 用SMW0

    T-CODE: SMW0 在这里只介绍二进制数据,HTML模板的上传也一样. 另外也可以用CBO TABLE管理文件 可以看我另一个博文:CBO TABLE管理文件上传下载 选择 二进制 写包名: 进 ...

  5. 简单的FTP上传下载(java实现 swing界面)

    /** *阅读前请自己在win7上建立FTP主机 *具体步骤如:http://jingyan.baidu.com/article/574c5219d466c36c8d9dc138.html * 然后将 ...

  6. 文件一键上传、汉字转拼音、excel文件上传下载功能模块的实现

    ----------------------------------------------------------------------------------------------[版权申明: ...

  7. Java语言实现简单FTP软件------>上传下载管理模块的实现(十一)

    1.上传本地文件或文件夹到远程FTP服务器端的功能. 当用户在本地文件列表中选择想要上传的文件后,点击上传按钮,将本机上指定的文件上传到FTP服务器当前展现的目录,下图为上传子模块流程图 选择好要上传 ...

  8. java对excel表格上传和下载的处理方法

    详见:http://www.jb51.net/article/120443.htm

  9. salesforce 零基础学习(四十二)简单文件上传下载

    项目中,常常需要用到文件的上传和下载,上传和下载功能实际上是对Document对象进行insert和查询操作.本篇演示简单的文件上传和下载,理论上文件上传后应该将ID作为操作表的字段存储,这里只演示文 ...

随机推荐

  1. 向shell脚本中传入参数

    写一个 程序名为    test.sh    可带参数为 start 和 stop 执行  test.sh start执行  start 内容的代码 执行 test.sh stop 执行 stop 内 ...

  2. IntelliJ IDEA For Mac 快捷键

    Mac键盘符号和修饰键说明 ⌘ Command ⇧ Shift ⌥ Option ⌃ Control ↩︎ Return/Enter ⌫ Delete ⌦ 向前删除键(Fn+Delete) ↑ 上箭头 ...

  3. 新手指南: Linux 新手应该知道的 26 个命令

    当你进入了 Linux 的世界,在下载.安装 了某个 Linux 发行版,体验了 Linux 桌面并安装了一些你喜爱和需要的软件之后,应该去了解下 Linux 真正的魅力所在:命令行.每一个 Linu ...

  4. win10 64位安装memcache扩展和开启redis扩展

    前面有关于win10下搭建wamp环境的介绍,在此不在赘述,php操作memcache有memcache库和memcached库,其中memcache是php内置的扩展库,支持面向对象和面向过程两种操 ...

  5. avalonjs

    var vm = avalon.define({ $id: "login", username: "", password: "", mes ...

  6. jvm

    -Xms128m表示JVM Heap(堆内存)最小尺寸128MB,初始分配-Xmx512m表示JVM Heap(堆内存)最大允许的尺寸256MB,按需分配. 说明:如果-Xmx不指定或者指定偏小,应用 ...

  7. win7下安装和使用Windows XP Mode

    如果想在电脑中安装多个操作系统有几种方法: 1.安装虚拟机,继而在虚拟机中安装操作系统.虚拟机个数就相当于电脑个数,常用的虚拟机软件有VMVare,VMVare功能齐全,但是安装文件较大. 2.如果你 ...

  8. PhpStorm 9.03 集成 开源中国(oschina.net)的Git项目,提交SVN时注意事项

    第一步:配置 git.exe File -> Default Settings -> Version Control -> Git -> Path go Git executa ...

  9. H5案例分享:使用JS判断客户端、浏览器、操作系统类型

    使用JS判断客户端.浏览器.操作系统类型 一.JS判断客户端类型 JS判断客户端是否是iOS或者Android手机移动端 通过判断浏览器的userAgent,用正则来判断手机是否是ios和Androi ...

  10. DPM算法源程序voc-release5在Windows中的配置修改过程

    最近的<视频处理与分析>课程中有一个大作业,是有关DPM物体检测算法的.网上有DPM的源代码,但是原版只能在Linux或Mac上运行,而我的电脑是Windows系统,于是在网上搜了一下在怎 ...