package com.java.zxf.util;

 import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
/**
* 用来生成xsls或xsl文件的类,生成后可以进行传输下载
* 注意:前台请不要使用ajax方式发送下载请求,因为其不支持.
* @author Administrator
*
*/
public class XSLXUtil {
/**
*
* @param response
* @param titlelist:一个list集合,用来指定表头信息
* @param objlist:一个list结合嵌套,内存list就是表头字段对应得一行数据
* @param filename:一个文件名,可以自己指定
* @throws IOException
*/
public static void getbook(HttpServletResponse response,List<String> titlelist,List<List<String>> objlist,String filename) throws IOException{
HSSFWorkbook wb = new HSSFWorkbook();
//建立新的sheet对象(excel的表单)
HSSFSheet sheet=wb.createSheet();
//这里是指定每列的宽度256=1字符,依次类推
for(int x=0;x<ShowString.GDTITLELEN.length;x++){
sheet.setColumnWidth(x,ShowString.GDTITLELEN[x]);
}
//在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
//HSSFRow row1=sheet.createRow(0);
//创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个
//HSSFCell cell=row1.createCell(0);
//设置单元格内容
//cell.setCellValue("学员考试成绩一览表");
//合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列
//sheet.addMergedRegion(new CellRangeAddress(0,0,0,3));
//在sheet里创建第二行 HSSFRow row1=sheet.createRow(0);
for(int i=0;i<titlelist.size();i++){
row1.createCell(i).setCellValue(titlelist.get(i));
}
for(int j=0;j<objlist.size();j++){
HSSFRow row=sheet.createRow(j+1);
List<String> temp = (List<String>) objlist.get(j);
for(int k=0;k<temp.size();k++){
HSSFCell cell = row.createCell(k);
cell.setCellValue(temp.get(k));
}
}
//测试阶段,将文件输出到本地进行存储
/*OutputStream os = new FileOutputStream("c:\\"+filename);
wb.write(os);
os.flush();
os.close();
SystemOut.classSystemOut("xslx文件创建成果", "");*/
response.reset();
OutputStream output=response.getOutputStream();
response.setHeader("Content-disposition", "attachment; filename="+ URLEncoder.encode(filename, "UTF-8"));
response.setContentType("application/msexcel");
wb.write(output);
output.close();
SystemOut.classSystemOut("xslx文件创建成果", "");
}
}
 package com.java.zxf.util;

 import java.io.File;

 public interface ShowString {

     public static String picstorage = "imgs"+File.separator+"upload";

     public static String picstorage1 = "imgs/upload";

     public static int defaultEvaluatetime = 7;

     public static int expireinterval = 2;

     public static String GDTYPE = "gd";

     public static String TJTYPE = "tj";

     public static int[] GDTITLELEN = {40*256,256*20,256*20,12*256,30*256,12*256,20*256,15*256,15*256,20*256,30*256,50*256,16*256,15*256,20*256,15*256,10*256,15*256,150*256};

     public static String GDTITLE[] = {"工单编号","机器编号","机器类型","报修人","公司名称","报修手机号","故障归类","工单发起时间","工单结束时间","故障现象","故障描述","报修地址","机器型号","期待服务时间","确认故障","过期时间","是否服务端报修","工单第一提报人","机器其它参数"};

     public static String TJTITLE[] = {};

 }

java poi操作创建xslx或xsl文件,存本地和进行网络传输两种方式集成的更多相关文章

  1. java多线程系类:基础篇:02常用的实现多线程的两种方式

    本章,我们学习"常用的实现多线程的2种方式":Thread 和 Runnable.之所以说是常用的,是因为通过还可以通过java.util.concurrent包中的线程池来实现多 ...

  2. AspNetCore 文件上传(模型绑定、Ajax) 两种方式 get到了吗?

    就目前来说,ASP.NET Core2.1了,已经相当成熟了,希望下个项目争取使用吧!! 上传文件的三种方式("我会的,说不定还有其他方式") 模型绑定 Ajax WebUploa ...

  3. centos 6.6 ios镜像文件 下载 官网和阿里云两种方式教你下载

    1百度一下:centos 打开打开官网.选择这一项 CET CENTOS 2选择 DVD ISO,双击下载 直接选择左键点击下载 这里需要迅雷 方法 二 打开 https://mirrors.aliy ...

  4. 文件处理seek以及修改内容的两种方式

    f.seek(offset,whence)offset代表文件的指针的偏移量,单位是字节byteswhence代表参考物,有三个取值# 0:参照文件的开头# 1:参照当前文件指针所在位置# 2: 参照 ...

  5. java poi 操作ppt

    java poi 操作ppt 可以参考: https://www.w3cschool.cn/apache_poi_ppt/apache_poi_ppt_installation.html http:/ ...

  6. java中如何创建带路径的文件

    请教各位大侠了,java中如何创建带路径的文件,说明下 这个路径不存在 ------回答--------- ------其他回答(2分)--------- Java code File f = new ...

  7. java poi 操作

    Java POI 操作Excel(读取/写入) https://www.cnblogs.com/dzpykj/p/8417738.html Java操作Excel之Poi基本操作 https://my ...

  8. Hadoop之HDFS文件操作常有两种方式(转载)

    摘要:Hadoop之HDFS文件操作常有两种方式,命令行方式和JavaAPI方式.本文介绍如何利用这两种方式对HDFS文件进行操作. 关键词:HDFS文件    命令行     Java API HD ...

  9. IOS文件操作的两种方式:NSFileManager操作和流操作

    1.常见的NSFileManager文件方法 -(NSData *)contentsAtPath:path //从一个文件读取数据 -(BOOL)createFileAtPath: path cont ...

随机推荐

  1. LuoguP4383 [八省联考2018]林克卡特树lct

    LuoguP4383 [八省联考2018]林克卡特树lct https://www.luogu.org/problemnew/show/P4383 分析: 题意等价于选择\(K\)条点不相交的链,使得 ...

  2. 洛谷【P1358】扑克牌

    我对状态空间的理解:https://www.cnblogs.com/AKMer/p/9622590.html 题目传送门:https://www.luogu.org/problemnew/show/P ...

  3. .NET接入微信支付(一)JS API接入 V3

    前段时间刚接完银联支付,完事后又接了微信支付,前段时间一直急着上线,微信的接入一直没有时间处理,今天我们就来整理一下微信支付的接入方法和要点. 配置: 首先呢微信支付需要通过审核,审核啥的准备工作我就 ...

  4. TS学习之类

    定义类 class Person { name: string; //属性 constructor(_name: string) { this.name = _name; } //构造函数 sayHe ...

  5. openssh for windows

  6. Qt乱码解决办法(常量中有换行符)

    用记事本打开源代码,然后点另存为,utf-8,编码覆盖 QStringLiteral("打开相机")

  7. 关于startservice的几个启动返回值的意义

    START_NOT_STICKY 如果服务进程在它启动后(从onStartCommand()返回后)被kill掉, 并且没有新启动的intent传给他, 那么将服务移出启动状态并且不重新生成, 直到再 ...

  8. 用JSP输出Hello World

    ------------------siwuxie095                             在 Eclipse 的 Package Explorer,右键->New-> ...

  9. 使用MySQL客户端登录Ensemble数据库查询相关信息

    Ensemble公共MySQL数据库 对于大量数据和更详细的分析,Ensemble的MySQL服务器ensembldb.ensembl.org,useastdb.ensembl.org或asiadb. ...

  10. 11. CTF综合靶机渗透(四)

    运行环境 Virtualbox (二选一) Vnware Workstation player 通关提示 Enumeration is key Try Harder Look in front of ...