【思路解释】

在正式上到WebProject之前,准备模拟一下WebProject后台的导出流程。

主要都写在ExcelService层,在Excel的Service层,首先要获得UserList,即数据库查询的User用户列表,这个UserList从UserDao的getUserList()方法获得,这个getUserList()方法实际没有查询数据库,只是自己创造了一些数据。

ExcelService获得了UserList之后,然后将数据按照一定的格式创建Excel、在Excel中写入数据。

【工程截图】

【User.java】

package com.Higgin.Excel.domain;

public class User {
private int id;
private String name;
private String sex;
private String phone;
private String email;
  ...省去get和set方法......
}

【UserDao.java】//模拟从数据库中获得数据

package com.Higgin.Excel.dao;

import java.util.ArrayList;
import java.util.List; import org.junit.Test; import com.Higgin.Excel.domain.User; public class UserDao {
/**
* 模拟从数据库获取的User列表
* @return
*/
public List<User> getUserList(){
List<User> userList=new ArrayList<User>();
for(int i=1;i<=99;i++){
User user=new User();
user.setId(i);
user.setName("Higgin"+i);
user.setSex(i%3==0?"男":"女");
user.setPhone("000000000"+(i*i));
user.setEmail("myemail"+i+"@qq.com");
userList.add(user);
}
return userList;
} }

【ExcelService.java】

package com.Higgin.Excel.service;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
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.util.CellRangeAddress;
import org.junit.Test;
import com.Higgin.Excel.dao.UserDao;
import com.Higgin.Excel.domain.User; public class ExcelService {
private UserDao userDao=new UserDao(); //模拟从数据库中查询获得对应的User列表
private List<User> userList=userDao.getUserList(); @Test
public void outputExcel() throws IOException{
//1.创建工作簿
HSSFWorkbook workbook=new HSSFWorkbook();
//1.1创建 合并单元格对象
CellRangeAddress cellRangeAddress=new CellRangeAddress(0,0,0,4);
//1.2创建 头标题,并设置其字体
HSSFCellStyle style1=createCellStyle(workbook,(short)16); //自己写的 设置单元格样式的方法 见最后
//1.3创建 标题样式
HSSFCellStyle style2=createCellStyle(workbook,(short)13); //2.创建工作表
HSSFSheet sheet =workbook.createSheet("用户列表");
//2.1 加载合并单元格对象
sheet.addMergedRegion(cellRangeAddress); //3.创建行
//3.1创建头标题行,并写入头标题
HSSFRow row1=sheet.createRow(0);
HSSFCell cell1=row1.createCell(0);
cell1.setCellStyle(style1);
cell1.setCellValue("用户列表"); //3.2 创建列标题,并写入列标题
HSSFRow row2=sheet.createRow(1);
String[] titles={"id","姓名","性别","电话","邮箱"};
for(int i=0;i<titles.length;i++){
HSSFCell cell2=row2.createCell(i);
cell2.setCellStyle(style2);
cell2.setCellValue(titles[i]);
} //4.创建单元格,写入用户数据到excel
if(userList!=null&&userList.size()>0){
for(int j=0;j<userList.size();j++){
HSSFRow row=sheet.createRow(j+2); //因为前两行分别是头标题和列标题,故要从第3行开始
row.createCell(0).setCellValue(String.valueOf(userList.get(j).getId()));
row.createCell(1).setCellValue(userList.get(j).getName());
row.createCell(2).setCellValue(userList.get(j).getSex());
row.createCell(3).setCellValue(userList.get(j).getPhone());
row.createCell(4).setCellValue(userList.get(j).getEmail());
}
} //5.输出
String fileName="D:\\用户列表.xls";
FileOutputStream fileOutputStream=new FileOutputStream(fileName);
workbook.write(fileOutputStream);
workbook.close();
fileOutputStream.close();
} /**
* 创建单元格 样式
* @param workbook 工作簿
* @param fontSize 字体大小
* @return 单元格样式
*/
private static HSSFCellStyle createCellStyle(HSSFWorkbook workbook,short fontSize){
HSSFCellStyle style=workbook.createCellStyle(); //创建单元格对象
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); //水平居中
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); //垂直居中
//创建字体
HSSFFont font=workbook.createFont();
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); //加粗字体
font.setFontHeightInPoints(fontSize); //设置字体大小
//在样式中加载字体
style.setFont(font);
return style;
}
}

【运行结果】

