【思路解释】

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

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

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

【工程截图】

【User.java】

  1. package com.Higgin.Excel.domain;
  2.  
  3. public class User {
  4. private int id;
  5. private String name;
  6. private String sex;
  7. private String phone;
  8. private String email;
      ...省去getset方法......
  9. }

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

  1. package com.Higgin.Excel.dao;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5.  
  6. import org.junit.Test;
  7.  
  8. import com.Higgin.Excel.domain.User;
  9.  
  10. public class UserDao {
  11. /**
  12. * 模拟从数据库获取的User列表
  13. * @return
  14. */
  15. public List<User> getUserList(){
  16. List<User> userList=new ArrayList<User>();
  17. for(int i=1;i<=99;i++){
  18. User user=new User();
  19. user.setId(i);
  20. user.setName("Higgin"+i);
  21. user.setSex(i%3==0?"男":"女");
  22. user.setPhone("000000000"+(i*i));
  23. user.setEmail("myemail"+i+"@qq.com");
  24. userList.add(user);
  25. }
  26. return userList;
  27. }
  28.  
  29. }

【ExcelService.java】

  1. package com.Higgin.Excel.service;
  2.  
  3. import java.io.FileOutputStream;
  4. import java.io.IOException;
  5. import java.util.List;
  6. import org.apache.poi.hssf.usermodel.HSSFCell;
  7. import org.apache.poi.hssf.usermodel.HSSFCellStyle;
  8. import org.apache.poi.hssf.usermodel.HSSFFont;
  9. import org.apache.poi.hssf.usermodel.HSSFRow;
  10. import org.apache.poi.hssf.usermodel.HSSFSheet;
  11. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  12. import org.apache.poi.ss.util.CellRangeAddress;
  13. import org.junit.Test;
  14. import com.Higgin.Excel.dao.UserDao;
  15. import com.Higgin.Excel.domain.User;
  16.  
  17. public class ExcelService {
  18. private UserDao userDao=new UserDao();
  19.  
  20. //模拟从数据库中查询获得对应的User列表
  21. private List<User> userList=userDao.getUserList();
  22.  
  23. @Test
  24. public void outputExcel() throws IOException{
  25. //1.创建工作簿
  26. HSSFWorkbook workbook=new HSSFWorkbook();
  27. //1.1创建 合并单元格对象
  28. CellRangeAddress cellRangeAddress=new CellRangeAddress(0,0,0,4);
  29. //1.2创建 头标题,并设置其字体
  30. HSSFCellStyle style1=createCellStyle(workbook,(short)16); //自己写的 设置单元格样式的方法 见最后
  31. //1.3创建 标题样式
  32. HSSFCellStyle style2=createCellStyle(workbook,(short)13);
  33.  
  34. //2.创建工作表
  35. HSSFSheet sheet =workbook.createSheet("用户列表");
  36. //2.1 加载合并单元格对象
  37. sheet.addMergedRegion(cellRangeAddress);
  38.  
  39. //3.创建行
  40. //3.1创建头标题行,并写入头标题
  41. HSSFRow row1=sheet.createRow(0);
  42. HSSFCell cell1=row1.createCell(0);
  43. cell1.setCellStyle(style1);
  44. cell1.setCellValue("用户列表");
  45.  
  46. //3.2 创建列标题,并写入列标题
  47. HSSFRow row2=sheet.createRow(1);
  48. String[] titles={"id","姓名","性别","电话","邮箱"};
  49. for(int i=0;i<titles.length;i++){
  50. HSSFCell cell2=row2.createCell(i);
  51. cell2.setCellStyle(style2);
  52. cell2.setCellValue(titles[i]);
  53. }
  54.  
  55. //4.创建单元格,写入用户数据到excel
  56. if(userList!=null&&userList.size()>0){
  57. for(int j=0;j<userList.size();j++){
  58. HSSFRow row=sheet.createRow(j+2); //因为前两行分别是头标题和列标题,故要从第3行开始
  59. row.createCell(0).setCellValue(String.valueOf(userList.get(j).getId()));
  60. row.createCell(1).setCellValue(userList.get(j).getName());
  61. row.createCell(2).setCellValue(userList.get(j).getSex());
  62. row.createCell(3).setCellValue(userList.get(j).getPhone());
  63. row.createCell(4).setCellValue(userList.get(j).getEmail());
  64. }
  65. }
  66.  
  67. //5.输出
  68. String fileName="D:\\用户列表.xls";
  69. FileOutputStream fileOutputStream=new FileOutputStream(fileName);
  70. workbook.write(fileOutputStream);
  71. workbook.close();
  72. fileOutputStream.close();
  73. }
  74.  
  75. /**
  76. * 创建单元格 样式
  77. * @param workbook 工作簿
  78. * @param fontSize 字体大小
  79. * @return 单元格样式
  80. */
  81. private static HSSFCellStyle createCellStyle(HSSFWorkbook workbook,short fontSize){
  82. HSSFCellStyle style=workbook.createCellStyle(); //创建单元格对象
  83. style.setAlignment(HSSFCellStyle.ALIGN_CENTER); //水平居中
  84. style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); //垂直居中
  85. //创建字体
  86. HSSFFont font=workbook.createFont();
  87. font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); //加粗字体
  88. font.setFontHeightInPoints(fontSize); //设置字体大小
  89. //在样式中加载字体
  90. style.setFont(font);
  91. return style;
  92. }
  93. }

