一、废话

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. Codeforces Round #342 (Div. 2) B. War of the Corporations(贪心)

    传送门 Description A long time ago, in a galaxy far far away two giant IT-corporations Pineapple and Go ...

  2. Node实践之一

    大家都知道JavaScript的专长就是处理客户端也就是与浏览器打交道了,所有的与服务器端的交互必须交给后台语言处理程序去做,基于JavaScript不能与服务器进行直接交互这样一个现状,Ryan D ...

  3. MySQL5.0数据库的安装

    ======================= 未完待续,持续更新中... -------------------------------------------------

  4. 安卓贴图源码--->单点触控.多点触控.类似in/百度魔图

    效果如图: 类似in,百度魔图,的贴图功能  核心的地方:单/多点 旋转缩放后记录各个顶点小图标位置 引用这里 http://blog.csdn.net/xiaanming/article/detai ...

  5. centos6.7设置非root帐户自动登录

    1.在/etc/gdm/custom.conf文件中修改并加入以下这段 [daemon]AutomaticLogin=你的用户名AutomaticLoginEnable=True 2.重启 reboo ...

  6. 大熊君大话NodeJS之------(Url,QueryString,Path)模块

    一,开篇分析 这篇文章把这三个模块拿来一起说,原因是它们各自的篇幅都不是很长,其次是它们之间存在着依赖关系,所以依次介绍并且实例分析.废话不多说了,请看下面文档: (1),"Url模块&qu ...

  7. ACCESS应用笔记<五>——慢慢要学会做项目管理·

    综上 第一次写access学习笔记是8月19号的事情,现在已经10月31号 以下是之前的笔记目录: <一> http://www.cnblogs.com/weibaar/p/3923466 ...

  8. [Search Engine] 搜索引擎技术之倒排索引

    倒排索引是搜索引擎中最为核心的一项技术之一,可以说是搜索引擎的基石.可以说正是有了倒排索引技术,搜索引擎才能有效率的进行数据库查找.删除等操作. 1. 倒排索引的思想 倒排索引源于实际应用中需要根据属 ...

  9. [Search Engine] 搜索引擎分类和基础架构概述

    大家一定不会多搜索引擎感到陌生,搜索引擎是互联网发展的最直接的产物,它可以帮助我们从海量的互联网资料中找到我们查询的内容,也是我们日常学习.工作和娱乐不可或缺的查询工具.之前本人也是经常使用Googl ...

  10. PHP中如何在数组中随机抽取n个数据的值 - array_rand()?

    PHP中如何在数组中随机抽取n个数据的值? 最佳答案 array_rand() 在你想从数组中取出一个或多个随机的单元时相当有用.它接受 input 作为输入数组和一个可选的参数 num_req,指明 ...