本文目录一览:

如何导出生成excel文件 java

在编程中经常需要使用到表格(报表)的处理主要以Excel表格为主。下面给出用java写入数据到excel表格方法:

1.添加jar文件

java导入导出Excel文件要引入jxl.jar包,最关键的是这套API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。下载地址:

2.jxl对Excel表格的认识

可以参见

3.java代码根据程序中的数据生成上述图片所示的t.xls文件

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

import java.io.File;

import jxl.*;

import jxl.write.Label;

import jxl.write.WritableSheet;

import jxl.write.WritableWorkbook;

public class Writer_excel{

public static void main(String[] args) {

//标题行

String title[]={"角色","编号","功能名称","功能描述"};

//内容

String context[][]={{"UC11","设置课程","创建课程"},

{"UC12","设置学生名单","给出与课程关联的学生名单"},

{"UC21","查看学生名单",""},

{"UC22","查看小组信息","显示助教所负责的小组列表信息"}

};

//操作执行

try {

//t.xls为要新建的文件名

WritableWorkbook book= Workbook.createWorkbook(new File("t.xls"));

//生成名为“第一页”的工作表,参数0表示这是第一页

WritableSheet sheet=book.createSheet("第一页",0);

//写入内容

for(int i=0;i4;i++) //title

sheet.addCell(new Label(i,0,title[i]));

for(int i=0;i4;i++) //context

{

for(int j=0;j3;j++)

{

sheet.addCell(new Label(j+1,i+1,context[i][j]));

}

}

sheet.addCell(new Label(0,1,"教师"));

sheet.addCell(new Label(0,3,"助教"));

/*合并单元格.合并既可以是横向的,也可以是纵向的

*WritableSheet.mergeCells(int m,int n,int p,int q); 表示由(m,n)到(p,q)的单元格组成的矩形区域合并

* */

sheet.mergeCells(0,1,0,2);

sheet.mergeCells(0,3,0,4);

//写入数据

book.write();

//关闭文件

book.close();

}

catch(Exception e) { }

}

java导出数据到excel的几种方法的比较

Excel的两种导出入门方法(JAVA与JS)

最近在做一个小项目作为练手,其中使用到了导出到Excel表格,一开始做的是使用JAVA的POI导出的,但因为我的数据是爬虫爬出来的,数据暂时并不保存在数据库或后台,所以直接显示在HTML的table,需要下载时又要将数据传回后台然后生成Excel文件,最后再从服务器下载到本地,过程几度经过网络传输,感觉比较耗时与浪费性能,于是想着在HTML中的Table直接导到Excel中节约资源

JAVA导出EXCEL(.xls)

导出Excel用的插件是apache的poi.jar,maven地址如下

dependency

groupIdorg.apache.poi/groupId

artifactIdpoi/artifactId

version3.17/version/dependency

1. 简单应用

先来个简化无样式的Excel导出,由于我的数据存在JSON中,所以形参是JSONArray,朋友们根据自己的实际数据类型(Map,List,Set等)传入即可 ,代码如下

/**

* 创建excel并填入数据

* @author LiQuanhui

* @date 2017年11月24日 下午5:25:13

* @param head 数据头

* @param body 主体数据

* @return HSSFWorkbook

*/

public static HSSFWorkbook expExcel(JSONArray head, JSONArray body) {        //创建一个excel工作簿

HSSFWorkbook workbook = new HSSFWorkbook();        //创建一个sheet工作表

HSSFSheet sheet = workbook.createSheet("学生信息");

//创建第0行表头,再在这行里在创建单元格,并赋值

HSSFRow row = sheet.createRow(0);

HSSFCell cell = null;        for (int i = 0; i head.size(); i++) {

cell = row.createCell(i);

cell.setCellValue(head.getString(i));//设置值

}

//将主体数据填入Excel中

for (int i = 0, isize = body.size(); i isize; i++) {

row = sheet.createRow(i + 1);

JSONArray stuInfo = body.getJSONArray(i);            for (int j = 0, jsize = stuInfo.size(); j jsize; j++) {

cell = row.createCell(j);

cell.setCellValue(stuInfo.getString(j));//设置值

}

}        return workbook;

}

创建好Excel对象并填好值后(就是得到workbook),就是将这个对象以文件流的形式输出到本地上去,代码如下

/**

* 文件输出

* @author LiQuanhui

* @date 2017年11月24日 下午5:26:23

* @param workbook 填充好的workbook

* @param path 存放的位置

*/

public static void outFile(HSSFWorkbook workbook,String path) {

OutputStream os=null;        try {

os = new FileOutputStream(new File(path));

workbook.write(os);

} catch (FileNotFoundException e1) {

e1.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}        try {

os.close();

} catch (IOException e) {

e.printStackTrace();

}

}

至此Excel的导出其实已经做完了。

2. 添加样式后导出

但通常这并不能满足我们的需求,因为通常是需要设置Excel的一些样式的,如字体、居中等等,设置单元格样式主要用到这个类(HSSFCellStyle)

HSSFCellStyle cellStyle = workbook.createCellStyle();

现在说说HSSFCellStyle都能干些什么

HSSFCellStyle cellStyle = workbook.createCellStyle();//创建单元格样式对象1.设置字体

HSSFFont font = workbook.createFont();  //font.setFontHeight((short)12);//这个设置字体会很大

font.setFontHeightInPoints((short)12);//这才是我们平常在Excel设置字体的值

font.setFontName("黑体");//字体:宋体、华文行楷等等

cellStyle.setFont(font);//将该字体设置进去2.设置对齐方式

cellStyle.setAlignment(horizontalAlignment);//horizontalAlignment参考下面给出的参数

//以下是最常用的三种对齐分别是居中,居左,居右,其余的写代码的时候按提示工具查看即可

HorizontalAlignment.CENTER

HorizontalAlignment.LEFT

HorizontalAlignment.RIGHT3.设置边框

cellStyle.setBorderBottom(border); // 下边框

cellStyle.setBorderLeft(border);// 左边框

cellStyle.setBorderTop(border);// 上边框

cellStyle.setBorderRight(border);// 右边框

//border的常用参数如下

BorderStyle.NONE 无边框

BorderStyle.THIN 细边框

BorderStyle.MEDIUM 中等粗边框

BorderStyle.THICK 粗边框//其余的我也描述不清是什么形状,有兴趣的到时可以直接测试

在经过一系列的添加样式之后,最后就会给单元格设置样式

cell.setCellStyle(cellStyle);

3. 自动调整列宽

sheet.autoSizeColumn(i);//i为第几列,需要全文都单元格居中的话,需要遍历所有的列数

4. 完整的案例

public class ExcelUtils {    /**

* 创建excel并填入数据

* @author LiQuanhui

* @date 2017年11月24日 下午5:25:13

* @param head 数据头

* @param body 主体数据

* @return HSSFWorkbook

*/

public static HSSFWorkbook expExcel(JSONArray head, JSONArray body) {

HSSFWorkbook workbook = new HSSFWorkbook();

HSSFSheet sheet = workbook.createSheet("学生信息");

HSSFRow row = sheet.createRow(0);

HSSFCell cell = null;

HSSFCellStyle cellStyle = workbook.createCellStyle();

setBorderStyle(cellStyle, BorderStyle.THIN);

cellStyle.setFont(setFontStyle(workbook, "黑体", (short) 14));

cellStyle.setAlignment(HorizontalAlignment.CENTER);

for (int i = 0; i head.size(); i++) {

cell = row.createCell(i);

cell.setCellValue(head.getString(i));

cell.setCellStyle(cellStyle);

}

HSSFCellStyle cellStyle2 = workbook.createCellStyle();

setBorderStyle(cellStyle2, BorderStyle.THIN);

cellStyle2.setFont(setFontStyle(workbook, "宋体", (short) 12));

cellStyle2.setAlignment(HorizontalAlignment.CENTER);        for (int i = 0, isize = body.size(); i isize; i++) {

row = sheet.createRow(i + 1);

JSONArray stuInfo = body.getJSONArray(i);            for (int j = 0, jsize = stuInfo.size(); j jsize; j++) {

cell = row.createCell(j);

cell.setCellValue(stuInfo.getString(j));

cell.setCellStyle(cellStyle2);

}

}        for (int i = 0, isize = head.size(); i isize; i++) {

sheet.autoSizeColumn(i);

}        return workbook;

}    /**

* 文件输出

* @author LiQuanhui

* @date 2017年11月24日 下午5:26:23

* @param workbook 填充好的workbook

* @param path 存放的位置

*/

public static void outFile(HSSFWorkbook workbook,String path) {

OutputStream os=null;        try {

os = new FileOutputStream(new File(path));

workbook.write(os);

} catch (FileNotFoundException e1) {

e1.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}        try {

os.close();

} catch (IOException e) {

e.printStackTrace();

}

}    /**

* 设置字体样式

* @author LiQuanhui

* @date 2017年11月24日 下午3:27:03

* @param workbook 工作簿

* @param name 字体类型

* @param height 字体大小

* @return HSSFFont

*/

private static HSSFFont setFontStyle(HSSFWorkbook workbook, String name, short height) {

HSSFFont font = workbook.createFont();

font.setFontHeightInPoints(height);

font.setFontName(name);        return font;

}    /**

* 设置单元格样式

* @author LiQuanhui

* @date 2017年11月24日 下午3:26:24

* @param workbook 工作簿

* @param border border样式

*/

private static void setBorderStyle(HSSFCellStyle cellStyle, BorderStyle border) {

cellStyle.setBorderBottom(border); // 下边框

cellStyle.setBorderLeft(border);// 左边框

cellStyle.setBorderTop(border);// 上边框

cellStyle.setBorderRight(border);// 右边框

}

}

POI的功能其实还是很强大的,这里只介绍了Excel的一丁点皮毛给入门的查看,如果想对Excel进行更多的设置可以查看下面的这篇文章,有着大量的使用说明。

空谷幽澜的POI使用详解

JS导出EXCEL(.xls)

java的Excel导出提供了强大的功能,但也对服务器造成了一定资源消耗,若能使用客户端的资源那真是太好了

1. 简单应用

JS的导出Excel非常简单,只需要引用Jquery和tableExport.js并设置一个属性即可

script src="%=basePath%/static/js/tableExport.js" type="text/javascript"/scriptscript type="text/javascript"

function exportExcelWithJS(){    //获取要导出Excel的表格对象并设置tableExport方法,设置导出类型type为excel

$('#tableId').tableExport({      type:'excel'

});

}/scriptbutton class="btn btn-primary"  type="button" style="float: right;" onclick="exportExcelWithJS()"下载本表格/button

JS的导出就完成了,是不是特别简单

2. 进阶应用

但上面仅仅是个简单的全表无样式的导出

这tableExport.js还有一些其他功能,忽略行,忽略列,设置样式等,属性如下

script type="text/javascript"

function exportExcelWithJS(){    //获取要导出Excel的表格对象并设置tableExport方法,设置导出类型type为excel

$('#tableId').tableExport({      type:'excel',//导出为excel

fileName:'2017工资表',//文件名

worksheetName:'11月工资',//sheet表的名字

ignoreColumn:[0,1,2],//忽略的列,从0开始算

ignoreRow:[2,4,5],//忽略的行,从0开始算

excelstyles:['text-align']//使用样式,不用填值只写属性,值读取的是html中的

});

}/script

如上既是JS的进阶导出,操作简单,容易上手

但有个弊端就是分页的情况下,只能导出分页出的数据,毕竟这就是导出HTML内TABLE有的东西,数据在数据库或后台的也就无能为力,所以这个适合的是无分页的TABLE导出

3. 额外说明

tableExport.js是gitHub上的hhurz大牛的一个开源项目,需要下载该JS的可以点击链接进入gitHub下载或在我的百度网盘下载 密码:oafu

tableExport.js不仅仅是个导出Excel的JS,他还可以导出CSV、DOC、JSON、PDF、PNG、SQL、TSV、TXT、XLS (Excel 2000 HTML format)、XLSX (Excel 2007 Office Open XML format)、XML (Excel 2003 XML Spreadsheet format)、XML (Raw xml)多种格式,具体使用可以参考hhurz的使用介绍

本人在之前找了好几个导出Excel的都有各种各样的问题(乱码,无响应,无样式),这个是目前找到最好的一个了,能解决乱码问题,能有样式,非常强大

java怎么实现导出excel

偶将最近写了两个导出excel的方法,第一个是面向过程的思路,就是在指定的单元格写入指定的值,如下:

/**

*负责数据导入到EXCEL

*

* @param realPath

* EXCEL表格存放的绝对路径

* @param sheetname

*

* @param xLocation

* EXCEL表格的行索引,从1开始

* @param yLocation

* EXCEL表格的列索引,从1开始

* @param value

* 需要导入的数据

*

*/

public void modifyExcel(String realPath,String sheetname,int xLocaion,int yLocation,String value){

POIFSFileSystem fs=null;

HSSFWorkbook wb=null;

try {

File file=new File(realPath);

if(file.exists()){

fs = new POIFSFileSystem(new FileInputStream(realPath));

wb=new HSSFWorkbook(fs);

HSSFSheet s=wb.getSheetAt(0);

//函数处理时横纵坐标从索引0开始

HSSFRow row=s.getRow(xLocaion-1);

HSSFCell cell=null;

if(row!=null){

cell=row.getCell(yLocation-1);

if(cell==null){

cell=row.createCell(yLocation-1);

}

}else{

row=s.createRow(xLocaion-1);

cell=row.createCell(yLocation-1);

}

cell.setCellValue(value);

}else{

wb=new HSSFWorkbook();

HSSFSheet s=wb.createSheet();

wb.setSheetName(0, sheetname);

HSSFRow row=s.createRow(xLocaion-1);

HSSFCell cell=row.createCell(yLocation-1);

cell.setCellValue(value);

}

FileOutputStream fos=new FileOutputStream(realPath);

wb.write(fos);

fos.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

第二种就是运用了对象,以对象为单位写入数据,即一个对象的所有属性在一行列出,有多少个对象就有多少行,此方法比较适用于个人信息导出之类的应用,至于导出属性的顺序问题在导出对象的实体类内部改动下即可:

/**

*负责数据导入到EXCEL

*

* @param realPath

* EXCEL表格存放的绝对路径

* @param sheetname

*

* @param users

* 需要导出到excel表的对象数组

*/

public void outputExcel(String realPath,String sheetname,UserModel[] users){

FileOutputStream fos;

try {

File file=new File(realPath);

fos = new FileOutputStream(file, true);

HSSFWorkbook wb = new HSSFWorkbook();

HSSFSheet s=wb.createSheet();

wb.setSheetName(0, sheetname);

HSSFRow[] rows=new HSSFRow[users.length];

HSSFCell[][] cells=new HSSFCell[20][20];

for (int i=0; iusers.length;i++) { // 相当于excel表格中的总行数

PropertyDescriptor[] descriptors=getAvailablePropertyDescriptors(users[i]);

rows[i]=s.createRow(i);

for (int j=0; descriptors!=nulljdescriptors.length;j++) {

java.lang.reflect.Method readMethod = descriptors[j]

.getReadMethod();

cells[i][j]=rows[i].createCell(j);

Object value=readMethod.invoke(users[i], null);

cells[i][j].setCellValue(value.toString());

}

}

wb.write(fos);

fos.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} catch (IllegalArgumentException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

} catch (InvocationTargetException e) {

e.printStackTrace();

}

}

如何用java完成Excel快速的导入导出

有个第三方jar包,专门处理Excel的,使用起来非常简单,你百度一下

java使用什么技术实现excel数据的批量导入导出

最常用的技术就是pio技术。

public static void readFromExcel(String file) throws IOException{

HSSFWorkbook myExcelBook = new HSSFWorkbook(new FileInputStream(file));

HSSFSheet myExcelSheet = myExcelBook.getSheet("Birthdays");

HSSFRow row = myExcelSheet.getRow(0);

if(row.getCell(0).getCellType() == HSSFCell.CELL_TYPE_STRING){

String name = row.getCell(0).getStringCellValue();

System.out.println("name : " + name);

}

if(row.getCell(1).getCellType() == HSSFCell.CELL_TYPE_NUMERIC){

Date birthdate = row.getCell(1).getDateCellValue();

System.out.println("birthdate :" + birthdate);

}

myExcelBook.close();

}

java开发怎么导入导出excel里面信息内容?

public class ExcelExport {

/**

 * 默认每个sheet页最多显示的行数

 */

private static final int sheet_rows = 50000;

/**

 * 导出Excel文件

 * 

 * @param titleList

 *            表头信息

 * @param dataList

 *            表格数据

 * @param fileName

 *            导出文件完整名称 demo.xls

 * @param request

 * @param response

 * @throws IOException

 */

public static void exportExcelFile(ListString titleList,

ListListString dataList, String fileName,

HttpServletRequest request, HttpServletResponse response)

throws IOException {

HSSFWorkbook workBook = exportDataToExcel(titleList, dataList);

response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");

response.setCharacterEncoding("UTF-8");

fileName = encodeFilename(fileName, request);

response.setHeader("Content-disposition", "attachment;filename=" + fileName);

workBook.write(response.getOutputStream());

response.getOutputStream().flush();

response.getOutputStream().close();

}

public static String encodeFilename(String filename, HttpServletRequest request) {

String agent = request.getHeader("USER-AGENT");

try {

if ((agent != null)  ( 0 = agent.indexOf("Firefox"))) {

return MimeUtility.encodeText(filename, "UTF-8", "B");

} else if((agent != null)  ( 0 = agent.indexOf("Chrome"))){

return filename = new String(filename.getBytes(), "ISO8859-1");   

}

else {

if (agent != null) {

String newFileName = URLEncoder.encode(filename, "UTF-8");

newFileName = StringUtils.replace(newFileName, "+", "%20");

if (newFileName.length()  150) {

newFileName = new String(filename.getBytes("GB2312"),

"ISO8859-1");

newFileName = StringUtils.replace(newFileName, " ",

"%20");

}

return newFileName;

}

}

} catch (Exception ex) {

return filename;

}

return filename;

}

public static HSSFWorkbook exportDataToExcel(ListString titleList, ListListString dataList) {

/* 1.创建一个Excel文件 */

HSSFWorkbook workbook = new HSSFWorkbook();

/* 2.创建Excel的一个Sheet */

HSSFSheet sheet = workbook.createSheet();

/* 3.创建表头冻结 */

sheet.createFreezePane(0, 1);

/* 4.设置列宽 */

for (int i = 0; i  titleList.size(); i++) {

sheet.setColumnWidth(i, 5000);

}

/* 5.表头字体 */

HSSFFont headfont = workbook.createFont();

headfont.setFontName("宋体");

headfont.setFontHeightInPoints((short) 12);// 字体大小

headfont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 加粗

/* 6.表头样式 */

HSSFCellStyle headstyle = workbook.createCellStyle();

headstyle.setFont(headfont);

headstyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 左右居中

// 设置背景色为蓝色

headstyle.setFillForegroundColor(HSSFColor.LIGHT_BLUE.index);

headstyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

/* 7.普通单元格字体 */

HSSFFont font = workbook.createFont();

font.setFontName("宋体");

font.setFontHeightInPoints((short) 12);

/* 8.普通单元格样式 */

HSSFCellStyle style = workbook.createCellStyle();

style.setFont(font);

style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 左右居中

/* 9. 拼装表头 */

IteratorString titleRowIterator = titleList.iterator();

int columnIndex = 0;

HSSFRow row = sheet.createRow(0);

while (titleRowIterator.hasNext()) {

String cellValue = titleRowIterator.next();

HSSFCell cell = row.createCell(columnIndex);

cell.setCellType(HSSFCell.CELL_TYPE_STRING);

cell.setCellValue(cellValue);

cell.setCellStyle(headstyle);

columnIndex++;

cell = null;

}

/* 10.组织表数据 */

IteratorListString rowIterator = dataList.iterator();

int rowIndex = 1;

while (rowIterator.hasNext()) {

ListString columnList = rowIterator.next();

row = sheet.createRow(rowIndex);

IteratorString columnIterator = columnList.iterator();

columnIndex = 0;

while (columnIterator.hasNext()) {

String cellValue = columnIterator.next();

HSSFCell cell = row.createCell(columnIndex);

cell.setCellType(HSSFCell.CELL_TYPE_STRING);

cell.setCellValue(cellValue);

cell.setCellStyle(style);

cell = null;

columnIndex++;

}

row = null;

rowIndex++;

}

return workbook;

}

/**

 * 重载导出数据到Excel中

 * @param titleList 表头

 * @param dataList 表数据

 * @param amount 每个sheet页显示行数

 * @return

 */

public static HSSFWorkbook exportDataToExcel(ListString titleList, ListListString dataList, int amount) {

/* 1.创建一个Excel文件 */

HSSFWorkbook workbook = new HSSFWorkbook();

//校验传入的参数

if(titleList==null){

titleList = new ArrayListString();

}

//无数据直接返回

if(dataList==null || dataList.size()==0){

return workbook;

}

//传入数据不正确,按照默认条数显示

if(amount65535 || amount=0){

amount = sheet_rows;

}

//获取sheet页的数量

int row_num = 0;

int y = dataList.size()%amount;

if(y == 0){

row_num = dataList.size()/amount;

}else{

row_num = dataList.size()/amount + 1;

}

/* 表头字体 */

HSSFFont headfont = workbook.createFont();

headfont.setFontName("宋体");

headfont.setFontHeightInPoints((short) 12);// 字体大小

headfont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 加粗

/* 表头样式 */

HSSFCellStyle headstyle = workbook.createCellStyle();

headstyle.setFont(headfont);

headstyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 左右居中

// 设置背景色为蓝色

headstyle.setFillForegroundColor(HSSFColor.LIGHT_BLUE.index);

headstyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

/* 普通单元格字体 */

HSSFFont font = workbook.createFont();

font.setFontName("宋体");

font.setFontHeightInPoints((short) 12);

/* 普通单元格样式 */

HSSFCellStyle style = workbook.createCellStyle();

style.setFont(font);

style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 左右居中

//循环写入每个sheet页

for(int i=0;irow_num;i++){

/* 创建Excel的一个Sheet */

HSSFSheet sheet = workbook.createSheet();

/* 创建表头冻结 */

sheet.createFreezePane(0, 1);

/* 设置列宽 */

for (int t = 0; t  titleList.size(); t++) {

sheet.setColumnWidth(t, 5000);

}

/* 拼装表头 */

IteratorString titleRowIterator = titleList.iterator();

int columnIndex = 0;

HSSFRow row = sheet.createRow(0);

while (titleRowIterator.hasNext()) {

String cellValue = titleRowIterator.next();

HSSFCell cell = row.createCell(columnIndex);

cell.setCellType(HSSFCell.CELL_TYPE_STRING);

cell.setCellValue(cellValue);

cell.setCellStyle(headstyle);

columnIndex++;

cell = null;

}

/* 组织表数据 */

int rowIndex = 1;

for (int j=amount*i;(jamount*(i+1)jdataList.size());j++) {

ListString columnList = dataList.get(j);

row = sheet.createRow(rowIndex);

IteratorString columnIterator = columnList.iterator();

columnIndex = 0;

while (columnIterator.hasNext()) {

String cellValue = columnIterator.next();

HSSFCell cell = row.createCell(columnIndex);

cell.setCellType(HSSFCell.CELL_TYPE_STRING);

cell.setCellValue(cellValue);

cell.setCellStyle(style);

cell = null;

columnIndex++;

}

row = null;

rowIndex++;

}

}

return workbook;

}

/**

 * 重载导出Excel功能,新增一项amount每个sheet导出记录行数

 * @param titleList

 * @param dataList

 * @param fileName

 * @param amount 行数如果小于等于0或大于65535则按照默认显示

 * @param request

 * @param response

 * @throws IOException

 */

public static void exportExcelFile(ListString titleList,

ListListString dataList, String fileName, int amount,

HttpServletRequest request, HttpServletResponse response)

throws IOException {

HSSFWorkbook workBook = exportDataToExcel(titleList, dataList, amount);

response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");

response.setCharacterEncoding("UTF-8");

fileName = encodeFilename(fileName, request);

response.setHeader("Content-disposition", "attachment;filename=" + fileName);

workBook.write(response.getOutputStream());

response.getOutputStream().flush();

response.getOutputStream().close();

}

}

说明:main方法里的第一个参数为要导出的表头信息,

      第二个参数为数据信息,

      第三个参数设置文件名,设置好以后直接调用就可以导出Excle了;

      

      导入就是把文件存到服务器,可用Mogodb等数据库存储,以下是读取已存根据存储的文件id解析Excle数据的大致过程:

 

  POIFSFileSystem fs = null;

            if (!StringUtils.isBlank(fileId)) {

                fs = new POIFSFileSystem(new ByteArrayInputStream(

                //传入对应的文件对象 

                MongoFileUtil.readFile(fileId)));

            }

            // 构造 XSSFWorkbook 对象,filePath 传入文件路径

            HSSFWorkbook xwb = new HSSFWorkbook(fs);

            // 读取第一个sheet

            HSSFSheet sheet = xwb.getSheetAt(0);

            

           

            for (int i = sheet.getFirstRowNum() + 1; i  sheet.getPhysicalNumberOfRows();i++){

             //解析每行的数据

            HSSFRow singleRow = sheet.getRow(i); 

            //解析每个单元格数据

            singleRow.getCell(0).setCellType(Cell.CELL_TYPE_STRING);

    String cellValue= singleRow.getCell(0).getStringCellValue(); 

            }