【运行结果】

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. 使用CPU探查器优化XAML程序

    如果您正在开发一个使用 XAML (是否是 c + +. C# 或 VB) 的 Windows 商店应用程序,还有一个好的机会来提高应用程序的性能.为了帮助完成这一点,我们所有在售的能够应用开发 Wi ...

  2. UVa1328 - Period(KMP找最短循环节)

    题目大意 给定一个长度为n的字符串,求它的每个前缀的最短循环节 题解 白书例题~~~ "错位部分"长度为i-f[i], 如果这个前i个字符能够组成一个周期串,那么"错位& ...

  3. JavaScript- The Good Parts Chapter 6

    Thee(你) I’ll chase(追逐:追捕) hence(因此:今后), thou(你:尔,汝) wolf in sheep’s array.—William Shakespeare, The ...

  4. light oj 1148 - Mad Counting

    1148 - Mad Counting   PDF (English) Statistics Forum Time Limit: 0.5 second(s) Memory Limit: 32 MB M ...

  5. 【Android - 进阶】之自定义视图浅析

    1       概述 Android自定义View / ViewGroup的步骤大致如下: 1) 自定义属性: 2) 选择和设置构造方法: 3) 重写onMeasure()方法: 4) 重写onDra ...

  6. 对Jsp提交input标签空格和回车的处理

    今天做增加的时候发现一个问题,在js中去掉空格的时候如果这么写 var stage_name = document.getElementById("stage_name").val ...

  7. 阿里云ONS而微软Azure Service Bus体系结构和功能比较

    阿里云ONS而微软Azure Service bus体系结构和功能比较 版权所有所有,转载请注明出处http://blog.csdn.net/yangzhenping.谢谢! 阿里云的开放消息服务: ...

  8. 谋哥:App排行榜的秘密

    App在改变世界,改变人们的生活.       如今购物大家都用淘宝.京东,吃饭你会用饭否,看天气预报你用墨迹天气,看视频用优酷.K歌你用唱吧,聊天联系你用微信,看新闻你用今日头条等等.你的生活由你自 ...

  9. Ubuntu jdk报Picked up JAVA_TOOL_OPTIONS信息解决

    下面是摘自http://www.cnblogs.com/coderbean/p/4522182.html 以下是我在网上找了好久找到的: Ubuntu jdk报Picked up JAVA_TOOL_ ...

  10. Apache的prefork模式和worker模式(转)

    prefork模式这个多路处理模块(MPM)实现了一个非线程型的.预派生的web服务器,它的工作方式类似于Apache 1.3.它适合于没有线程安全库,需要避免线程兼容性问题的系统.它是要求将每个请求 ...