java excel导出 jxl_JavaWEB--POI之EXCEL导出(对比JXL库)

一.概述:

POI概述:

Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。

Apache POI 是创建和维护操作各种符合Office Open XML(OOXML)标准和微软的OLE 2复合文档格式(OLE2)的Java API。用它可以使用Java读取和创建,修改MS Excel文件.而且,还可以使用Java读取和创建MS Word和MSPowerPoint文件。Apache POI 提供Java操作Excel解决方案(适用于Excel97-2008)。

JXL概述:

通过Jxl,Java可以很方便的操作微软的Excel文档。jxl是一个韩国人写的java操作excel的工具,jExcelAPI对中文支持非常好,API是纯Java的, 并不 依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。 另外需要说明的是,这套API对图形和图表的支持很有限,而且 仅仅识别PNG格式。

二.POI框架的类库:

HSSF - 提供读写Microsoft Excel格式档案的功能。

XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。

HWPF - 提供读写Microsoft Word格式档案的功能。

HSLF - 提供读写Microsoft PowerPoint格式档案的功能。

HDGF - 提供读写Microsoft Visio格式档案的功能。

三.两者现状:

jxl现在基本上没被维护了。相反,poi属于Apache开源项目的一部分,更新维护得比较好,同时poi可以支持更高版本的excel,而jxl只能支持excel2003以及之前的版本(局限的数据量)。

四.DEMO实例:

1.JXL使用DEMO:

1)导出JXL的库:

net.sourceforge.jexcelapi

jxl

2.6.12

org.apache.commons

commons-lang3

3.0

2)代码实现:

package com.winshangdate.jxlExcelDemo;

import jxl.Workbook;

import jxl.WorkbookSettings;

import jxl.read.biff.BiffException;

import jxl.write.Label;

import jxl.write.WritableSheet;

import jxl.write.WritableWorkbook;

import jxl.write.WriteException;

import jxl.write.biff.RowsExceededException;

import org.apache.commons.lang3.StringUtils;

import java.io.File;

import java.io.IOException;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

/**

* @author :yaobinbin

* @date :Created in 2019/7/22 10:19

* @description:导出JXL的库

* @modified By:

* @version: 1.00$

*/

public class jxlTest {

public static void main(String[] args) {

writeInExcel();

}

public static void writeInExcel(){

//列的标题,把他写进代码,是为了方便管理业务的增删

List headList=new ArrayList<>();

headList.add("专线类型");

headList.add("业务类型");

headList.add("工单标题");

headList.add("工单号");

headList.add("ESOP单号");

headList.add("来源渠道");

//1.路径的拼接(模板文件路径)

//模板文件流

String basePath=Thread.currentThread().getContextClassLoader().getResource("").getPath();

System.out.println("==================>1"+basePath);

basePath= StringUtils.substringBeforeLast(basePath,"/");

System.out.println("==================2"+basePath);

basePath= StringUtils.substringBeforeLast(basePath,"/");

System.out.println("==================>3"+basePath);

basePath= StringUtils.substringBeforeLast(basePath,"/");

System.out.println("==================>4"+basePath);

basePath=basePath+"/src/main/webapp/source/";

File templateFile=new File(basePath+"commonexport.xls");

//2.导出的文件流

String resultFilePath=basePath+"commomoutput.xls";

File resultFile=new File(resultFilePath);

//3.excel文件对象

Workbook wb=null;//先初始化一个excel文件

WorkbookSettings settings=new WorkbookSettings();//以下两行先不用理会,后面会详细解释,这个是关于linux与wins的

settings.setWriteAccess(null);

WritableWorkbook wwb=null;

try {

wb=Workbook.getWorkbook(templateFile);

wwb=Workbook.createWorkbook(resultFile,wb,settings);

WritableSheet sheet=wwb.createSheet("Sheet1",0);//excel的工作表格

//4.标题栏

for (int i=0;i

Label la=new Label(i,0,wb.getSheet(0).getCell(i,0).getContents());

sheet.addCell(la);

}

List> dataList=new ArrayList<>();

sheet.setRowView(0,300);//设置第一行高度

//5.数据准备--假数据

for(int t=0;t<1000;t++){

Map temp=new HashMap<>();

temp.put("groupid",String.valueOf(1+t));

temp.put("productcode","abc"+String.valueOf(1+t));

dataList.add(temp);

}

//6.导进excel的数据

for(int i=0;i

Mapmap=dataList.get(i);

Label C1=new Label(0,i+1,map.get("groupid"));

Label C2=new Label(2,i+1,map.get("productcode"));

sheet.addCell(C1);

sheet.addCell(C2);

}

//7.导出

wwb.write();

wwb.close();

wb.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

2.POI使用DEMO:

1)导出POI的库:

org.apache.poi

poi

3.15

org.apache.poi

poi-ooxml

3.15

2)代码实现:

package com.winshangdate.poiExcelDemo;

import org.apache.poi.hssf.usermodel.*;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

/**

* @author :yaobinbin

* @date :Created in 2019/7/22 16:34

* @description:poi导出数据

* @modified By:

* @version: $

*/

public class PoiExportTest {

public static void main(String[] args) {

writeInExcel();

}

public static void writeInExcel(){

//列的标题,把他写进代码,是为了方便管理业务的增删

List headList=new ArrayList<>();

headList.add("专线类型");

headList.add("业务类型");

headList.add("工单标题");

headList.add("工单号");

headList.add("ESOP单号");

headList.add("来源渠道");

//1.构建excel文件所需要对象

//创建工作薄

HSSFWorkbook wkb=new HSSFWorkbook();

//建立新的sheet对象(excel的表单)

HSSFSheet sheet=wkb.createSheet("工单信息表");

//给单子名称一个长度

sheet.setDefaultColumnWidth((short)15);

//生成一个样式

HSSFCellStyle style=wkb.createCellStyle();

//在sheet里创建第一行,参数为行索引(excel的行),可以是0-65535之间的任何一个

HSSFRow row=sheet.createRow(0);//这里其实是创建索引而已,锁定某一行

//样式字体居中

style.setAlignment(HSSFCellStyle.ALIGN_CENTER);

//2.写入标题栏

//创建单元格(excel的单元格,参数为列索引,可以是0-255之间的任何一个)

//给表头第一行一次创建单元格

HSSFCell cell=null;

for(int i=0;i

cell=row.createCell(i);

cell.setCellValue(headList.get(i));

cell.setCellStyle(style);

}

//3.准备数据

//添加一些数据,这里先写死,大家可以换成自己的集合数据

List> dataList=new ArrayList<>();

for(int t=0;t<1000;t++){

Map temp=new HashMap<>();

temp.put("groupid",String.valueOf(1+t));

temp.put("productcode","abc"+String.valueOf(1+t));

dataList.add(temp);

}

//4.向单元格里填充数据

for(short i=0;i

row=sheet.createRow(i+1);

row.createCell(0).setCellValue(dataList.get(i).get("groupid"));

row.createCell(1).setCellValue(dataList.get(i).get("productcode"));

}

//导出

//默认导出在D盘下

try {

FileOutputStream out=new FileOutputStream("D://工单信息表.xls");

wkb.write(out);

out.close();

System.out.println("导出成功");

} catch (FileNotFoundException e) {

System.out.println("导出失败");

e.printStackTrace();

} catch (IOException e) {

System.out.println("导出失败");

e.printStackTrace();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值