Java_导出Excel
导出的Excel标题、Sheet名称、数据内容都可以使用中文
一、pom.xml引入jar包
| 
 1 
2 
3 
4 
5 
 | 
<dependency>            <groupId>org.apache.poi</groupId>            <artifactId>poi-ooxml</artifactId>            <version>3.13</version>        </dependency> | 
二、Excel操作内部类
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 
44 
45 
46 
47 
48 
49 
50 
51 
52 
53 
54 
55 
56 
57 
58 
59 
60 
61 
62 
63 
64 
65 
66 
67 
68 
69 
70 
71 
72 
73 
74 
75 
76 
77 
78 
79 
80 
81 
82 
83 
84 
85 
86 
87 
88 
89 
90 
91 
92 
93 
94 
95 
96 
97 
98 
 | 
import org.apache.poi.hssf.util.HSSFColor;import org.apache.poi.ss.util.CellRangeAddress;import org.apache.poi.xssf.usermodel.*;public class ExportInternalUtil {    private XSSFWorkbook wb = null;    private XSSFSheet sheet = null;    /**     * @param wb     * @param sheet     */    public ExportInternalUtil(XSSFWorkbook wb, XSSFSheet sheet) {        this.wb = wb;        this.sheet = sheet;    }    /**     * 合并单元格后给合并后的单元格加边框     *      * @param region     * @param cs     */    public void setRegionStyle(CellRangeAddress region, XSSFCellStyle cs) {        int toprowNum = region.getFirstRow();        for (int i = toprowNum; i <= region.getLastRow(); i++) {            XSSFRow row = sheet.getRow(i);            for (int j = region.getFirstColumn(); j <= region.getLastColumn(); j++) {                XSSFCell cell = row.getCell(j);// XSSFCellUtil.getCell(row,                                                // (short) j);                cell.setCellStyle(cs);            }        }    }    /**     * 设置表头的单元格样式     *      * @return     */    public XSSFCellStyle getHeadStyle() {        // 创建单元格样式        XSSFCellStyle cellStyle = wb.createCellStyle();        // 设置单元格的背景颜色为淡蓝色        cellStyle.setFillForegroundColor(HSSFColor.PALE_BLUE.index);        cellStyle.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND);        // 设置单元格居中对齐        cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);        // 设置单元格垂直居中对齐        cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);        // 创建单元格内容显示不下时自动换行        cellStyle.setWrapText(true);        // 设置单元格字体样式        XSSFFont font = wb.createFont();        // 设置字体加粗        font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);        font.setFontName("宋体");        font.setFontHeight((short) 200);        cellStyle.setFont(font);        // 设置单元格边框为细线条        cellStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN);        cellStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN);        cellStyle.setBorderRight(XSSFCellStyle.BORDER_THIN);        cellStyle.setBorderTop(XSSFCellStyle.BORDER_THIN);        return cellStyle;    }    /**     * 设置表体的单元格样式     *      * @return     */    public XSSFCellStyle getBodyStyle() {        // 创建单元格样式        XSSFCellStyle cellStyle = wb.createCellStyle();        // 设置单元格居中对齐        cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);        // 设置单元格垂直居中对齐        cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);        // 创建单元格内容显示不下时自动换行        cellStyle.setWrapText(true);        // 设置单元格字体样式        XSSFFont font = wb.createFont();        // 设置字体加粗        font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);        font.setFontName("宋体");        font.setFontHeight((short) 200);        cellStyle.setFont(font);        // 设置单元格边框为细线条        cellStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN);        cellStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN);        cellStyle.setBorderRight(XSSFCellStyle.BORDER_THIN);        cellStyle.setBorderTop(XSSFCellStyle.BORDER_THIN);        return cellStyle;    }} | 
三、Excel操作类
共外部调用,可设置Sheet名称、标题、数据等
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 
44 
45 
46 
47 
48 
49 
50 
51 
52 
53 
54 
55 
56 
57 
58 
59 
60 
61 
62 
63 
64 
65 
66 
67 
68 
69 
70 
71 
72 
73 
74 
75 
 | 
import java.io.IOException;import java.util.ArrayList;import javax.servlet.ServletOutputStream;import org.apache.poi.xssf.usermodel.XSSFCell;import org.apache.poi.xssf.usermodel.XSSFCellStyle;import org.apache.poi.xssf.usermodel.XSSFRow;import org.apache.poi.xssf.usermodel.XSSFSheet;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import com.james.domain.User;public class ExportUtil {    public static void ExportExcel(String[] titles, ArrayList<User> list, ServletOutputStream outputStream) {        // 创建一个workbook 对应一个excel应用文件        XSSFWorkbook workBook = new XSSFWorkbook();        // 在workbook中添加一个sheet,对应Excel文件中的sheet        //Sheet名称,可以自定义中文名称        XSSFSheet sheet = workBook.createSheet("Sheet1");        ExportInternalUtil exportUtil = new ExportInternalUtil(workBook, sheet);        XSSFCellStyle headStyle = exportUtil.getHeadStyle();        XSSFCellStyle bodyStyle = exportUtil.getBodyStyle();        // 构建表头        XSSFRow headRow = sheet.createRow(0);        XSSFCell cell = null;        // 输出标题        for (int i = 0; i < titles.length; i++) {            cell = headRow.createCell(i);            cell.setCellStyle(headStyle);            cell.setCellValue(titles[i]);        }        // 构建表体数据        for (int j = 0; j < list.size(); j++) {            XSSFRow bodyRow = sheet.createRow(j + 1);            User user = list.get(j);            cell = bodyRow.createCell(0);            cell.setCellStyle(bodyStyle);            cell.setCellValue(user.getLastIp());            cell = bodyRow.createCell(1);            cell.setCellStyle(bodyStyle);            cell.setCellValue(user.getLastVisit());            cell = bodyRow.createCell(2);            cell.setCellStyle(bodyStyle);            cell.setCellValue(user.getPassword());                         cell = bodyRow.createCell(3);            cell.setCellStyle(bodyStyle);            cell.setCellValue(user.getUserName());                         cell = bodyRow.createCell(4);            cell.setCellStyle(bodyStyle);            cell.setCellValue(user.getUserId());        }        try {            workBook.write(outputStream);            outputStream.flush();            outputStream.close();        } catch (IOException e) {            e.printStackTrace();        } finally {            try {                outputStream.close();            } catch (IOException e) {                e.printStackTrace();            }        }    }} | 
四、SpringMVC Controller层调用
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 
44 
45 
46 
47 
48 
 | 
@RequestMapping(value = "/excelDownload")    public String exportExcel(HttpServletResponse response) {        try {            //String fileName = new String(("导出excel标题").getBytes(), "UTF-8") + ".xlsx";            String fileName=new String(("导出excel标题").getBytes("gb2312"), "iso8859-1")+ ".xlsx";            response.setContentType("application/vnd.ms-excel;charset=UTF-8");            response.setHeader("Content-Disposition", "attachment;filename=" + fileName);            response.setCharacterEncoding("utf-8");            // response.setHeader("Content-disposition", "attachment; filename="            // + "exdddcel" + ".xlsx");// 组装附件名称和格式            String[] titles = { "最后IP", "最后访问时间", "密码", "用户名", "用户编号" };            /*SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");            String date = df.format(new Date());            Date dateNow = null;            try {                dateNow = df.parse(date);            } catch (ParseException e) {                e.printStackTrace();            }*/            Date dateNow = new Date();                         ArrayList<User> users = new ArrayList<User>();            User user = new User();            user.setLastIp("127.0.0.1");            user.setLastVisit(dateNow);            user.setPassword("123");            user.setUserId(1);            user.setUserName("名称:James");            users.add(user);            user = new User();            user.setLastIp("192.0.0.1");            user.setLastVisit(dateNow);            user.setPassword("456");            user.setUserId(2);            user.setUserName("名称:Mary");            users.add(user);            ServletOutputStream outputStream = response.getOutputStream();            ExportUtil.ExportExcel(titles, users, outputStream);        } catch (IOException e) {            e.printStackTrace();        }        return null;    } | 
五、程序中用到的实体类User
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 
44 
45 
46 
47 
48 
49 
50 
51 
52 
53 
54 
 | 
import java.io.Serializable;import java.util.Date;public class User implements Serializable {    private int userId;    private String userName;    private String password;    private String lastIp;    private Date lastVisit;    public int getUserId() {        return userId;    }    public void setUserId(int userId) {        this.userId = userId;    }    public String getUserName() {        return userName;    }    public void setUserName(String userName) {        this.userName = userName;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    public String getLastIp() {        return lastIp;    }    public void setLastIp(String lastIp) {        this.lastIp = lastIp;    }    public Date getLastVisit() {        return lastVisit;    }    public void setLastVisit(Date lastVisit) {        this.lastVisit = lastVisit;    }} | 
六、异常情况
1、标题乱码(注释代码会出现标题乱码)
| 
 1 
2 
 | 
//String fileName = new String(("导出excel标题").getBytes(), "UTF-8") + ".xlsx";            String fileName=new String(("导出excel标题").getBytes("gb2312"), "iso8859-1")+ ".xlsx"; | 
七、参考文档
1、http://webook-java.iteye.com/blog/1699621
2、http://www.cnblogs.com/yjmyzz/p/4206463.html
Java_导出Excel的更多相关文章
- C#使用Aspose.Cells导出Excel简单实现
		
首先,需要添加引用Aspose.Cells.dll,官网下载地址:http://downloads.aspose.com/cells/net 将DataTable导出Xlsx格式的文件下载(网页输出) ...
 - 利用poi导出Excel
		
import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.r ...
 - [django]数据导出excel升级强化版(很强大!)
		
不多说了,原理采用xlwt导出excel文件,所谓的强化版指的是实现在网页上选择一定条件导出对应的数据 之前我的博文出过这类文章,但只是实现导出数据,这次左思右想,再加上网上的搜索,终于找出方法实现条 ...
 - NPOI导出Excel
		
using System;using System.Collections.Generic;using System.Linq;using System.Text;#region NPOIusing ...
 - ASP.NET Core 导入导出Excel xlsx 文件
		
ASP.NET Core 使用EPPlus.Core导入导出Excel xlsx 文件,EPPlus.Core支持Excel 2007/2010 xlsx文件导入导出,可以运行在Windows, Li ...
 - asp.net DataTable导出Excel 自定义列名
		
1.添加引用NPOI.dll 2.cs文件头部添加 using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using System.IO; 3.代码如 ...
 - Aspose.Cells导出Excel(1)
		
利用Aspose.Cells导出excel 注意的问题 1.DataTable的处理 2.进行编码,便于中文名文件下载 3.别忘了Aspose.Cells.dll(可以自己在网上搜索) public ...
 - 前端导出Excel兼容写法
		
今天整理出在Web前端导出Excel的写法,写了一个工具类,对各个浏览器进行了兼容. 首先,导出的数据来源可能有两种: 1. 页面的HTML内容(一般是table) 2. 纯数据 PS:不同的数据源, ...
 - JS导出excel 兼容ie、chrome、firefox
		
运用js实现将页面中的table导出为excel文件,页面显示如下: 导出的excel文件显示如下: 实现代码: <!DOCTYPE html> <html> <head ...
 
随机推荐
- overflow属性在IE6下面失去效果
			
自然状态下 overflow的属性设置,本来是超过了一定的长度时会自动产生滚动条,但是在ie6下面失效了. 例如:原来的代码: .code{overflow-x:auto;margin:5px aut ...
 - linux命令(7):ipcs/ipcrm命令
			
ipcs作用 :查看消息队列(ipcs –q).共享内存(ipcs –m).信号灯(ipcs -s) ipcrm作用 :删除消息队列.共享内存.信号灯 ipcrm使用方式: ipcrm [ -M ke ...
 - Django内置信号
			
阅读目录(Content) Django中内置的signal 自定义信号 1.定义信号 2.注册信号 3.触发信号 回到顶部(go to top) Django中内置的signal Django中提供 ...
 - git reset用法
			
git 删除 错误 提交的 commit 方法: 根据–soft –mixed –hard,会对working tree和index和HEAD进行重置: git reset -- ...
 - ngx_lua_waf完整安装说明
			
测试环境:centos5.6 x32,nginx1.4.4,LuaJIT-2.0.3,ngx_devel_kit-0.2.19.lua-nginx-module-0.9.11,ngx_lua_waf ...
 - GIT的安装及git状态的变更详解
			
一.安装git环境 (2)Git安装 Centos: yum install -y git Ubuntu: apt-get install git Windows安装git bash软件 注意不要使用 ...
 - Linux下python版本的升级步骤
			
1.先下载,你要升级的python版本(我升级的是python3.3.0) 可使用系统自带下载工具wget下载: wget http://www.python.org/ftp/python/3.3.0 ...
 - centos系统mysql数据库忘记密码重置方法(ERROR 1045 28000 Access denied...)
			
当mysql的密码错误的时候,就会报如下这样的错误信息 解决方法如下: 首先输入mysqld_safe --skip-grant-tables 然后停止mysql服务,输入service mysqld ...
 - TensorFlow-GPU安装配置(win10+tensorflow1.6+CUDA9.0+cudnn7.0+python3.6+Visual Studio2013)
			
安装步骤: TensorFlow官网 tensorflow一般只能装在python3上,CUDA9.0搭配cudnn7.0,CUDA8.0搭配cudnn6.0 查看对应要安装的环境版本(因为会不断更新 ...
 - Linux命令之route
			
route [-CFvnNee] [-A family] [-4|-6] route [-v] [-A family] [-4|-6] add [-net|-host] target [netmask ...