Java生成Excel表

1 问题描述

最近遇到一个问题,就是在系统页面上加一个Excel表格导出的问题,这个问题很好解决啊,写一个JS把后台给的数据导出到Excel表格不就行了吗。然而当我们在测试的时候,确始终不能如我所愿。

2 问题分析

原来问题出在了浏览器兼容问题上,我在开发的时候用的是Google浏览器,但是测试的电脑上没有安装G哦哦过了浏览器,所以只能在IE或者360浏览器上进行测试。这就遇到麻烦了啊,IE和360浏览器不支持我写的JS代码啊,总不能让别人使用我的系统的时候还要提前安装一个Google浏览器吧,这肯定是行不通的啊,还是换个方法来实现我的导出Excel表格的功能吧。没办法,最后还是输在了兼容性上面,不能让所有人都接受。

3 解决方案

既然JS存在兼容性问题,那么我就不用JS呗,我直接在后台就把数据整理成一个Excel表格,前端只需要下载这个表格总行了吧。说干就干,修改后台代码,实现用Java生成Excel表格。我们应该怎么做呢?首先我们来分析一下我们平时在创建Excel表格的时候都有哪些步骤:第一步是打开MS Office的Excel,这属于创建一个表。第二部就是在表里面创建一个Sheet工作薄。第三步是创建column列明,这一步我们可以看成是创建一个行ROW,相当于我们在数据库中所说的一个元组。第四步就是给元组创建列了啊,也就是每个单元格啊。总的来说就是先有表,再有工作簿,再创建行,每创建一行就在行里创建单元格。接下来我们看看Java怎么实现。我们在代码中也是按照上面所说的步骤一步一步的实现,首先就是创建表。org.apache.poi.hssf.usermodel.HSSFWorkbook这个类为我们提供了创建表的功能,可以说这个类就是一个表文件,这个类下的createSheet方法就是我们说的创建Sheet工作簿,当然Sheet是一个接口,Sheet下面的createRow是创建列,Row下的createCell方法就是创建单元格,具体是怎样将这些方法串起来用呢?我们来看看下面的代码:
Java生成Excel表
完成了Excel表格创建问题,那么接下来就是要让这个表的能被下载了。HttpServletRequest request, HttpServletResponse response这两个参数肯定是少不了的,我们就是通过这两个参数使用户能下载我们的表格:
Java生成Excel表
完成了这些之后,我们就只需要给给我们页面上的按钮添加一个简单的点击事件来调用我们这个接口就可以实现导出Excel表格的问题啦,最后再进行测试,果然原来的兼容性问题没有再遇到了,不能说万无一失,至少肯定比之前的JS好用多了。

4 总结

我们在用代码实现一个问题的时候,往往思路就是将我们在平时生活中要做的事情一步一步的理清楚之后一步步的去完成,应为计算机的思维和我们人不同,我们可以直接知道1+1+1+1=4,但是计算机就要1+1=2,2+1=3,3+1=4才能得出结果。因此我们需要计算机为我们做事的时候就要把每个步骤都告诉计算机。