java 写 Excel(不生成实体文件,写为流的形式)
java 写 Excel(不生成实体文件,写为流的形式)
public String exportReportExcel(String mediaCode, List<SimpleMediaResourceInfo> mediaResourceInfos) {
String scheduleURL = "";
// 1. 根据不同的媒介code查询对应的媒介细节内容
List<MediaContent> mediaContents = mediaContentMapper.selectByMediaCode(mediaCode);
// 2. 组装header
List<String> medias = new ArrayList<String>();
for (MediaContent mediaContent : mediaContents) {
medias.add(mediaContent.getAttrName());
}
String[] headers = new String[medias.size()];
headers = medias.toArray(headers);
// 3. 将内容写入对应的Excel
try {
ByteArrayOutputStream os = new ByteArrayOutputStream();
Workbook workbook = new XSSFWorkbook();
// 生成一个表格
Sheet sheet = workbook.createSheet();
sheet.setDefaultColumnWidth(13); // 调整列宽度
writeHeader(headers, workbook, sheet);
writeData(mediaResourceInfos, medias, sheet);// 遍历集合数据,产生数据行
workbook.write(os);
ByteArrayInputStream is = new ByteArrayInputStream(os.toByteArray());
scheduleURL = JdStorageService.getInstance().upload(is, (int) os.size(), "export.xls");
os.flush();
os.close();
is.close();
} catch (Exception e) {
e.printStackTrace();
}
return scheduleURL;
}
private void writeHeader(String[] headers, Workbook workbook, Sheet sheet) {
CellStyle style = workbook.createCellStyle();
XSSFFont font = (XSSFFont) workbook.createFont();
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 粗体显示
style.setFont(font);
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平居中
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); // 垂直居中
// style.setFillForegroundColor(IndexedColors.TEAL.getIndex());
// //设置背景色
// style.setFillPattern(CellStyle.SOLID_FOREGROUND);
Row row0 = sheet.createRow(0);
row0.setHeightInPoints(18);
Cell showTimeTitle = row0.createCell((short) 0);
showTimeTitle.setCellValue("投放时间段(必填)");
Cell showTime = row0.createCell((short) 1);
showTime.setCellValue(" ");// TODO 时间问题
Cell remark = row0.createCell((short) 2);
remark.setCellValue("整个媒介投放的时间区间,按照从投放第一天到投放最后一天,如中间有间隔,需要用\",\"分开填写");
// 产生表格标题行
Row row = sheet.createRow(1);
row.setHeightInPoints(21);
for (int i = 0; i < headers.length; i++) {
Cell cell = row.createCell((short) i);
RichTextString text = new HSSFRichTextString(headers[i]);
cell.setCellValue(text.toString());
cell.setCellStyle(style);
}
}
private void writeData(List<SimpleMediaResourceInfo> mediaResourceInfos, List<String> medias, Sheet sheet) {
Row row;
if (!CollectionUtils.isEmpty(mediaResourceInfos)) {
int index = 2;
for (SimpleMediaResourceInfo rowData : mediaResourceInfos) {
row = sheet.createRow(index);
row.setHeightInPoints(21);
int cellIndex = 0;
if (!CollectionUtils.isEmpty(rowData.getMediaResourceTypes())
|| !CollectionUtils.isEmpty(rowData.getDetailContents())) {
for (String header : medias) {
for (SimpleMediaResourceType columnInfo : rowData.getMediaResourceTypes()) {
if (header.equals(columnInfo.getAttrName())) {
Cell cell = row.createCell((short) cellIndex);
cell.setCellValue(columnInfo.getAttrValue().toString());
}
}
for (SimpleMediaDetailContentItem columnInfo : rowData.getDetailContents()) {
if (header.equals(columnInfo.getAttrName())) {
Cell cell = row.createCell((short) cellIndex);
cell.setCellValue(columnInfo.getAttrValue().toString());
}
}
if (header.equals("时段")) {
Cell cell = row.createCell((short) cellIndex);
cell.setCellValue(ShowTimeHelper.transferFrom(rowData.getShowTimes()).toString());
}
cellIndex++;
}
index++;
}
}
}
}
java 写 Excel(不生成实体文件,写为流的形式)的更多相关文章
- Java写Excel(不生成实体文件,写为流的形式)
java 写 Excel(不生成实体文件,写为流的形式) public String exportReportExcel(String mediaCode, List<SimpleMediaRe ...
- openpyxl -用于读/写Excel 2010 XLSX/XLSM文件的python库
openpyxl -用于读/写Excel 2010 XLSX/XLSM文件的python库¶ https://www.osgeo.cn/openpyxl/index.html
- JAVA中使用freemark生成自定义文件(json、excel、yaml、txt)
原文:http://blog.csdn.net/jinzhencs/article/details/51461776 场景:在我们工作中,有时需要生成一些文件,可能它不是一种标准的格式,比如JSON. ...
- Python:Dom生成XML文件(写XML)
http://www.ourunix.org/post/327.html 在python中解析XML文件也有Dom和Sax两种方式,这里先介绍如何是使用Dom解析XML,这一篇文章是Dom生成XML文 ...
- 如何使用Java创建Excel(.xls 和 .xlsx)文件 并写入数据
1,需要依赖的jar包, <!-- POI(operate excel) start --> <!-- the version of the following POI packag ...
- Java根据Freemarker模板生成Word文件
1. 准备模板 模板 + 数据 = 模型 1.将准备好的Word模板文件另存为.xml文件(PS:建议使用WPS来创建Word文件,不建议用Office) 2.将.xml文件重命名为.ftl文件 3 ...
- Java解析XML与生成XML文件
XML是eXtensible Markup Language(可扩展标记语言)的简写形式,它是一种元标记语言(meta-markup language),也就是说它没有一套能够适用于各个领域中所有用户 ...
- Java KeyStore 用命令生成keystore文件
1.生成keyStore文件 在命令行下执行以下命令: Shell代码 收藏代码 keytool -genkey -validity 36000 -alias www.zlex.org -keyalg ...
- Java KeyStore 用命令生成keystore文件自己生成证书,简介
1.生成keyStore文件 在命令行下执行以下命令: Shell代码 收藏代码 keytool -genkey -validity 36000 -alias www.zlex.org -keyalg ...
随机推荐
- IO处理要注意的事:关闭资源!关闭资源!关闭资源!
案例1: 现象: 同事做本地txt数据切分然后处理,发现删除本地临时文件目录中的文件时,有时成功,有时删除完了发现文件还在.代码各处都不报错,且各种日志打印正常. 解决: 最后发现,是业务逻辑代码中有 ...
- 把本人基于Dubbo的毕业设计分享粗来~
这个毕业设计不是太让我满意,可能时间关系吧,但是现在工作了我也懒得没时间去完善了[目前也就有一个功能没完成,就是给产品经理送绿帽子的模块] 项目地址:GitHub 技术栈:Spring+SpringM ...
- rm刷机 root
http://www.miui.com/download-290.html http://www.miui.com/shuaji-329.html 小米稳定版 不可以root 只有升级到上面的开 ...
- MVC知识点汇总
一,MVC创建控制器,视图 1新建 ASP.NET MVC web应用程序项目,在Controllers文件夹下创建控制器,MVC 5 控制器,然后打开控制器,在所对应的控制器中会存在一个Action ...
- feign无法注入service
https://segmentfault.com/q/1010000008531927
- Luogu P1552 [APIO2012]派遣 主席树
题目链接 Click Here 这个题好像大多数人用的都是左偏树啊?这里我来贡献一发主席树的解法. 把题目中的问题抽象出来,其实就是询问每一个点的子树中,工资前\(tot_i\)大的点,使它们的和满足 ...
- opencv: 基本知识;
注: 该篇博文为扩展型,后期将逐步进行扩展: 1. IplImage转Mat IplImage转Mat: IplImage *pImage = cv::loadImage(“”); Mat imgM ...
- 使用二进制安装包的方式单机部署MySQL8.0.13
使用二进制安装包的方式单机部署MySQL8.0.13 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 关于MySQL的介绍我这里就不多做赘述了,如何下载MySQL详情请参考:MySQ ...
- Shell中引号的操作
单引号.双引号.反撇号的作用与区别 单引号属于强引用,它会忽略所有被引起来的字符的特殊处理,被引用起来的字符会被原封不动的使用,唯一需要注意的点是不允许引用自身: 示例如下: sh-4.2# echo ...
- oldboy s21day04
#!/usr/bin/env python# -*- coding:utf-8 -*- # 1.简述解释型语言和编译型语言的区别?"""1.解释型语言:Python,PH ...