Controller.cs

@CrossOrigin(allowCredentials="true", allowedHeaders="*", methods={RequestMethod.GET,
RequestMethod.POST, RequestMethod.DELETE, RequestMethod.OPTIONS,
RequestMethod.HEAD, RequestMethod.PUT, RequestMethod.PATCH}, origins="*")
@RequestMapping("/ot")
@ResponseBody
public void ot(String key, HttpServletResponse response) {
try {
String storeName = key+".xlsx";
XSSFWorkbook workBook = excelService.outputExcel(key);
ByteArrayOutputStream bt = new ByteArrayOutputStream();
workBook.write(bt);
workBook.close();
bt.flush();
ByteArrayInputStream bis = new ByteArrayInputStream(bt.toByteArray());
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("Content-disposition", "attachment; filename="
+ new String(storeName.getBytes("utf-8"), "ISO8859-1"));
//设置输出长度
response.setHeader("Content-Length", String.valueOf(bt.size()));
BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());
byte[] buff = new byte[2048];
int bytesRead;
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
//关闭流
bis.close();
bos.close();
} catch (Exception e) {
e.printStackTrace();
}
}

Service.cs

public XSSFWorkbook outputExcel(String key){
String json = "{status:'OK', msg: '导出完毕!'}"; String schame = key.split("\\.")[0];
String tablename = key.split("\\.")[1];
XSSFWorkbook workBook = new XSSFWorkbook();
XSSFSheet sheet = workBook.createSheet();
workBook.setSheetName(0,"Sheet1");
XSSFRow titleRow = sheet.createRow(0);
titleRow.createCell(0).setCellValue(tablename);
Jedis jedis = new Jedis("10.8.4.94");
List<String> tables = new ArrayList<String>();
jedis.select(2);
try {
tables = jedis.lrange("db_tables", 0, -1);
} catch (Exception e) {
// TODO: handle exception
}finally{
jedis.close();
} for(String s:tables){
JSONObject obj = JSON.parseObject(s);
if(obj.getString("owner").equals(schame) && obj.getString("table_name").equals(tablename)){
titleRow.createCell(1).setCellValue(obj.getString("comment"));
}
} XSSFRow secondRow = sheet.createRow(1);
secondRow.createCell(0).setCellValue("字段英文名");
secondRow.createCell(1).setCellValue("字段类型");
secondRow.createCell(2).setCellValue("注释");
secondRow.createCell(3).setCellValue("是否主键");
secondRow.createCell(4).setCellValue("是否非空");
secondRow.createCell(5).setCellValue("默认值"); jedis = new Jedis("10.8.4.94");
List<String> columns = new ArrayList<String>();
jedis.select(2);
try {
columns = jedis.lrange(key, 0, -1);
} catch (Exception e) {
// TODO: handle exception
}finally{
jedis.close();
} int k = 2;
for(String s: columns){
JSONObject obj = JSON.parseObject(s);
XSSFRow row = sheet.createRow(k);
row.createCell(0).setCellValue(obj.getString("column_name"));
row.createCell(1).setCellValue(obj.getString("data_type").equals("VARCHAR2")?(obj.getString("data_type")+"("+obj.getString("data_length")+")"):obj.getString("data_type"));
row.createCell(2).setCellValue(obj.getString("comment"));
row.createCell(3).setCellValue(obj.getString("pk"));
row.createCell(4).setCellValue(obj.getString("nullable"));
row.createCell(5).setCellValue(obj.getString("data_default"));
k++;
} return workBook;
}

