当前位置:

首页 > 编程开发 > java怎么使用poi生成excel

java怎么使用poi生成excel

使用poi生成excel通常包含一下几个步骤创建一个工作簿创建一个sheet创建一个Row对象创建一个cell对象(1个row+1个cell构成一个单元格)设置单元格内容设置单元格样式.字体字体大小是否加粗保存关闭流对象生成一个工作簿2010以上格式使用XSSFWorkBook对象,2003格式使用HSSFWorkBook对象,其他对象操作基本一样.生成2003格式publicvoidtest1(){HSSFWorkbookworkbook=newHSSFWorkbook();CellStylecellS

本文目录

    使用poi生成excel通常包含一下几个步骤

    • 创建一个工作簿

    • 创建一个sheet

    • 创建一个Row对象

    • 创建一个cell对象(1个row+1个cell构成一个单元格)

    • 设置单元格内容

    • 设置单元格样式. 字体 字体大小 是否加粗

    • 保存

    • 关闭流对象

    生成一个工作簿

    2010以上格式使用XSSFWorkBook对象, 2003格式使用HSSFWorkBook对象, 其他对象操作基本一样.

    生成2003格式

    public void test1() {
        HSSFWorkbook workbook = new HSSFWorkbook();
        
        CellStyle cellStyle = workbook.createCellStyle();
        cellStyle.setBorderBottom(BorderStyle.THIN);
        cellStyle.setBorderLeft(BorderStyle.THIN);
        cellStyle.setBorderRight(BorderStyle.THIN);
        cellStyle.setBorderTop(BorderStyle.THIN);
        
        Font font = workbook.createFont();
        font.setFontName("宋体"); 
        font.setFontHeightInPoints((short) 12);
        cellStyle.setFont(font);
       
        HSSFSheet sheet = workbook.createSheet("Sheet1");
        //设置单元格宽度
        sheet.setColumnWidth(0, 30 * 256);
        sheet.setColumnWidth(1, 30 * 256);
        sheet.setColumnWidth(2, 30 * 256);
        
        Row row0 = sheet.createRow(0);
        Cell cell0 = row0.createCell(0);
        cell0.setCellValue("序号");
        cell0.setCellStyle(cellStyle);
        
        Cell cell1 = row0.createCell(1);
        cell1.setCellValue("姓名");
        
        Cell cell2 = row0.createCell(2);
        cell2.setCellValue("成绩");
        
        OutputStream os = null;
        try {
            os = new FileOutputStream("d:\\测试生成2003.xls");
            workbook.write(os);
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    生成2010以上格式

    @Test
    public void test2() {
        XSSFWorkbook workbook = new XSSFWorkbook();
        
        CellStyle cellStyle = workbook.createCellStyle();
        cellStyle.setBorderBottom(BorderStyle.THIN);
        cellStyle.setBorderLeft(BorderStyle.THIN);
        cellStyle.setBorderRight(BorderStyle.THIN);
        cellStyle.setBorderTop(BorderStyle.THIN);
        
        Font font = workbook.createFont();
        font.setFontName("宋体");
        font.setFontHeightInPoints((short) 12);
        cellStyle.setFont(font);
        
        
        XSSFSheet sheet = workbook.createSheet("Sheet1");
        Row row0 = sheet.createRow(0);
        Cell cell0 = row0.createCell(0);
        cell0.setCellValue("序号");
        cell0.setCellStyle(cellStyle);
        
        Cell cell1 = row0.createCell(1);
        cell1.setCellValue("姓名");
        
        Cell cell2 = row0.createCell(2);
        cell2.setCellValue("成绩");
        
        OutputStream os = null;
        try {
            os = new FileOutputStream("d:\\测试生成2010.xlsx");
            workbook.write(os);
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    合并单元格

    合并单元格在生成excel中算常见的一个场景, 通常先合并单元, 单元格内容居中,并设置单元格边框.
    poi合并单元格使用CellRangeAddress类, 构造函数包括4个参数firstRow, lastRow, firstCol, lastCol根据自己需要传入行和列.

    public CellRangeAddress(int firstRow, int lastRow, int firstCol, int lastCol) {
    }

    合并单元格后设置边框poi已提供了RegionUtil静态类, 可直接使用.

    CellRangeAddress region = new CellRangeAddress(0, 0, 0, 2);
    sheet.addMergedRegion(region);
    
    RegionUtil.setBorderBottom(BorderStyle.THIN, region, sheet);
    RegionUtil.setBorderLeft(BorderStyle.THIN, region, sheet);
    RegionUtil.setBorderTop(BorderStyle.THIN, region, sheet);
    RegionUtil.setBorderRight(BorderStyle.THIN, region, sheet);

    设置单元格样式

    左右居中 上下居中 自动换行

    cellStyle.setAlignment(HorizontalAlignment.CENTER);
    cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
    cellStyle.setWrapText(true);

    使用SpringMVC/SpringBoot导出excel

    @Controller
    @GetMapping("/excel2003")
    public void excel2003(HttpServletResponse httpServletResponse){
        try {
            //2010格式设置
            //response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
            //2003格式设置
            response.setContentType("application/vnd.ms-excel");
            httpServletResponse.addHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode("学生成绩单.xls", "utf-8"));
    
            ServletOutputStream outputStream = httpServletResponse.getOutputStream();
    
            HSSFWorkbook workbook = new HSSFWorkbook();
    
            CellStyle cellStyle = workbook.createCellStyle();
            cellStyle.setBorderBottom(BorderStyle.THIN);
            cellStyle.setBorderLeft(BorderStyle.THIN);
            cellStyle.setBorderRight(BorderStyle.THIN);
            cellStyle.setBorderTop(BorderStyle.THIN);
    
            Font font = workbook.createFont();
            font.setFontName("宋体");
            font.setFontHeightInPoints((short) 12);
            cellStyle.setFont(font);
    
            HSSFSheet sheet = workbook.createSheet("Sheet1");
            Row row0 = sheet.createRow(0);
            Cell cell0 = row0.createCell(0);
            cell0.setCellValue("序号");
            cell0.setCellStyle(cellStyle);
    
            Cell cell1 = row0.createCell(1);
            cell1.setCellValue("姓名");
    
            Cell cell2 = row0.createCell(2);
            cell2.setCellValue("成绩");
    
            workbook.write(outputStream);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Excel Java
    相关文章 更多
    Excel怎么跨表引用数据 引用功能与工作表链接方法
    Excel怎么跨表引用数据 引用功能与工作表链接方法

    Excel跨表引用数据,可以在目标单元格输入等号,再点击源工作表标签和需要引用的单元格,按Enter完成。公式通常是“工作表名!单元格地址”;需要向下复制时,还要检查相对引用与绝对引用是否符合需求。

    Excel如何转换文本为日期 分列功能与格式设置方法
    Excel如何转换文本为日期 分列功能与格式设置方法

    Excel把文本转换为日期,可以选中日期列,进入“数据—分列”,保持每条日期不被拆开,在最后一步选择“日期”并指定YMD、DMY或MDY顺序。完成解析后,再设置日期显示格式,并抽查年月日,不能只改显示格式就认为转换成功。

    Excel怎么批量填充序号 填充功能与序列生成解决方法
    Excel怎么批量填充序号 填充功能与序列生成解决方法

    Excel批量填充序号,可以先输入1和2,选中这两格,再拖动右下角填充柄向下延续。需要一次生成较多序号时,进入“开始—填充—序列”,选择列、等差序列、步长1,并设置终止值即可。

    Excel如何生成数据透视表 插入功能与字段拖拽方法
    Excel如何生成数据透视表 插入功能与字段拖拽方法

    Excel生成数据透视表,先选中带有字段标题的明细区域,点击“插入—数据透视表”,确认数据源并选择放置位置。创建后把分类字段拖到“行”或“列”,把金额、数量拖到“值”,再检查求和方式与汇总结果。

    Excel怎么合并多个表格 数据功能与Power Query方法
    Excel怎么合并多个表格 数据功能与Power Query方法

    Excel合并多个结构相同的表格,可以在Windows桌面版进入“数据—获取数据—从文件—从文件夹”,选择源文件夹,再用Power Query合并并转换数据。若已经把各张表建立为查询,则使用“追加查询”把记录纵向汇总,检查字段与类型后加载结果。

    Excel如何保护工作表 审阅功能与密码设置解决方法
    Excel如何保护工作表 审阅功能与密码设置解决方法

    Excel保护工作表,可以先解除需要填写区域的锁定,再点击“审阅—保护工作表”,设置取消保护密码和允许操作并确认。这样可以保留录入区域,同时限制公式、表头等单元格被随意修改;需要调整设置时,先取消工作表保护。

    Excel怎么打印每页表头 页面布局功能与打印标题方法
    Excel怎么打印每页表头 页面布局功能与打印标题方法

    Excel每页打印表头,可以进入“页面布局—打印标题”,在“工作表”页签的“顶端标题行”中选择表头所在的整行,例如第一行填写$1:$1。保存后打开打印预览,并翻到第二页确认表头已重复出现。

    Excel如何删除重复项 数据工具功能与去重解决方法
    Excel如何删除重复项 数据工具功能与去重解决方法

    Excel删除重复项,先选中完整数据区域,点击“数据—删除重复项”,确认是否包含标题,再勾选用于判断重复的列并确定。操作会删除所选区域内的重复记录,建议先备份,并用业务编号、日期等字段确定真正的重复标准。

    Excel怎么设置条件格式 突出显示功能与规则设置方法
    Excel怎么设置条件格式 突出显示功能与规则设置方法

    Excel设置条件格式,先选中数据区域,再点击“开始—条件格式—突出显示单元格规则”,选择大于、小于或重复值等条件,填写判断值并设置样式。以后需要修改范围或取消规则,可进入“管理规则”检查条件与“应用于”区域。

    Excel如何拆分单元格内容 分列功能与分隔符设置方法
    Excel如何拆分单元格内容 分列功能与分隔符设置方法

    Excel拆分单元格内容,可以选中需要处理的一列,进入“数据—分列”,选择“分隔符号”,再勾选逗号、空格或自定义分隔符。确认预览、各列数据格式和目标位置后完成,操作前要给右侧结果预留空列。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。