poi技术
其实生活中不乏很多需要从数据库向excel导入数据的情况,但是如果数据库的东西很多且字段很长,会造成卡死机的状态。
那么如何解决这个一问题呢,其实网络上有一门技术叫做poi,官方介绍是:
Apache POI是Apache软件基金会的开放源码函式库,poi提供API给Java程序对Microsoft Office格式档案读和写的功能。
其实可以把它理解为Java和Microsoft之间互相沟通的一门技术
Microsoft其实除了excel 还有ppt,word, 相互对应的列举如下:
结构:
HSSF - 提供读写Microsoft Excel格式档案的功能。
XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。
HWPF - 提供读写Microsoft Word格式档案的功能。
HSLF - 提供读写Microsoft PowerPoint格式档案的功能。
HDGF - 提供读写Microsoft Visio格式档案的功能。
那我今天为大家简单的介绍一下如何优化poi导出问题
1. 常用类说明
类名 说明
HSSFWorkbook Excel的文档对象
HSSFSheet sheet页
HSSFRow Excel的行
HSSFCell Excel的格子单元
HSSFFont Excel字体
HSSFDataFormat 格子单元的日期格式
HSSFHeader Excel文档Sheet的页眉
HSSFFooter Excel文档Sheet的页脚
HSSFCellStyle 格子单元样式
HSSFDateUtil 日期
HSSFPrintSetup 打印
HSSFErrorConstants 错误信息表
2. 新建一个表格
首先要将下载好的jar包,解压将根目录下的所有包,以及将lib目录下的commons-logging-1.2.jar 和 junit-4.12.jar 以及 log4j1.2.17.jar 这三个通用包导入到项目的lib的目录下,poi-4.0.0.jar包是最重要的。
主要介绍HSSFWorkbook
- 多态实现
- HSSFWorkbook 是对于xls进行操作
- 导出所以用到输出流
- 参数为输出的地址
Workbook wb=new HSSFWorkbook();//新建一个工作簿
FileOutputStream fout=new FileOutputStream(“E:\Demo\poi.xls”);
wb.write(fout);//Workbook提供了write的方法
fout.close();//将输出流关闭
3. 新建sheet页
在新建工作簿的基础上新建sheet页,wb.createSheet() 返回一个Sheet()如果不进行操作不用接收
- 多态实现
- HSSFWorkbook 是对于xls进行操作
- Workbook wb=new HSSFWorkbook();//新建一个工作簿
- 导出所以用到输出流
- FileOutputStream fout=new FileOutputStream(“E:\Demo\poi.xls”);
- 有有参和无参数两种
- 参数为sheet页的名字
- 不写参数默认名字为sheet0到n
Sheet sheet1 = wb.createSheet();//创建一个sheet页
Sheet sheet2 = wb.createSheet(“第二个sheet页”);//创建第二个sheet页
wb.write(fout);
fout.close();//将输出流关闭
//一些工作表的方法
workbook.setActiveSheet(工作表下标);//设置默认工作表
workbook.setSheetName(2(工作表下标), “1234”(新名字));//重命名工作表
sheet1.setZoom(1,2);//50%显示比例
sheet2.setZoom(2,1);//200%显示比例
sheet3.setZoom(1,10);//10%显示比例
优化之后的方法
package com.lrc.excel;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
public class Excel {
/**
*
* @Title: export
* @Description: (通用导出excel)
* @param excelName 导出文件名
* @param list 数据集合
* @param fieldMap 表头字段 数据库字段为键 表头字段为值
* @param response 浏览器下载
* @return void
*/
public static void export(String excelName,List