博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单Excel表格上传下载,POI
阅读量:7049 次
发布时间:2019-06-28

本文共 2765 字,大约阅读时间需要 9 分钟。

一、废话

Excel表格是office软件中的一员,几乎是使用次数最多的办公软件。所以在java进行企业级应用开发的时候经常会用到对应的上传下载便利办公。

目前,比较常用的实现Java导入、导出Excel的技术有两种Jakarta POI和Java Excel。

我最近使用的是POI进行上传下载。

官方主页,API文档

 

二、正事

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  

(工作文档对象→列表单对象 →行对象→列对象)  

然后可以插入文字,设置格式,设置字体等处理

 

下面演示一个小小的示范

1 //文件源对象 2 POIFSFileSystem fs=null; 3 //工作文档对象 4 HSSFWorkbook wb=null; 5 //工作表单对象 6 HSSFSheet sheet=null; 7  8 fs=new POIFSFileSystem(new FileInputStream("D:/P1200/P1200/WebRoot/excel/"+filename+".xls")); 9 wb = new HSSFWorkbook(fs);10 //获取第一个表单11 sheet =wb.getSheetAt(0);12 //获取第一行13 HSSFRow row = sheet.getRow(0);14 //获取第一行的第一列15 HSSFCell cell = row.getCell(0);16 //为得到的单元格对象赋值17 cell.setCellValue("随意");

操作过程中需要记得几个要点:

第一:你操作的对象是建立在java中的对象所以最后要是用如下IO流进行实现

1 FileOutputStream fileOut = new FileOutputStream("D:/P1200/P1200/WebRoot/excel/"+filename+".xls");2 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

在使用上传过程中可以把上传文件直接转换成IO流不用保存源文件

在上传过程中应该避免以ajax技术提交文件,因为会与MultipartFile冲突导致找不到对应的Requestmapping

 

转载于:https://www.cnblogs.com/blackdeng/p/6043623.html

你可能感兴趣的文章
Python条件判断和循环
查看>>
15年编程生涯,资深架构师总结的7条经验
查看>>
第三节课作业
查看>>
最长回文子串问题
查看>>
ssh客户端及基于key登陆
查看>>
echo命令
查看>>
图形语言 Kgo
查看>>
兄弟连第10节课
查看>>
调整Virtual Box硬盘大小
查看>>
case 格式
查看>>
Windows下Apache服务器中自动配置二级子域名
查看>>
【Tomcat】日常遇到的Tomcat报错及解决方法
查看>>
Transform Map - Ignore Row if any fields are empty
查看>>
SVG绘制loading效果
查看>>
在kubernets中搭建jenkins服务
查看>>
iEclipse-不只是Eclipse的开发者社区
查看>>
Oracle个人的一些记录
查看>>
20.分屏查看命令 less命令
查看>>
感谢付费客户不覺流年似水(271558528) 对C#ASP.NET通用权限管理组件的改进意见,已修正...
查看>>
MySQL5.6.17学习笔记(四)复合分区及分区管理
查看>>