热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数据库表导出成Excel工具类

packagecom.chinasofti.articlesys.util;importjava.io.FileOutputStream;importjava.i
package com.chinasofti.articlesys.util;


import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

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.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFHeader;
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.HorizontalAlignment;
import org.apache.struts2.ServletActionContext;

import com.chinasofti.articlesys.bean.ArchiveBean;
import com.chinasofti.articlesys.bean.ArchiveBean;
import com.chinasofti.articlesys.service.ArchiveTypeService;




public class ExportUtilForQuery {


public static void export(List list)throws Exception
{
if(list==null){
return;
}


/*HSSFWorkbook wb = new HSSFWorkbook();
// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet sheet = wb.createSheet("档案表");
sheet.setDefaultColumnWidth(20);
sheet.setDefaultRowHeight((short)15);
// 创建字体对象
HSSFCellStyle style = wb.createCellStyle();
HSSFFont fOnt= wb.createFont();
font.setFontHeightInPoints((short)12);
// font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
font.setBold(true);

style.setAlignment(HorizontalAlignment.CENTER); // 居中
style.setFont(font);
// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
HSSFRow row = sheet.createRow(0);

HSSFCell cell = row.createCell(0);
cell.setCellValue("档案编号");
cell.setCellStyle(style);
cell=row.createCell(1);
cell.setCellValue("档案标题");
cell.setCellStyle(style);
cell=row.createCell(2);
cell.setCellValue("档案内容");
cell.setCellStyle(style);
cell=row.createCell(3);
cell.setCellValue("创建人");
cell.setCellStyle(style);

for (int i = 0; i {
row = sheet.createRow(i+1);
ArchiveBean bean =list.get(i);
// 第四步,创建单元格,并设置值
row.createCell(0).setCellValue(bean.getArchiveNo());
row.createCell(1).setCellValue(bean.getTitle());
row.createCell(2).setCellValue(bean.getContent());
row.createCell(3).setCellValue(bean.getCreater().getName());
} */

String []tableHeader={"档案编号","档案标题","档案内容","创建人"};
/*
*下面的都可以拷贝不用编写
*/
short cellNumber=(short)tableHeader.length;//表的列数
HSSFWorkbook workbook = new HSSFWorkbook(); //创建一个excel
HSSFCell cell = null; //Excel的列
HSSFRow row = null; //Excel的行
HSSFCellStyle style = workbook.createCellStyle(); //设置表头的类型
// style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
style.setAlignment(HorizontalAlignment.CENTER);
HSSFCellStyle style1 = workbook.createCellStyle(); //设置数据类型
// style1.setAlignment(HSSFCellStyle.ALIGN_CENTER);
style1.setAlignment(HorizontalAlignment.CENTER);
HSSFFont fOnt= workbook.createFont(); //设置字体
HSSFSheet sheet = workbook.createSheet("sheet1"); //创建一个sheet
HSSFHeader header = sheet.getHeader();//设置sheet的头
try { /**
*根据是否取出数据,设置header信息
*
*/
if(list.size() <1 ){
header.setCenter("查无资料");
}else{
header.setCenter("档案表");
row = sheet.createRow(0);
row.setHeight((short)400);
for(int k = 0;k cell = row.createCell(k);//创建第0行第k列
cell.setCellValue(tableHeader[k]);//设置第0行第k列的值
sheet.setColumnWidth(k,8000);//设置列的宽度
font.setColor(HSSFFont.COLOR_NORMAL); // 设置单元格字体的颜色.
font.setFontHeight((short)350); //设置单元字体高度
style1.setFont(font);//设置字体风格
cell.setCellStyle(style1);
}
/*
* // 给excel填充数据这里需要编写
*
*/
for(int i = 0 ;i ArchiveBean beanType = list.get(i);//获取sign对象
row = sheet.createRow((short) (i + 1));//创建第i+1行
row.setHeight((short)400);//设置行高

if(beanType.getArchiveNo()!= null){
cell = row.createCell(0);//创建第i+1行第0列
cell.setCellValue(beanType.getArchiveNo());//设置第i+1行第0列的值
cell.setCellStyle(style);//设置风格
}
if(beanType.getTitle() != null){
cell = row.createCell(1); //创建第i+1行第1列

cell.setCellValue(beanType.getTitle());//设置第i+1行第1列的值

cell.setCellStyle(style); //设置风格
}
//由于下面的和上面的基本相同,就不加注释了
if(beanType.getContent() != null){
cell = row.createCell(2);
cell.setCellValue(beanType.getContent());
cell.setCellStyle(style);
}
if(beanType.getCreater()!= null){
cell = row.createCell(3);
cell.setCellValue(""+beanType.getCreater());
cell.setCellStyle(style);
}
/*if(sign.getSclass() != null){
cell = row.createCell(4);
cell.setCellValue(sign.getSclass());
cell.setCellStyle(style);
}
if(sign.getMdate()!= null){
cell = row.createCell(5);
cell.setCellValue(sign.getMdate());
cell.setCellStyle(style);
}*/

}

}

} catch (Exception e) {
e.printStackTrace();
}


try
{ HttpServletResponse respOnse=null;
OutputStream out = null;//创建一个输出流对象
try {
respOnse= ServletActionContext.getResponse();//初始化HttpServletResponse对象
out = response.getOutputStream();//
response.setHeader("Content-disposition","attachment; filename="+"SearchResult"+".xls");//filename是下载的xls的名,建议最好用英文
response.setContentType("application/msexcel;charset=UTF-8");//设置类型
response.setHeader("Pragma","No-cache");//设置头
response.setHeader("Cache-Control","no-cache");//设置头
response.setDateHeader("Expires", 0);//设置日期头
workbook.write(out);
out.flush();

} catch (IOException e) {
e.printStackTrace();
}finally{
try{

if(out!=null){
out.close();
}

}catch(IOException e){
e.printStackTrace();
}

}

}
catch (Exception e)
{
e.printStackTrace();

}




// return null;
}
}




