HSSFWorkBooK用法 ---Excel表的导出和设置

1 public ActionResult excelPrint() {
2 HSSFWorkbook workbook = new HSSFWorkbook();// 创建一个Excel文件
3 HSSFSheet sheet = workbook.createSheet();// 创建一个Excel的Sheet
4 sheet.createFreezePane(1, 3);// 冻结
5 // 设置列宽
6 sheet.setColumnWidth(0, 1000);
7 sheet.setColumnWidth(1, 3500);
8 sheet.setColumnWidth(2, 3500);
9 sheet.setColumnWidth(3, 6500);
10 sheet.setColumnWidth(4, 6500);
11 sheet.setColumnWidth(5, 6500);
12 sheet.setColumnWidth(6, 6500);
13 sheet.setColumnWidth(7, 2500);
14 // Sheet样式
15 HSSFCellStyle sheetStyle = workbook.createCellStyle();
16 // 背景色的设定
17 sheetStyle.setFillBackgroundColor(HSSFColor.GREY_25_PERCENT.index);
18 // 前景色的设定
19 sheetStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);
20 // 填充模式
21 sheetStyle.setFillPattern(HSSFCellStyle.FINE_DOTS);
22 // 设置列的样式
23 for (int i = 0; i <= 14; i++) {
24 sheet.setDefaultColumnStyle((short) i, sheetStyle);
25 }
26 // 设置字体
27 HSSFFont headfont = workbook.createFont();
28 headfont.setFontName("黑体");
29 headfont.setFontHeightInPoints((short) 22);// 字体大小
30 headfont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 加粗
31 // 另一个样式
32 HSSFCellStyle headstyle = workbook.createCellStyle();
33 headstyle.setFont(headfont);
34 headstyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 左右居中
35 headstyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 上下居中
36 headstyle.setLocked(true);
37 headstyle.setWrapText(true);// 自动换行
38 // 另一个字体样式
39 HSSFFont columnHeadFont = workbook.createFont();
40 columnHeadFont.setFontName("宋体");
41 columnHeadFont.setFontHeightInPoints((short) 10);
42 columnHeadFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
43 // 列头的样式
44 HSSFCellStyle columnHeadStyle = workbook.createCellStyle();
45 columnHeadStyle.setFont(columnHeadFont);
46 columnHeadStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 左右居中
47 columnHeadStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 上下居中
48 columnHeadStyle.setLocked(true);
49 columnHeadStyle.setWrapText(true);
50 columnHeadStyle.setLeftBorderColor(HSSFColor.BLACK.index);// 左边框的颜色
51 columnHeadStyle.setBorderLeft((short) 1);// 边框的大小
52 columnHeadStyle.setRightBorderColor(HSSFColor.BLACK.index);// 右边框的颜色
53 columnHeadStyle.setBorderRight((short) 1);// 边框的大小
54 columnHeadStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 设置单元格的边框为粗体
55 columnHeadStyle.setBottomBorderColor(HSSFColor.BLACK.index); // 设置单元格的边框颜色
56 // 设置单元格的背景颜色(单元格的样式会覆盖列或行的样式)
57 columnHeadStyle.setFillForegroundColor(HSSFColor.WHITE.index);
58
59 HSSFFont font = workbook.createFont();
60 font.setFontName("宋体");
61 font.setFontHeightInPoints((short) 10);
62 // 普通单元格样式
63 HSSFCellStyle style = workbook.createCellStyle();
64 style.setFont(font);
65 style.setAlignment(HSSFCellStyle.ALIGN_LEFT);// 左右居中
66 style.setVerticalAlignment(HSSFCellStyle.VERTICAL_TOP);// 上下居中
67 style.setWrapText(true);
68 style.setLeftBorderColor(HSSFColor.BLACK.index);
69 style.setBorderLeft((short) 1);
70 style.setRightBorderColor(HSSFColor.BLACK.index);
71 style.setBorderRight((short) 1);
72 style.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 设置单元格的边框为粗体
73 style.setBottomBorderColor(HSSFColor.BLACK.index); // 设置单元格的边框颜色.
74 style.setFillForegroundColor(HSSFColor.WHITE.index);// 设置单元格的背景颜色.
75 // 另一个样式
76 HSSFCellStyle centerstyle = workbook.createCellStyle();
77 centerstyle.setFont(font);
78 centerstyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 左右居中
79 centerstyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 上下居中
80 centerstyle.setWrapText(true);
81 centerstyle.setLeftBorderColor(HSSFColor.BLACK.index);
82 centerstyle.setBorderLeft((short) 1);
83 centerstyle.setRightBorderColor(HSSFColor.BLACK.index);
84 centerstyle.setBorderRight((short) 1);
85 centerstyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 设置单元格的边框为粗体
86 centerstyle.setBottomBorderColor(HSSFColor.BLACK.index); // 设置单元格的边框颜色.
87 centerstyle.setFillForegroundColor(HSSFColor.WHITE.index);// 设置单元格的背景颜色.
88
89 try {
90 // 创建第一行
91 HSSFRow row0 = sheet.createRow(0);
92 // 设置行高
93 row0.setHeight((short) 900);
94 // 创建第一列
95 HSSFCell cell0 = row0.createCell(0);
96 cell0.setCellValue(new HSSFRichTextString("中非发展基金投资项目调度会工作落实情况对照表"));
97 cell0.setCellStyle(headstyle);
98 /**
99 * 合并单元格
100 * 第一个参数:第一个单元格的行数(从0开始)
101 * 第二个参数:第二个单元格的行数(从0开始)
102 * 第三个参数:第一个单元格的列数(从0开始)
103 * 第四个参数:第二个单元格的列数(从0开始)
104 */
105 CellRangeAddress range = new CellRangeAddress(0, 0, 0, 7);
106 sheet.addMergedRegion(range);
107 // 创建第二行
108 HSSFRow row1 = sheet.createRow(1);
109 HSSFCell cell1 = row1.createCell(0);
110 cell1.setCellValue(new HSSFRichTextString("本次会议时间:2009年8月31日 前次会议时间:2009年8月24日"));
111 cell1.setCellStyle(centerstyle);
112 // 合并单元格
113 range = new CellRangeAddress(1, 2, 0, 7);
114 sheet.addMergedRegion(range);
115 // 第三行
116 HSSFRow row2 = sheet.createRow(3);
117 row2.setHeight((short) 750);
118 HSSFCell cell = row2.createCell(0);
119 cell.setCellValue(new HSSFRichTextString("责任者"));
120 cell.setCellStyle(columnHeadStyle);
121 cell = row2.createCell(1);
122 cell.setCellValue(new HSSFRichTextString("成熟度排序"));
123 cell.setCellStyle(columnHeadStyle);
124 cell = row2.createCell(2);
125 cell.setCellValue(new HSSFRichTextString("事项"));
126 cell.setCellStyle(columnHeadStyle);
127 cell = row2.createCell(3);
128 cell.setCellValue(new HSSFRichTextString("前次会议要求/n/新项目的项目概要"));
129 cell.setCellStyle(columnHeadStyle);
130 cell = row2.createCell(4);
131 cell.setCellValue(new HSSFRichTextString("上周工作进展"));
132 cell.setCellStyle(columnHeadStyle);
133 cell = row2.createCell(5);
134 cell.setCellValue(new HSSFRichTextString("本周工作计划"));
135 cell.setCellStyle(columnHeadStyle);
136 cell = row2.createCell(6);
137 cell.setCellValue(new HSSFRichTextString("问题和建议"));
138 cell.setCellStyle(columnHeadStyle);
139 cell = row2.createCell(7);
140 cell.setCellValue(new HSSFRichTextString("备 注"));
141 cell.setCellStyle(columnHeadStyle);
142 // 访问数据库,得到数据集
143 List<DeitelVO> deitelVOList = getEntityManager().queryDeitelVOList();
144 int m = 4;
145 int k = 4;
146 for (int i = 0; i < deitelVOList.size(); i++) {
147 DeitelVO vo = deitelVOList.get(i);
148 String dname = vo.getDname();
149 List<Workinfo> workList = vo.getWorkInfoList();
150 HSSFRow row = sheet.createRow(m);
151 cell = row.createCell(0);
152 cell.setCellValue(new HSSFRichTextString(dname));
153 cell.setCellStyle(centerstyle);
154 // 合并单元格
155 range = new CellRangeAddress(m, m + workList.size() - 1, 0, 0);
156 sheet.addMergedRegion(range);
157 m = m + workList.size();
158
159 for (int j = 0; j < workList.size(); j++) {
160 Workinfo w = workList.get(j);
161 // 遍历数据集创建Excel的行
162 row = sheet.getRow(k + j);
163 if (null == row) {
164 row = sheet.createRow(k + j);
165 }
166 cell = row.createCell(1);
167 cell.setCellValue(w.getWnumber());
168 cell.setCellStyle(centerstyle);
169 cell = row.createCell(2);
170 cell.setCellValue(new HSSFRichTextString(w.getWitem()));
171 cell.setCellStyle(style);
172 cell = row.createCell(3);
173 cell.setCellValue(new HSSFRichTextString(w.getWmeting()));
174 cell.setCellStyle(style);
175 cell = row.createCell(4);
176 cell.setCellValue(new HSSFRichTextString(w.getWbweek()));
177 cell.setCellStyle(style);
178 cell = row.createCell(5);
179 cell.setCellValue(new HSSFRichTextString(w.getWtweek()));
180 cell.setCellStyle(style);
181 cell = row.createCell(6);
182 cell.setCellValue(new HSSFRichTextString(w.getWproblem()));
183 cell.setCellStyle(style);
184 cell = row.createCell(7);
185 cell.setCellValue(new HSSFRichTextString(w.getWremark()));
186 cell.setCellStyle(style);
187 }
188 k = k + workList.size();
189 }
190 // 列尾
191 int footRownumber = sheet.getLastRowNum();
192 HSSFRow footRow = sheet.createRow(footRownumber + 1);
193 HSSFCell footRowcell = footRow.createCell(0);
194 footRowcell.setCellValue(new HSSFRichTextString(" 审 定:XXX 审 核:XXX 汇 总:XX"));
195 footRowcell.setCellStyle(centerstyle);
196 range = new CellRangeAddress(footRownumber + 1, footRownumber + 1, 0, 7);
197 sheet.addMergedRegion(range);
198
199 HttpServletResponse response = getResponse();
200 HttpServletRequest request = getRequest();
201 String filename = "未命名.xls";//设置下载时客户端Excel的名称
202 // 请见:http://zmx.javaeye.com/blog/622529
203 filename = Util.encodeFilename(filename, request);
204 response.setContentType("application/vnd.ms-excel");
205 response.setHeader("Content-disposition", "attachment;filename=" + filename);
206 OutputStream ouputStream = response.getOutputStream();
207 workbook.write(ouputStream);
208 ouputStream.flush();
209 ouputStream.close();
210
211 } catch (Exception e) {
212 e.printStackTrace();
213 }
214 return null;
215 }