Excel导出文件流下载的更多相关文章

  1. World、Excel利用流下载

    /** * 下载excel * @param request * @param response * @param filePath * @param fileName */public static ...

  2. excel导入、下载功能

    1.excel导入.下载功能 2.首先,我们是居于maven项目进行开发引入poi,如果不是那就手动下载相应的jar包引入项目就可以了 <!-- poi --> <dependenc ...

  3. java实现点击查询数据生成excel文件并下载

    须先导入关键maven包 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi& ...

  4. asp.net将页面内容按需导入Excel,并设置excel样式,下载文件(解决打开格式与扩展名指定的格式不统一的问题)

    //请求一个excel类 Microsoft.Office.Interop.Excel.ApplicationClass excel = null; //创建 Workbook对象 Microsoft ...

  5. Java 读取excel 文件流

    public static void initType(String path) { try { //1 获取excel文件流 excel xls 文件 暂不支持xlsx if (path.conta ...

  6. java导出excel 浏览器直接下载或者或以文件形式导出

    /** * excel表格直接下载 */ public static void exportExcelByDownload(HSSFWorkbook wb,HttpServletResponse ht ...

  7. js文件流下载通用方法

    通常我们会用到文件流下载文件,下面给大家一个通用的文件流下载的js /* *下载文件 * options:{ * url:'', //下载地址 * isNewWinOpen:false,是否新窗口打开 ...

  8. js实现使用文件流下载csv文件

    1. 理解Blob对象 在Blob对象出现之前,在javascript中一直没有比较好的方式处理二进制文件,自从有了Blob了,我们就可以使用它操作二进制数据了.现在我们开始来理解下Bolb对象及它的 ...

  9. 文件流下载时 axios blob文件大小不正确?

    文件流下载时 js blob文件大小不正确? res.data的字节长度 length blob.size匹配不上.. axio请求里必须修改 responseType: 'blob' 参数, 默认是 ...

随机推荐

  1. lesson5rnns-fastai

    32min 如何确定embedding个数即嵌入矩阵容量?:不确定:与文本的字数关系不大,关键是语言的复杂度和需要解决的问题类型 embedding的效果要比one hot编码的效果好

  2. java错误:找不到或无法加载主类

    问题: 在 windows cmd 中编译后,运行 java 文件时,出现此错误 分析: 源文件 ClientDemo.java: package netdemo; public class Clie ...

  3. 12 IO流

    File类:构造方法    * File(String pathname):根据一个路径得到File对象    * File(String parent, String child):根据一个目录和一 ...

  4. 实验吧—密码学——WP之 杯酒人生

    首先我们研究题目 1.这是古典密码 2.喵星人要发送一段密码 3.加密过的秘钥“HTRUZYJW” 4.秘钥加密前是一个单词 我们先解决这个秘钥,用凯撒解密 而我们知道,在古典密码里,有秘钥的加密方式 ...

  5. AangularJS入门总结三

    (参考的资料) 1. 数据绑定的原理: (1)  $watch 队列: 在DOM中每次绑定一些东西,就会往$watch队列中插入一条$watch: 每一个绑定到了DOM上的数据都会生成一个$watch ...

  6. LeetCode - Rectangle Overlap

    A rectangle is represented as a list [x1, y1, x2, y2], where (x1, y1) are the coordinates of its bot ...

  7. 20165308 2017-2018-2 《Java程序设计》第三周学习总结

    20165308 2017-2018-2 <Java程序设计>第三周学习总结 知识点 类 构造方法与对象的创建 类与程序的基本结构 参数传值 对象的组合 实力成员与类成员 方法重载 thi ...

  8. MYSQL 中的 int(11) 到底代表什么意思?

    各 INT 类型无符号最大值用单位表示: INT 类型 无符号最大值用单位表示 TINYINT 255 SMALLINT 65535 MEDIUMINT 1677 万 INT 42 亿 BIGINT ...

  9. VMware虚拟机里centos7下安装mysql5.6并授权远程连接Navicat

    这节来安装Mysql5.6,并远程授权连接本地windows的Navicat,可以根据以下步骤安装.此文章为自己收藏,必要时拿出来直接用的,有需要的友友可以查看查看的.文章图片有借助于网络的. 1.新 ...

  10. spring-整合Struts2

    1. Spring 如何在 WEB 应用中使用 ? 1). 需要额外加入的 jar 包: spring-web-4.0.0.RELEASE.jarspring-webmvc-4.0.0.RELEASE ...