推荐阅读
  • 流处理中的计数挑战与解决方案
    本文探讨了在流处理中进行计数的各种技术和挑战,并基于作者在2016年圣何塞举行的Hadoop World大会上的演讲进行了深入分析。文章不仅介绍了传统批处理和Lambda架构的局限性,还详细探讨了流处理架构的优势及其在现代大数据应用中的重要作用。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 本文详细探讨了在Java中如何将图像对象转换为文件和字节数组(Byte[])的技术。虽然网络上存在大量相关资料,但实际操作时仍需注意细节。本文通过使用JMSL 4.0库中的图表对象作为示例,提供了一种实用的方法。 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 本文详细介绍了如何正确设置Shadowsocks公共代理,包括调整超时设置、检查系统限制、防止滥用及遵守DMCA法规等关键步骤。 ... [详细]
  • 本文探讨了如何通过Service Locator模式来简化和优化在B/S架构中的服务命名访问,特别是对于需要频繁访问的服务,如JNDI和XMLNS。该模式通过缓存机制减少了重复查找的成本,并提供了对多种服务的统一访问接口。 ... [详细]
  • 本文详细介绍如何在 Apache 中设置虚拟主机,包括基本配置和高级设置,帮助用户更好地理解和使用虚拟主机功能。 ... [详细]
  • 本文探讨了如何在 Spring MVC 框架下,通过自定义注解和拦截器机制来实现细粒度的权限管理功能。 ... [详细]
  • 利用Node.js实现PSD文件的高效切图
    本文介绍了如何通过Node.js及其psd2json模块,快速实现PSD文件的自动化切图过程,以适应项目中频繁的界面更新需求。此方法不仅提高了工作效率,还简化了从设计稿到实际应用的转换流程。 ... [详细]
  • 为何Compose与Swarm之后仍有Kubernetes的诞生?
    探讨在已有Compose和Swarm的情况下,Kubernetes是如何以其独特的设计理念和技术优势脱颖而出,成为容器编排领域的领航者。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 如何在Django框架中实现对象关系映射(ORM)
    本文介绍了Django框架中对象关系映射(ORM)的实现方式,通过ORM,开发者可以通过定义模型类来间接操作数据库表,从而简化数据库操作流程,提高开发效率。 ... [详细]
  • 问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中 ... [详细]
  • importjava.io.*;importjava.util.*;publicclass五子棋游戏{staticintm1;staticintn1;staticfinalintS ... [详细]
author-avatar
happy柒月卍520
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有