HSSFWorkBooK用法 ---Excel表的导出和设置的更多相关文章
- HSSFWorkBooK用法 —Excel表的导出和设置
HSSFWorkBooK用法 —Excel表的导出和设置 2013年02月21日 ⁄ 综合 ⁄ 共 9248字 ⁄ 字号 小 中 大 ⁄ 评论关闭 public ActionResult excelP ...
- JAVA实现创建Excel表并导出(转发)
<span style="font-family:Verdana, Arial, Helvetica, sans-serif;line-height:25.2px;background ...
- 如果从excel表中导出insert-sql
=CONCATENATE("INSERT INTO p_act_lottery(actId,status,grantWay,createTime,invalidTime,amount,pri ...
- 【ITOO 1】将List数据导出Excel表
需求描述:在课表导入的时候,首先给用户提供模板(excel),然后将用户填写好的数据读取到list集合中.再进行判空处赋值处理,以及去重处理.这篇博客,主要介绍读取excel表和导出excel表的方法 ...
- SSM中使用POI实现excel的导入导出
环境:导入POI对应的包 环境: Spring+SpringMVC+Mybatis POI对应的包 <dependency> <groupId>org.apache.poi&l ...
- ASP.NET导出excel表方法汇总
asp.net里导出excel表方法汇总 1.由dataset生成 public void CreateExcel(DataSet ds,string typeid,string FileName) ...
- asp.net使用MVC4框架基于NPOI做导出数据到Excel表
NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目. 使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 ...
- java中的数据导出到Excel表中
整个项目中导出数据到.Excel的源码 import java.io.BufferedOutputStream; import java.io.FileInputStream; import java ...
- JAVA笔记-如何将百万级数据高效的导出到Excel表单
今天,一朋友问我使用JAVA有没有什么办法导出百万级的数据到Excel工作表. 当时我的第一个念头就是这真的是一个好疯狂的念头.然后就想假如真的有这样类似的需求,我自己应该怎么做呢? ps: 首先科普 ...
随机推荐
- RMAN异机复制数据库(不同路径)
1.恢复参数文件 设置环境变量: export ORACLE_SID=hncdfhq 登录RMAN: rman target / 在RMAN里把数据库起到nomount状态: startup nomo ...
- python分解质因数
将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5. # !/usr/bin/env python # -*- coding:utf-8 -*- # Author:Hiuhung Wa ...
- [React Intl] Format a Date Relative to the Current Date Using react-intl FormattedRelative
Given a date, we’ll use the react-intl FormattedRelative component to render a date in a human reada ...
- Qt的一些开发技巧
Lambda匿名函数 有时候槽函数代码辑逻辑非常简单,可以直接用下面的Lambda匿名函数处理信号,简捷明了.需c++11支持,不支持自身递归调用. 1 2 3 4 5 6 7 QComboBox * ...
- OC学习篇之---归档和解挡
今天我们来看一下OC中的一个重要知识点:归档 OC中的归档就是将对象写入到一个文件中,Java中的ObjectInputStream和ObjectOutputStream来进行操作的.当然在操作的这些 ...
- Google guava工具类的介绍和使用
概述 工具类 就是封装平常用的方法,不需要你重复造轮子,节省开发人员时间,提高工作效率.谷歌作为大公司,当然会从日常的工作中提取中很多高效率的方法出来.所以就诞生了guava.. 高效设计良好的API ...
- HDU 1394 Minimum Inversion Number(线段树求最小逆序数对)
HDU 1394 Minimum Inversion Number(线段树求最小逆序数对) ACM 题目地址:HDU 1394 Minimum Inversion Number 题意: 给一个序列由 ...
- idea+springboot+freemarker热部署(转)
今天在学习springboot集成freemarker模板引擎修改代码时,发现每次修改一次freemarker文件时,都必须重启下应用,浏览器刷新才能显示修改后的内容,这样效率太低,每次启动一次应用都 ...
- Android 最火高速开发框架AndroidAnnotations简单介绍
在上一篇Android 最火的高速开发框架androidannotations配置具体解释中介绍了在eclipse中配置androidannotation的步骤,如需配置请參考. 1.目标 andro ...
- hdu3360National Treasures (最大匹配,拆点法)
National Treasures Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...