在开发中我们经常遇到把数据导出到Excel中的需求,这里简单的描述下个人实现方式
成都创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:做网站、网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的海东网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
Jakarta POI HSSF API组件
HSSF(用于操作Excel的组件)提供给用户使用的对象在rg.apache.poi.hssf.usermodel包中,主要部分包括Excel对象,样式和格式,还有辅助操作。有以下几种对象:
基本操作步骤
首先,理解一下一个Excel的文件的组织形式,一个Excel文件对应于一个workbook(HSSFWorkbook),一个workbook可以有多个sheet(HSSFSheet)组成,一个sheet是由多个row(HSSFRow)组成,一个row是由多个cell(HSSFCell)组成。
基本操作步骤:
下面来看一个动态生成Excel文件的例子:
//创建HSSFWorkbook对象
HSSFWorkbook wb = new HSSFWorkbook();
//创建HSSFSheet对象
HSSFSheet sheet = wb.createSheet("sheet0");
//创建HSSFRow对象
HSSFRow row = sheet.createRow(0);
//创建HSSFCell对象
HSSFCell cell=row.createCell(0);
//设置单元格的值
cell.setCellValue("单元格中的中文");
//输出Excel文件
FileOutputStream output=new FileOutputStream("d:\\workbook.xls");
wkb.write(output);
output.flush();
HSSF读取文件同样还是使用这几个对象,只是把相应的createXXX方法变成了getXXX方法即可。可见只要理解了其中原理,不管是读还是写亦或是特定格式都可以轻松实现,正所谓知其然更要知其所以然。
导出表格的工具类:
excelUtil:
package com.zhl.push.Utils;
import com.google.common.base.Strings;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.ss.util.CellRangeAddress;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
public class ExcelExportUtil {
//表头
private String title;
//各个列的表头
private String[] heardList;
//各个列的元素key值
private String[] heardKey;
//需要填充的数据信息
private List
service :
@Override
public void queryProjectInfoBySchemeId(HttpServletResponse response, HttpServletRequest request,
String schemeId, String pushDate) throws IOException {
List maps = pushMonitorDao.queryProjectInfoBySchemeId(schemeId, pushDate);
if(maps!=null && maps.size()>0){
String companyName = pushMonitorDao.queryCompanyNameBySchemeId(schemeId);
String sheetTitle = companyName;
String [] title = new String[]{"城市","项目名字","合同","实际"}; //设置表格表头字段
String [] properties = new String[]{"city","projectName","ddNum","sjNum"}; // 查询对应的字段
ExcelExportUtil excelExport2 = new ExcelExportUtil();
excelExport2.setData(maps);
excelExport2.setHeardKey(properties);
excelExport2.setFontSize(14);
excelExport2.setSheetName(sheetTitle);
excelExport2.setTitle(sheetTitle);
excelExport2.setHeardList(title);
excelExport2.exportExport(request, response);
}
}
Excel格式
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.ss.util.CellRangeAddress;
/**
* @作者 yan
* @创建日期
* @版本 V1.0
* @描述 Excel 导出通用工具类
*/
public class ExcelUtil {
public static byte[] export(String sheetTitle, String[] title, List
接口类demo:
package com.tjhq.nyb.common.service;
import java.util.List;
import java.util.Map;
import org.apache.poi.ss.usermodel.Workbook;
publicinterfaceExpExcelUtilService{
/**
* 业务数据导出
* @param mapTitle LinkedHashMap 链式的Map 表头与字段对应关系
* @param List> 表格链式的数据集合,?为实体类
* @param excelStyle 样式表
* @return生成excel文档
* @throws Exception 抛出错误
*/
public WorkbookexportExcelWriter2007(Map mapTitle,List>list,ExcelStyle excelStyle) throws Exception;
public WorkbookexportExcelWriter2003(Map mapTitle,List>list,ExcelStyle excelStyle) throws Exception;
public WorkbookexportExcelWriter2003_(Map mapTitle,Map> mapLstChry,ExcelStyle excelStyle) throws Exception;
public WorkbookexportExcelWriter2003_Title(Map mapTitle,Map> mapLstChry,ExcelStyle excelStyle) throws Exception;
}
以上就是Java怎么导出Excel的详细内容,更多请关注创新互联其它相关文章!
当前文章:Java导出Excel数据的方法
标题URL:
http://shouzuofang.com/article/jeipdo.html