java怎么使用poi生成excel
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍"java怎么使用poi生成excel"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"java怎么使用poi生成excel"文章能帮助大家解决问
千家信息网最后更新 2026年11月01日java怎么使用poi生成excel
这篇文章主要介绍"java怎么使用poi生成excel"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"java怎么使用poi生成excel"文章能帮助大家解决问题。
使用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以上格式
@Testpublic 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(); }}关于"java怎么使用poi生成excel"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。
单元
生成
对象
格式
成绩
姓名
宋体
序号
知识
字体
样式
行业
边框
格内
工作
测试
不同
实用
上下
内容
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
广州大一互联网络科技有限公司
互联网科技工作委员会
互联网科技工作委员会副主任毛军
美国互联网科技
奇酷互联网科技公司
互联网科技logo
润盈互联网科技
伴你行互联网科技有限公司
互联网科技咨询
互联网科技股午盘股票涨跌
科技与互联网的利与弊
互联网科技产业特征
企晟互联网信息科技有限公司
特约风豹互联网科技为什么扣费
互联网数据科技专业
银行科技岗属于互联网吗
珠海东科互联网科技有限公司
易租星互联网科技有限公司
10位科技互联网大佬
互联网领先科技成果宣传视频
上海挚品互联网科技有限公司
互联网金融监管科技数据
互联网金融 金融科技
唐信互联网科技 大连
中盈科技互联网信息有限公司
玉溪互联网科技怎么选
亳州好赞互联网科技有限公司
众安科技工业互联网合作
工业互联网科技创业
互联网对科技影响