Strust2+POI导出exel表格且解决文件名中文乱码/不显示
下载并导入项目【poi.3.17.jar】
strust.xml
<action name="returnLate_*" class="com.stureturnlate.moudels.biz.action.return_late.ReturnLateAction" method="{1}">
<result name="list">/page/moudels/biz/return_late/returnLateList.jsp</result>
<result name="openAdd">/page/moudels/biz/return_late/returnLateAdd.jsp</result>
<!--<result name="openEdit">/page/biz/student/studentUpdate.jsp</result>-->
<result name="openDetails">/page/moudels/biz/return_late/returnLateDetails.jsp</result> <!-- 导出Excel -->
<result name="download" type="stream">
<param name="contentType">application/vnd.ms-excel</param><!-- 注意这里的ContentType -->
<param name="contentDisposition">attachment;filename="${fileName}.xls"</param><!-- 下载文件的名字 -->
<param name="bufferSize"></param><!-- 下载文件的大小 =1M -->
<param name="inputName">excelFile</param><!-- 这里需要和Action里的变量名一致 -->
</result>
</action>ReturnLateAction.class
/**
* 导出
* @return
*/
public String download() throws Exception { List<ReturnLateEntity> returnLateEntityList = new ArrayList<>();
fileName = fileName+ DateTool.dateFormat(new Date());
fileName=new String(fileName.getBytes("gb2312"), "iso8859-1");//防止中文乱码或不显示
//TODO 第一步:声明excel的文档对象
HSSFWorkbook returnLateExcel;
try {
//查询的结果,插入Excel填充数据
String[] ids = returnLateIds.split(",");
returnLateEntityList = returnLateService.selectAllReturnLate(ids); //TODO 第二步:获取excel的文档对象
returnLateExcel = CreateExcel.createReturnLateExcel(returnLateEntityList); ByteArrayOutputStream output = new ByteArrayOutputStream();//字节数组输出流 //TODO 第三步:写入字节数组输出流
returnLateExcel.write(output);
byte[] ba = output.toByteArray(); //TODO 第四步:为输入流对象赋值
excelFile = new ByteArrayInputStream(ba); output.flush();
output.close();//关闭
} catch (SQLException e) {
System.out.println("晚归记录文件内容写入或者创建失败失败!");
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} return "download";
}文件导出类CreateExcel.class
package com.stureturnlate.common; import com.stureturnlate.moudels.vo.*;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.HorizontalAlignment; import java.sql.SQLException;
import java.util.List; /**
* @author soldier
* @title: CreateExcel
* @projectName stu_return_late
* @description: 文件导出Excel
* @date 19-6-10下午9:56
*/
public class CreateExcel { public static HSSFWorkbook createReturnLateExcel(List<ReturnLateEntity> returnLateEntityList) throws SQLException {
// 创建一个Excel文件
HSSFWorkbook workbook = new HSSFWorkbook();//excel的文档对象
// 创建一个工作表
HSSFSheet sheet = workbook.createSheet("学生晚归记录");
// 添加表头行
HSSFRow hssfRow = sheet.createRow(0);
// 设置单元格格式居中
HSSFCellStyle cellStyle = workbook.createCellStyle();
cellStyle.setAlignment(HorizontalAlignment.CENTER); int index = 0;
// 添加表头内容
HSSFCell headCell = hssfRow.createCell(index++);
headCell.setCellValue("晚归编号");
headCell.setCellStyle(cellStyle); headCell = hssfRow.createCell(index++);
headCell.setCellValue("晚归学生");
headCell.setCellStyle(cellStyle); headCell = hssfRow.createCell(index++);
headCell.setCellValue("所属学院");
headCell.setCellStyle(cellStyle); headCell = hssfRow.createCell(index++);
headCell.setCellValue("学生所在宿舍");
headCell.setCellStyle(cellStyle); headCell = hssfRow.createCell(index++);
headCell.setCellValue("晚归时间");
headCell.setCellStyle(cellStyle); headCell = hssfRow.createCell(index++);
headCell.setCellValue("晚归原因");
headCell.setCellStyle(cellStyle); headCell = hssfRow.createCell(index++);
headCell.setCellValue("记录者工号");
headCell.setCellStyle(cellStyle); headCell = hssfRow.createCell(index);
headCell.setCellValue("记录者姓名");
headCell.setCellStyle(cellStyle); // 添加数据内容
for (int i = 0; i < returnLateEntityList.size(); i++) {
hssfRow = sheet.createRow((int) i + 1);
ReturnLateEntity returnLateEntity = returnLateEntityList.get(i); index = 0;
// 创建单元格,并设置值
HSSFCell cell = hssfRow.createCell(index++);
cell.setCellValue(returnLateEntity.getReturnLateId());
cell.setCellStyle(cellStyle); cell = hssfRow.createCell(index++);
StudentEntity studentEntity = new StudentEntity();//获取学生名称
cell.setCellValue(studentEntity.getStudentName());
cell.setCellStyle(cellStyle); cell = hssfRow.createCell(index++);
CollegeEntity collegeEntity = new CollegeEntity();//获取学院
cell.setCellValue(collegeEntity.getCollegeName());
cell.setCellStyle(cellStyle); cell = hssfRow.createCell(index++);
HostelEntity hostelEntity = new HostelEntity();//获取宿舍名称
cell.setCellValue(hostelEntity.getHostelName());
cell.setCellStyle(cellStyle); cell = hssfRow.createCell(index++);
cell.setCellValue(DateTool.dateTimeFormat(returnLateEntity.getReturnLateTime()));
cell.setCellStyle(cellStyle); cell = hssfRow.createCell(index++);
cell.setCellValue(returnLateEntity.getReturnLateCause());
cell.setCellStyle(cellStyle); cell = hssfRow.createCell(index++);
DormMasterEntity dormMasterEntity = new DormMasterEntity();
cell.setCellValue(dormMasterEntity.getDormMasterId());
cell.setCellStyle(cellStyle); cell = hssfRow.createCell(index);
cell.setCellValue(dormMasterEntity.getDormMasterName());
cell.setCellStyle(cellStyle);
} try {
return workbook; } catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
Strust2+POI导出exel表格且解决文件名中文乱码/不显示的更多相关文章
- windows10下面部署nginx(解决文件名中文乱码问题)
由于开发需要,我们总是需要先在windows环境下面部署项目进行测试,通过之后才会移植到linux系统进行测试部署. 本篇文章会介绍一下windows终端下面部署nginx WEB服务的一些步骤流程, ...
- 解决swfupload上传控件文件名中文乱码问题 三种方法 flash及最新版本11.8.800.168
目前比较流行的是使用SWFUpload控件,这个控件的详细介绍可以参见官网http://demo.swfupload.org/v220/index.htm 在使用这个控件批量上传文件时发现中文文件名都 ...
- poi导出word表格详解 超详细了
转:非常感谢原作者 poi导出word表格详解 2018年07月20日 10:41:33 Z丶royAl 阅读数:36138 一.效果如下 二.js代码 function export_word( ...
- Maven项目结合POI导出Excl表格Demo-亲测可用
Maven项目结合POI导出Excl表格 一.POM文件添加依赖 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> ...
- PHP Header下载文件在IE文件名中文乱码问题
解决PHP Header下载文件在IE文件名中文乱码有两种常见的,一种是是把页面编码改成utf8,另一种是对中文url进入urlencode编码,根据UA检测,区别下载,就可以解决了 $filenam ...
- Linux->Windows主机目录和文件名中文乱码恢复
目录 Linux->Windows主机目录和文件名中文乱码恢复 声明 一. 乱码问题 二. 调试环境 三. 目录和文件名乱码恢复 3.1 可选方案 3.1.1 通过合适的编解码转换 3.1.2 ...
- 彻底解决matplotlib中文乱码问题(转)
彻底解决matplotlib中文乱码问题 1.环境查看a.系统版本查看[hadoop@p168 ~]$ cat /etc/redhat-releaseCentOS Linux release 7.2. ...
- Centos7 unzip文件名中文乱码
Centos7 unzip文件名中文乱码 前言 今天在批量处理windos文件时为了方便操作,将windos下面的文件夹打成zip包上传至centos7中解压处理,发现解压后中文文件名变成了乱码,如下 ...
- 解决Eclipse中文乱码 - 技术博客 - 51CTO技术博客 http://hsj69106.blog.51cto.com/1017401/595598/
解决Eclipse中文乱码 - 技术博客 - 51CTO技术博客 http://hsj69106.blog.51cto.com/1017401/595598/
随机推荐
- JavaWeb面试篇(6)
51.说一说Servlet的生命周期? Servlet有良好的生存期的定义,包括加载和实例化.初始化.处理请求以及服务结束.这个生存期由javax.servlet.Servlet接口的init(),s ...
- 可持久化Trie模板
如果你了解过 01 Trie 和 可持久化线段树(例如 : 主席树 ).那么就比较好去可持久化 Trie 可持久化 Trie 当 01 Trie 用的时候能很方便解决一些原本 01 Trie 不能解决 ...
- 容器适配器————priority_queue
#include <queue> priority_queue 容器适配器定义了一个元素有序排列的队列.默认队列头部的元素优先级最高.因为它是一个队列,所以只能访问第一个元素,这也意味着优 ...
- 论文阅读:Stateless Network Functions: Breaking the Tight Coupling of State and Processing
摘要: 无状态网络功能是一个新的网络功能虚拟化架构,解耦了现有的网络功能设计到无状态处理组件以及数据存储层,在打破紧密耦合的同时,实现了更具可伸缩性和可恢复性的网络功能基础设施.无状态NF处理实例是围 ...
- Monkeyrunner自动化测试由浅入深(第一节)
(原版)Monkeyrunner自动化测试由浅入深(第一节) 博主原创,请勿转载 第一.相关软件和环境的配置 1.Android sdk下载和配置 2.java jdk下载和配置 第二.Monkeyr ...
- [LeetCode]-algorithms-Longest Palindromic Substring
Given a string S, find the longest palindromic substring in S. You may assume that the maximum lengt ...
- GIT的工作原理和基本命令
1.GIT的工作原理 工作区:我们写代码的地方. 暂存区:临时存储用的. 历史区:生成历史版本的地方. 提交流程:工作区->暂存区->历史区 图示: 2.GIT的全局配置 3.创建仓库完成 ...
- 初始化Thread
此处初始化的步骤和上文中介绍的一样,也是调用runClinit方法.首先设置初始化线程为CurrentThread,然后由于其父类Object此时的状态为CLASS_READY,因此就不需要初始化父类 ...
- fastJson对象转字符串首字母小写问题
特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...
- JAVA第二周课程总结
本周我们开始学习一门新的课程JAVA 本周主要学习内容: 1.认识java,以及它的开发工具jdk 2.了解Java的语言特点 3.搭建Java开发环境,jdk的安装和配置