POI-java下载excel-HSSFWorkbook
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
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.hssf.util.HSSFColor;
import org.apache.poi.ss.util.CellRangeAddress;
/**
* Servlet implementation class GetSmariExcelServlet
*/
@WebServlet("/GetSmariExcelServlet")
public class GetSmariExcelServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public GetSmariExcelServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String shellParam=maker+" "+jigobu+" "+div+" "+dataFlg+" "+stime+" "+etime;
String shellName="/home/trial/AP/KIGYO_KARUTE/CGI/SUMMARY_DETAIL.SEARCH";
GetJsonAndData get = new GetJsonAndData();
String result = get.getDataString(shellName, shellParam);
StringBuilder resultJson = null;
GetSmariExcelServlet me=new GetSmariExcelServlet();
ExcelName="サマリ";
response.setContentType("text/json; charset=utf-8");
HSSFWorkbook workbook = me.getExcelFile(result); //拿到 创建好并且填充好td 的workbook
response.setContentType("application/ms-excel;charset=UTF-8");//
response.addHeader("Content-Disposition", "attachment; filename="
+ URLEncoder.encode(ExcelName, "utf-8") + ".xls");//
OutputStream ouputStream = response.getOutputStream(); //拿到response的输出流
workbook.write(ouputStream); //workbook.write(输出流--输出的方向);
ouputStream.flush(); //提交
ouputStream.close(); //关闭,返回页面 ,下载excel
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request,response);
}
/**
*用字符串拼html文 --往excel中写入内容
*/
private StringBuilder smariTable(String result,String shellParam){
String[] resultR = result.split("\n");
StringBuilder html=new StringBuilder();
html.append("<html>");
html.append("<head>");
html.append("<style>");
html.append("td{border:1px solid #A3C0E8;overflow:hidden;white-space:nowrap;color:black;text-align:center;}");
html.append(".htd{background-color:#00619C;color:#FFFFFF}");
html.append(".std{background-color:#FCE4D6;color:#413B38}");
html.append("</style></head><body><table>");
//....
html.append("<tr>");
html.append("<td class='htd' rowspan='3'>クラスター企業</td>");
//....
html.append("</tr>");
String[] head=resultR[0].split(" ");
html.append("<tr>");
for (int i=1;i<collen-1;i++) {
if (i<3||i==(3+2*mcount)||i==(4+4*mcount)||i==(5+4*mcount)||i==(6+6*mcount)||i==(7+6*mcount)) {
}else{
html.append("<td class='htd'>"+head[i+1]+"</td>");
}
}
html.append("</tr>");
for (int i=1;i<resultR.length;i++) {
html.append("<tr>");
//....
html.append("</tr>");
}
html.append("</table></body></html>");
return html;
}
/**
*用POI的HSSFWorkbook生成excel文件
*/
public HSSFWorkbook getExcelFile(String result) {
HSSFWorkbook workbook = new HSSFWorkbook(); //
HSSFSheet sheet = workbook.createSheet("サマリ"); // workbook.createSheet("excel中工作表的名字")
sheet.createFreezePane( 2, 3, 3, 4); //冻结的列以及行
//createFreezePane(p1要冻结的列数,p2要冻结的行数,p3右侧窗格从第几列开始显示,p4下侧窗格从第几行开始显示); 其中 p3>p1,p4>p2,否则异常
//合并单元格 第一个和第二个参数表示开始行和结束行,第三和第四个参数表示开始列和结束列
//sheet.addMergedRegion(new CellRangeAddress(0,0,0,8));
sheet.addMergedRegion(new CellRangeAddress(0,0,2*m+3,4*m+4));
//合并单元格 addMergedRegion(new CellRangeAddress(起始行,起始列,结束行,结束列));
//表头白色字体
HSSFFont FontWhiteBold = workbook.createFont();//创建字体样式
FontWhiteBold.setFontHeightInPoints((short)12);//设置字体大小
FontWhiteBold.setFontName("Meiryo UI");//设置字体
FontWhiteBold.setColor(HSSFColor.WHITE.index);//设置默认字体颜色白色
FontWhiteBold.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);//正常字体 ,还有加粗字体等
//表头样式
HSSFCellStyle headStyle = (HSSFCellStyle) workbook.createCellStyle();//创建单元格样式
headStyle.setBorderBottom((short) 1);//设置边框 -- setBorderBottom等函数的参数都为short,要强制转化int型数据为short
headStyle.setBorderLeft((short) 1);//设置边框
headStyle.setBorderRight((short) 1);//设置边框
headStyle.setBorderTop((short) 1);//设置边框
headStyle.setLeftBorderColor(HSSFColor.BLUE_GREY.index);
headStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//单元格内容居中
headStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//单元格内容垂直居中
headStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);//背景
headStyle.setFillForegroundColor(HSSFColor.ROYAL_BLUE.index);//设置背景色
headStyle.setFont(FontWhiteBold);//字体--setFont(定义好的字体类);
sheet.setColumnWidth(0, 8000);//设置第一列的列宽
HSSFRow headRow0 = sheet.createRow(0); //创建第一行 tr
HSSFCell mes_cell = (HSSFCell) headRow0.createCell(i); //第一行的第一个单元格 td
mes_cell.setCellValue(head0[i]); //td的值
mes_cell.setCellStyle(headStyle); //td样式
HSSFRow headRow1 = sheet.createRow(i);
HSSFCell mes_cell = (HSSFCell) headRow1.createCell(j);
mes_cell.setCellValue(head1[i]);
mes_cell.setCellStyle(headStyle);
sheet.groupColumn(2, m); //分组 -- 多列多行 点-收缩,+伸开的效果 前闭(后-1)开
sheet.groupColumn(2+m, 2*m);
sheet.groupColumn(2*m+3, 3*m+1);
sheet.groupColumn(3*m+3, 4*m+1);
sheet.groupColumn(4*m+5, 5*m+3);
sheet.groupColumn(5*m+5, 6*m+3);
sheet.setColumnGroupCollapsed(2, true); //分的组 收缩起来
sheet.setColumnGroupCollapsed(2+m, true);
sheet.setColumnGroupCollapsed(2*m+3, true);
sheet.setColumnGroupCollapsed(3*m+3, true);
sheet.setColumnGroupCollapsed(4*m+5, true);
sheet.setColumnGroupCollapsed(5*m+5, true);
return workbook;
}
}
POI-java下载excel-HSSFWorkbook的更多相关文章
- java的poi技术下载Excel模板上传Excel读取Excel中内容(SSM框架)
使用到的jar包 JSP: client.jsp <%@ page language="java" contentType="text/html; charset= ...
- 【小坑】java下载excel文件
excel文件的导入导出是很常见的功能,这次做了个下载的功能,踩了一些坑,记下来避免以后重复踩…… 1.inputstream序列化问题 Could not write JSON document: ...
- java下载Excel模板(工具类)
一次文件下载记录 一次不成熟的文件下载操作记录,希望能对需要的人有所帮助. 1.前端代码 $("#downloadModel").click(function(){ var mod ...
- java 下载Excel模板
前端: JSP: <div id="insertBtn" class="MyCssBtn leftBtn" onclick="download( ...
- java下载excel,excel从数据库获取数据
<!-- poi --> <dependency> <groupId>org.apache.poi</groupId> <artifactId&g ...
- poi java读取excel文件
官网使用学习链接地址 http://poi.apache.org/components/spreadsheet/quick-guide.html
- java的poi技术读取Excel数据到MySQL
这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 : java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术可以在 ...
- java的poi技术写Excel的Sheet
在这之前写过关于java读,写Excel的blog如下: Excel转Html java的poi技术读,写Excel[2003-2007,2010] java的poi技术读取Excel[2003-20 ...
- java的poi技术读取Excel[2003-2007,2010]
这篇blog主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx. 读取excel和MySQL相关: ja ...
- java写入excel文件poi
java写入excel文件 java写入excel文件poi,支持xlsx与xls,没有文件自动创建 package com.utils; import java.io.File; import ja ...
随机推荐
- angular 学习笔记(1) 使用angular完整写法
视图部分: <div ng-app="myapp"> <div ng-controller="myctrl"> <p>{{n ...
- OpenFirewall
1.写一份json文件:将要添加防火墙例外的应用程序和端口写入到json文件中 2.打开防火墙,读取json文件添加例外 /// <summary> /// Firewall.xaml 的 ...
- JSP注释格式
一.JSP注释格式来源 JSP是Sun Microsystems公司制定的一种服务器端动态网页技术的组件规范,其主体由HTML.CSS.JavaScript和Java拼凑组成. 正是因为JSP是一种组 ...
- Payoneer个人账户注册申请教程
1)照牛排于2013年末写的<免费申请Payoneer万事达预付卡+美国银行账号教程>非常详尽,网友纷纷转载,但生命在于折腾,Payoneer官网几经改版,自2015年3月推出无卡账户以来 ...
- 将腾讯视频客户端缓冲的文件转换为一个MP4格式文件
打开腾讯视频windows客户端,播放要下载的视频,逐步快进使其缓冲完毕: 按照下图所示,复制缓存路径: 在cmd.exe的界面中输入“cd C:\854456b6d5a187ff3c0f553918 ...
- java Vamei快速教程21 事件响应
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在GUI中,我们看到了如何用图形树来组织一个图形界面.然而,这样的图形界面是静态的 ...
- 漫谈 Clustering (番外篇): Dimensionality Reduction
由于总是有各种各样的杂事,这个系列的文章竟然一下子拖了好几个月,(实际上其他的日志我也写得比较少),现在决定还是先把这篇降维的日志写完.我甚至都以及忘记了在这个系列中之前有没有讲过“特征”(featu ...
- matlab一次读取多张图片
实验平台:matlab R2010Rb 读取C:\Users\KCl\Documents\MATLAB\SRCNN\Set5文件夹下所有bmp文件,并存储到im字典中 clear all clc im ...
- [转] 防止js全局变量污染方法总结
javaScript 可以随意定义保存所有应用资源的全局变量.但全局变量可以削弱程序灵活性,增大了模块之间的耦合性.在多人协作时,如果定义过多的全局变量 有可能造成全局变量冲突,也就是全局变量污染问题 ...
- jeesite项目
1,登录页面.最高权限管理员 用户名:thinkgem 密码:admin 2,登陆之后展示的首页 3,分为不同的模块,由不同的入负责,我负责日志管理 已完成功能:模糊查询,分页,导入,导出Excel ...