zoukankan      html  css  js  c++  java
  • 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++;
    }
    }
    }
    }

  • 相关阅读:
    深入Android 【一】 —— 序及开篇
    Android中ContentProvider和ContentResolver使用入门
    深入Android 【六】 —— 界面构造
    The service cannot be activated because it does not support ASP.NET compatibility. ASP.NET compatibility is enabled for this application. Turn off ASP.NET compatibility mode in the web.config or add the AspNetCompatibilityRequirements attribute to the ser
    Dynamic Business代码片段总结
    对文件的BuildAction以content,resource两种方式的读取
    paraview 3.12.0 windows下编译成功 小记
    百度网盘PanDownload使用Aria2满速下载
    netdata的安装与使用
    用PS给证件照排版教程
  • 原文地址:https://www.cnblogs.com/wangxuemei/p/8418285.html
Copyright © 2011-2022 走看看