java 使用poi 结合Struts2导出execl表格

第一步写action方法:

public String exportActiveExcel()

{

String name ="活跃度列表.xls";

try {

name = java.net.URLEncoder.encode(name, "UTF-8");

fileName = new String(name.getBytes(), "iso-8859-1");

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

return "success";

}

fileName 为类变量要生成get和set方法,作为文件的名称

第二步把数据写入到一个流里:

public InputStream getInputStream()

{

// 测试学生

ExportExcel ex = new ExportExcel();

String[] headers = {"学号", "姓名", "年龄", "性别", "出生日期"};

JSONArray array=new JSONArray();

JSONArray arr=new JSONArray();

arr.add(10000001);

arr.add("张三");

arr.add(20);

arr.add(true);

arr.add("2013-5-6");

JSONArray arr1=new JSONArray();

arr1.add(10000002);

arr1.add("李四");

arr1.add(24);

arr1.add(false);

arr1.add("2013-5-6");

array.add(arr);

array.add(arr1);

return  ex.exportExcel("活跃度分析",headers, array);

}

用到的类:

public class ExportExcel

{

@SuppressWarnings("deprecation")

public InputStream exportExcel(String title, String[] headers, JSONArray array)

{

// 声明一个工作薄

HSSFWorkbook workbook = new HSSFWorkbook();

// 生成一个表格

HSSFSheet sheet = workbook.createSheet(title);

// 设置表格默认列宽度为15个字节

sheet.setDefaultColumnWidth((short) 30);

// 生成一个标题样式

HSSFCellStyle titleStyle = workbook.createCellStyle();

// 设置这些样式

titleStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

titleStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);

titleStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);

titleStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);

titleStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);

titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);

// 生成一个标题字体

HSSFFont font = workbook.createFont();

font.setColor(HSSFColor.VIOLET.index);

font.setFontHeightInPoints((short) 12);

font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

// 把字体应用到当前的样式

titleStyle.setFont(font);

// 生成内容样式

HSSFCellStyle contentStyle = workbook.createCellStyle();

contentStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

contentStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);

contentStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);

contentStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);

contentStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);

contentStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);

contentStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

// 生成内容字体

HSSFFont contentFont = workbook.createFont();

contentFont.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);

// 把字体应用到当前的样式

contentStyle.setFont(contentFont);

// 产生表格标题行

HSSFRow row = sheet.createRow(0);

for (short i = 0; i < headers.length; i++)

{

HSSFCell cell = row.createCell(i);

cell.setCellStyle(titleStyle);

HSSFRichTextString text = new HSSFRichTextString(headers[i]);

cell.setCellValue(text);

}

//生成内容行

for (int i = 0; i < array.size(); i++)

{

row = sheet.createRow(i+1);

JSONArray arr=(JSONArray) array.get(i);

for (int j = 0; j < arr.size(); j++)

{

HSSFCell cell = row.createCell(j);

cell.setCellStyle(contentStyle);

HSSFRichTextString richString = new HSSFRichTextString(arr.get(j).toString());

HSSFFont font3 = workbook.createFont();

font3.setColor(HSSFColor.BLUE.index);

richString.applyFont(font3);

cell.setCellValue(richString);

}

}

//写入输出流

ByteArrayOutputStream baos = new ByteArrayOutputStream();

try

{

workbook.write(baos);// 写入

}

catch (IOException e)

{

e.printStackTrace();

}

byte[] ba = baos.toByteArray();

ByteArrayInputStream bais = new ByteArrayInputStream(ba);

try

{

baos.close();

}

catch (IOException e)

{

e.printStackTrace();

}

return bais;

}

}

第三步配置struts.xml文件

<action name="exportActiveExcel" class="activeCountAction"

method="exportActiveExcel">

<result name="success" type="stream">

<param name="contentType">application/vnd.ms-excel</param>

<param name="contentDisposition">attachment;filename="${fileName}"</param>

<param name="inputName">inputStream</param>

<param name="bufferSize">4096</param>

</result>

</action>

inputName的值要与流的方法一致,生成getXxxxx,不然找不到方法

在页面上直接调用action方法的路径

<input type="button" value="数据导出" onclick="javascript:window.location.href=‘exportActiveExcel‘;"/>