05_Excel操作_02_模拟Web环境的User列表导出的更多相关文章

  1. 05_Excel操作_03_模拟Web环境的Excel导入

    [思路简述] 本文继续上一篇文章,上一篇中生成了“D://用户列表.xls”的excel文件,我们接下来将这个excel导入,然后显示在控制台上. 工程什么的都同上一篇文章,只是在ExcelServi ...

  2. 利用 Apache Synapse 模拟 Web 服务

    Apache Synapse 是一个简单.轻量级的高性能企业服务总线 (ESB),它是在 Apache Software Foundation 的 Apache License Version 2.0 ...

  3. 模拟web服务器 (小项目) 搭建+部署

    模拟web服务器:可以从浏览器中访问到自己编写的服务器中的资源,将其资源显示在浏览器中. 技术选型: corejava 线程池 同任务并发执行 IO流 传递数据 客户端也会像服务端发送数据, 服务器像 ...

  4. ubuntu14.04安装及web环境的搭建

    在进行接下来的工作之前首先得准备一个Ubuntu的启动U盘以及腾出一个至少50G的系统盘(在网上看到有人用20G的,不知道效果怎么样).关于Ubuntu启动U盘大家可以参考这个帖子 http://ti ...

  5. 重新想象 Windows 8 Store Apps (70) - 其它: 文件压缩和解压缩, 与 Windows 商店相关的操作, app 与 web, 几个 Core 的应用, 页面的生命周期和程序的生命周期

    [源码下载] 重新想象 Windows 8 Store Apps (70) - 其它: 文件压缩和解压缩, 与 Windows 商店相关的操作, app 与 web, 几个 Core 的应用, 页面的 ...

  6. 在linux CentOS6上安装web环境

    感谢浏览,欢迎交流=.= 都说linux作为服务器优于window,近期也是学习了下linux. win7下安装了linux虚拟机,购买linux阿里云主机,开启linux之旅. 进入正题,在linu ...

  7. linux服务器WEB环境一键安装包lanmp教程之五

    在我们安装了linux服务器WEB环境一键安装包lanmp后,可能会有不少疑问还有就是使用过程中出现的问题,下面为大家总结几点比较常见的,如若还有其他疑问,可到wdlinux论坛寻找相关教程. 1.增 ...

  8. 使用Docker搭建简易的 Java Web 环境

    ![group_5622_0](http://ow20g4tgj.bkt.clouddn.com/2017-09-10-group_5622_0.png) 从[<从最简单的入手学习 Docker ...

  9. C# httpclient获取cookies实现模拟web登录

    目前在公司做一款平台化的产品,我主要负责PC端上的开发,在产品推荐过程中为了节省开发时间很多功能模块没来得及做原生,用CEF嵌入了很多带功能web页面,与客户端进行交互从而实现功能. 在二期开发中,产 ...

随机推荐

  1. 【原创】MapReduce编程系列之表连接

    问题描述 需要连接的表如下:其中左边是child,右边是parent,我们要做的是找出grandchild和grandparent的对应关系,为此需要进行表的连接. Tom Lucy Tom Jim ...

  2. POJ-2442 Sequence K路归并问题

    题目链接:http://poj.org/problem?id=2442 问题一:K个有序表合成一个有序表,元素共有n个.用堆优化 问题二:两个序列的前n小的元素.堆优化. 这题就是问题二的扩展,每次处 ...

  3. Codeforces13C–Sequence(区间DP)

    题目大意 给定一个含有N个数的序列,要求你对一些数减掉或者加上某个值,使得序列变为非递减的,问你加减的值的总和最少是多少? 题解 一个很显然的结果就是,变化后的每一个值肯定是等于原来序列的某个值,因为 ...

  4. 如何自己编译生成Eclipse插件,如hadoop-eclipse-plugin-2.2.0.jar

    如何自己编译生成Eclipse插件,如hadoop-eclipse-plugin-2.2.0.jar http://cxshun.iteye.com/blog/1876366 大数据是当今的一个热门话 ...

  5. 对比iOS网络组件:AFNetworking VS ASIHTTPRequest(转载)

    在开发iOS应用过程中,如何高效的与服务端API进行数据交换,是一个常见问题.一般开发者都会选择一个第三方的网络组件作为服务,以提高开发效率和稳定性.这些组件把复杂的网络底层操作封装成友好的类和方法, ...

  6. Android文字的阴影效果

    <!-- android:shadowDx 阴影的水平偏移量 即往右移的距离 --> <!-- android:shadowDy 阴影的垂直偏移量 即往下移的距离--> < ...

  7. 转载 yii2-按需加载并管理CSS样式/JS脚本

    一.资源包定义 Yii2对于CSS/JS 管理,使用AssetBundle资源包类. 创建如下: backend/assets/AppAsset.php namespace backend\asset ...

  8. mysql delete from

    delete a from #ta a  where exists (select 1 from #tb b where a.id=b.id)

  9. [AngularJS + Webpack] require directives

    direictives/index.js: module.exports = function(ngModule) { //register all the directives here requi ...

  10. Java 向Hbase表插入数据报(org.apache.hadoop.hbase.client.HTablePool$PooledHTable cannot be cast to org.apac)

    org.apache.hadoop.hbase.client.HTablePool$PooledHTable cannot be cast to org.apac 代码: //1.create HTa ...