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 ...
随机推荐
- Android 关于Acitivity 的setFlag以及launchmode的总结
Intent几种常见的flags: .FLAG_ACTIVITY_NEW_TASK:当Intent对象包含这个标记时,系统会寻找或创建一个新的task来放置目标Activity,寻找时依据目标Acti ...
- WIN7 64位对Excel操作异常
在本地做Excel导出功能的测试时,报出“检索COM 类工厂中CLSID 为 {00024500-0000-0000-C000-000000000046}的组件时失败”的异常,知道要对Excel进行D ...
- linux 命令——25 linux文件属性详解
Linux 文件或目录的属性主要包括:文件或目录的节点.种类.权限模式.链接数量.所归属的用户和用户组.最近访问或修改的时间等内容.具体情况如下: 命令: ls -lih 输出: [root@loca ...
- Python核心编程——多线程threading和队列
线程与进程类似不过他们是在同一个进程下执行的,并共享相同的上下文.可以将他们认为是在一个主进程或“主线程”中运行的迷你进程. 线程包括开始.执行顺序和结束三部分.它有一个指令指针,用于记录当前运行的上 ...
- C#的接口基础教程之七 覆盖虚接口
有时候我们需要表达一种抽象的东西,它是一些东西的概括,但我们又不能真正的看到它成为一个实体在我们眼前出现,为此面向对象的编程语言便有了抽象类的概念.C#作为一个面向对象的语言,必然也会引入抽象类这一概 ...
- DOM4j-中文API
1.DOM4J简介 DOM4J是 dom4j.org 出品的一个开源 XML 解析包.DOM4J应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM,SAX 和 JAXP. ...
- java定义一个Circle类,包含一个double型的radius属性代表圆的半径,一个findArea()方法返回圆的面积
需求如下:(1)定义一个Circle类,包含一个double型的radius属性代表圆的半径,一个findArea()方法返回圆的面积. (2)定义一个类PassObject,在类中定义一个方法pri ...
- git提交时报错 permission denied
git push 时报错:permission denied xxx 目前很多解决办法是生成公钥和秘钥,这种方法安全可靠,比较适用于一台电脑对应一个git账户,但是多个账户在同一台电脑上提交使用git ...
- 安装配置JDK1.8开发环境以及配置java环境变量的步骤
1.安装JDK开发环境 下载网站:http://www.oracle.com/ 开始安装JDK: 修改安装目录如下: 确定之后,单击“下一步”. 注:当提示安装JRE时,可以选择不要安装. 2.配置环 ...
- 十七、MySQL UNION 操作符
MySQL UNION 操作符 本教程为大家介绍 MySQL UNION 操作符的语法和实例. 描述 MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中.多 ...