Excel导出文件流下载
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导出文件流下载的更多相关文章
- World、Excel利用流下载
/** * 下载excel * @param request * @param response * @param filePath * @param fileName */public static ...
- excel导入、下载功能
1.excel导入.下载功能 2.首先,我们是居于maven项目进行开发引入poi,如果不是那就手动下载相应的jar包引入项目就可以了 <!-- poi --> <dependenc ...
- java实现点击查询数据生成excel文件并下载
须先导入关键maven包 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi& ...
- asp.net将页面内容按需导入Excel,并设置excel样式,下载文件(解决打开格式与扩展名指定的格式不统一的问题)
//请求一个excel类 Microsoft.Office.Interop.Excel.ApplicationClass excel = null; //创建 Workbook对象 Microsoft ...
- Java 读取excel 文件流
public static void initType(String path) { try { //1 获取excel文件流 excel xls 文件 暂不支持xlsx if (path.conta ...
- java导出excel 浏览器直接下载或者或以文件形式导出
/** * excel表格直接下载 */ public static void exportExcelByDownload(HSSFWorkbook wb,HttpServletResponse ht ...
- js文件流下载通用方法
通常我们会用到文件流下载文件,下面给大家一个通用的文件流下载的js /* *下载文件 * options:{ * url:'', //下载地址 * isNewWinOpen:false,是否新窗口打开 ...
- js实现使用文件流下载csv文件
1. 理解Blob对象 在Blob对象出现之前,在javascript中一直没有比较好的方式处理二进制文件,自从有了Blob了,我们就可以使用它操作二进制数据了.现在我们开始来理解下Bolb对象及它的 ...
- 文件流下载时 axios blob文件大小不正确?
文件流下载时 js blob文件大小不正确? res.data的字节长度 length blob.size匹配不上.. axio请求里必须修改 responseType: 'blob' 参数, 默认是 ...
随机推荐
- [LeetCode&Python] Problem 771: Jewels and Stones
You're given strings J representing the types of stones that are jewels, and S representing the ston ...
- Gym102040 .Asia Dhaka Regional Contest(寒假自训第9场)
B .Counting Inversion 题意:给定L,R,求这个区间的逆序对数之和.(L,R<1e15) 思路:一看这个范围就知道是数位DP. 只是维护的东西稍微多一点,需要记录后面的各种数 ...
- 自定义bootbox:dialog方法
<script src="static/ace/js/bootbox.js"></script>bootbox.dialog({ message: '< ...
- XML映射配置文件
XML映射配置文件 http://www.mybatis.org/mybatis-3/configuration.html Type Handlers 类型处理器 每当MyBatis在Prepared ...
- C++学习(十五)(C语言部分)之 数组二
数组大纲 多维数组 二维数组 重点 (三位以上基本不会用到) 都是用来存数据 一个班有20个人 可以用一维数组存20个人的年龄 int age[20]; 一个年级10个班 每个班20人 int age ...
- C++学习(二)之Visual Studio写system语句 生成可执行文件
system命令 1.首先先介绍一些system命令 windows+tab //切换窗口 windows+R //调出命令窗口 命令: 输入 calc 打开计算机 输入 cmd 打开命令窗口 ...
- 实验吧—密码学——WP之 杯酒人生
首先我们研究题目 1.这是古典密码 2.喵星人要发送一段密码 3.加密过的秘钥“HTRUZYJW” 4.秘钥加密前是一个单词 我们先解决这个秘钥,用凯撒解密 而我们知道,在古典密码里,有秘钥的加密方式 ...
- struts2的国际化i18n
先来例子,普通的读取配置文件中不同语言信息,一个测试类,一份中文配置文件,一份英文配置文件 中文配置文件,书写中文“欢迎”,myelipse自动转码 public class Readi18n { p ...
- SVN三种合并类型
https://blog.csdn.net/zht666/article/details/36178117 转自:http://wenku.baidu.com/link?url=pnALYESJnX0 ...
- 写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。java算法
知识点一:equalsIgnore 1.使用equals( )方法比较两个字符串是否相等.它具有如下的一般形式: boolean equals(Object str) 这里str是一个用来与调用字符串 ...