POI 导出例子

简介: @Override public InputStream exportTrialAccount(Map params) { List list = this.
    @Override
    public InputStream exportTrialAccount(Map<String, Object> params) {
        List<Object> list = this.searchTrialAccountList(params);
        try {

            if (list != null && list.size() > 0) {
                XSSFWorkbook xssf = new XSSFWorkbook();
                Workbook wb = new SXSSFWorkbook(xssf);
                Sheet sheet = wb.createSheet("导出");
                sheet.setAutoFilter(CellRangeAddress.valueOf("B1:C1"));

                sheet.setColumnWidth(1,256*8*2);
                sheet.setColumnWidth(2,256*8*2);
                sheet.setColumnWidth(3,256*8*2);
                sheet.setColumnWidth(4,256*8*2);
                sheet.setColumnWidth(5,256*8*1);
                sheet.setColumnWidth(6,256*6*2);
                sheet.setColumnWidth(7,256*6*2);
                sheet.setColumnWidth(8,256*8*1);
                Row row1 = sheet.createRow(0);

                // excel 第一行为列名
                String[] cols = new String[]{"序号","开号人员", "分配员工", "产品名称", "软件帐号", "软件密码", "开始时间", "结束时间", "帐号状态", "分配状态"};
                String[] columnNames = new String[]{"排名","staffName", "assignName", "name", "account", "password", "start_time", "end_time", "status", "empAssignStatus"};

                CellStyle style = setRowStyle(wb);

                for (int i = 0; i < cols.length; i++) {
                    Cell colCell = row1.createCell(i);
                    colCell.setCellValue(cols[i]);
                    colCell.setCellStyle(style);
                }
                int rowNum = 1;// 数据从第二行开始显示
                int colNum = 0;// 每一行的cell数

                for (int k = 0; k < list.size(); k++) {
                    Row dataRow = sheet.createRow(rowNum);
                    Map entity = (Map) list.get(k);

                    for (colNum = 0; colNum < columnNames.length; colNum++){
                        String key = columnNames[colNum];
                        Cell cell = null;
                        if (colNum == 0) {
                            cell = dataRow.createCell(colNum);
                            cell.setCellValue(k+1);
                        } else {
                            cell = dataRow.createCell(colNum);
                            cell.setCellValue(entity.get(key) != null ? entity.get(key).toString() : "");
                        }
                    }
                    rowNum++;
                    colNum = 0;
                }

                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                wb.write(baos);
                ByteArrayInputStream swapStream = new ByteArrayInputStream(baos.toByteArray());
                baos.flush();
                baos.close();
                return swapStream;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }



    private CellStyle setRowStyle(Workbook wb) {
        CellStyle style = wb.createCellStyle();
        //边框填充
        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 居中对齐
        style.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框
        style.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
        style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
        style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框

        Font font = wb.createFont();
        font.setFontName("黑体");
        style.setFont(font);

//        style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
//        style.setFillForegroundColor(HSSFColor.SKY_BLUE.index);

        style.setWrapText(true);
        return  style;
    }
目录
相关文章
|
9月前
|
Cloud Native 关系型数据库 分布式数据库
让PolarDB更了解您--PolarDB云原生数据库核心功能体验馆
让PolarDB更了解您——PolarDB云原生数据库核心功能体验馆,由阿里云数据库产品事业部负责人宋震分享。内容涵盖PolarDB技术布局、开源进展及体验馆三大部分。技术布局包括云计算加速数据库演进、数据处理需求带来的变革、软硬协同优化等;开源部分介绍了兼容MySQL和PostgreSQL的两款产品;体验馆则通过实际操作让用户直观感受Serverless、无感切换、SQL2Map等功能。
301 7
|
8月前
|
存储 前端开发 开发工具
利用阿里云OSS(对象存储服务)快速搭建私人网盘
本文介绍了如何使用阿里云OSS搭建个人网盘的详细步骤。首先,注册阿里云账号并开通OSS服务,创建Bucket;接着,配置AccessKey和跨域访问(CORS)规则。然后,选择开源项目(如FileBrowser)或自定义前端,结合OSS SDK实现文件上传下载功能。最后,部署到服务器并绑定域名,确保安全与性能优化,如权限控制、数据备份及CDN加速。
1587 7
|
Shell Python
Python基础教程(第3版)中文版 第11章 文件(笔记)
Python基础教程(第3版)中文版 第11章 文件(笔记)
|
11月前
|
人工智能 自然语言处理 IDE
💡通义灵码:让每个人都能成为软件开发的「超级个体」
作为阿里巴巴达摩院推出的先进大模型技术,通义灵码不仅具备强大的自然语言理解和生成能力,更支持多种编程语言和框架,能够广泛适用于不同的开发场景。这意味着,开发者可以借助通义灵码,通过自然语言进行代码生成、自动化测试、文档编写等,甚至还可以根据需求生成完整的项目结构和业务逻辑。
676 9
💡通义灵码:让每个人都能成为软件开发的「超级个体」
|
人工智能 弹性计算 自然语言处理
AI奇思妙想之旅 —— 操作系统智能助手OS Copilot
AI奇思妙想之旅 —— 操作系统智能助手OS Copilot
415 1
|
消息中间件 Java Kafka
kafka 磁盘扩容与数据均衡操作代码
Kafka 的磁盘扩容和数据均衡是与保证Kafka集群可用性和性能相关的两个重要方面。在 Kafka 中,分区数据的存储和平衡对集群的运行至关重要。以下是有关Kafka磁盘扩容和数据均衡的一些建议
186 1
|
测试技术 持续交付 Python
单元测试:质量保障基石
单元测试:质量保障基石
|
缓存 Linux Windows
certutil工具使用和bypass学习
certutil工具使用和bypass学习
981 0
|
存储 安全 Linux
Visual Studio Code 被发现新“漏洞”!疯狂创建垃圾文件+自动修改用户文件
Visual Studio Code 被发现新“漏洞”!疯狂创建垃圾文件+自动修改用户文件
273 0
Visual Studio Code 被发现新“漏洞”!疯狂创建垃圾文件+自动修改用户文件