java 使用poi 结合Struts2导出execl表格

时间: 2024-10-31 04:10:48

java 使用poi 结合Struts2导出execl表格的相关文章

Java使用POI实现数据导出excel报表

在上篇文章中,我们简单介绍了java读取word,excel和pdf文档内容 ,但在实际开发中,我们用到最多的是把数据库中数据导出excel报表形式.不仅仅简单的读取office中的数据.尤其是在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作.而数据导出的格式一般是EXCEL或者PDF .所以今天我们来简单看一下利用Apache  POI实现数据库中数据导出excel报表.在java中有很多实现数据导出excel报表的第三方jar包.但在比较了一下感觉还是POI相对来

java使用freemarker作为模板导出Excel表格

1:首先新建一个excel表格自己弄好格式如下图 2:把excel 表格另存为xml格式文件如下图 3:这个时候的文件就是xml 格式的文件了,在myeclipse里面项目工程里面新建一个文件后缀为.ftl 然后把弄好的xml文件内容直接复制粘贴到.fl文件里面 如图 4:好了,现在我们直接java 后台action 类代码如下 /** * 导出订单表 * @throws Exception */ public void exportOrder() throws Exception{ HttpS

JAVA 通过POI 模版,导出excel

如有不足,欢迎指正,谢谢 ! 1.Maven引入  POI jar包.模版和结果文件.rar下载 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.0.1</version> </dependency><dependency> <groupId>net.sf.jxl

java后台poi根据模板导出excel

public class ExcelUtils { private static final String INSPECTIONRECORD_SURFACE_TEMPLET_PATH = "download\\template\\materialList.xlsx"; private static XSSFCellStyle cellstyle = null; public static void exportBom(HttpServletRequest request, HttpSe

导出execl

导出Execl表格 /** * 导出集合方法封装 * @param list 需要导出的数据 * @return srModel 前台需要的uploadFile */ private BatchEduceDetailPMSrModel EduceDetail(List<OasPlMainDedail> list){ String srcPath = "D:"+FileUtil.separator; //ftp地址 String DescFile = AppConfig.ge

java利用poi来读取execl表格返回对象

利用poi来读取execl表格,返回一个对象(可能有点不完善,但是应该能满足平常的所用),用到了反射等等; 使用的jar包有: commons-collections4-4.1.jar poi-3.17.jar poi-ooxml.3.17.jar poi-ooxml-schemas.3.17.jar xmllbeans-2.6.0.jar /** * 静态属性包 * @author Administrator * */public class Common { public static fi

java实现excel的导入导出(poi详解)[转]

java实现excel的导入导出(poi详解) 博客分类: java技术 excel导出poijava 经过两天的研究,现在对excel导出有点心得了.我们使用的excel导出的jar包是poi这个阿帕奇公司的一个项目,后来被扩充了.是比较好用的excel导出工具. 下面来认识一下这个它吧. 我们知道要创建一张excel你得知道excel由什么组成,比如说sheet也就是一个工作表格,例如一行,一个单元格,单元格格式,单元格内容格式…这些都对应着poi里面的一个类. 一个excel表格: HSS

POI跨行导出excell表格实现.md

# POI跨行导出excell表格实现### 需求:需要导出父子级关系的元素,父级需要跨行显示,子级需要单独显示. ### 由于数据库中的数据存的是子级存父级的ID形式,所以需要将数据包装,自己将装在父级下的list中,本案例将会包装成五级子级形式. ### 第一步:首先写sql ,sql中要计算出父级需要跨的行数.(思路:首先自身内连接,计算出每一级需要跨的行数,在与主表相连将跨行数关联上去) ```xml <select id="findList" resultType=&q

POI跨行导出excell表格实现

POI跨行导出excell表格实现 需求:需要导出父子级关系的元素,父级需要跨行显示,子级需要单独显示. 由于数据库中的数据存的是子级存父级的ID形式,所以需要将数据包装,自己将装在父级下的list中,本案例将会包装成五级子级形式. 第一步:首先写sql ,sql中要计算出父级需要跨的行数.(思路:首先自身内连接,计算出每一级需要跨的行数,在与主表相连将跨行数关联上去) <select id="findList" resultType="OcScope">