使用POI导出数据到Excel

0.准备工作

自行去apache的maven仓库查找以下关于poi的依赖(x.x为版本号)
1.poi-x.x.jar
2.poi-ooxml-x.x.jar
3.xmlbeans-x.x.x.jar
4.poi-ooxml-schemas-x.x.jar
5.poi-ooxml-full-x.x.x.jar(可选)
6.dom4j-x.x.x.jar

1. 获取Excel表格对象

//1.1创建workbook对象时可以填写已知文件的路径作为参数,否则会新建一个文件出来
//*.xlsx
XSSFWorkbook workbook = new XSSFWorkbook();
//*.xls
Workbook workbook = new HSSFWorkbook();

2.写入数据

//1.获取sheet对象
//1.1方法一:创建一个新的sheet进行操作
Sheet sheet = workbook.createSheet("test");
//1.2方法二:操作已经存在的sheet
//如果操作的是已经存在的excel,可以使用下面的方法直接获取sheet对象进行后续操作
workbook.getSheet("");//参数为sheet名
workbook.getSheetAt(1);//参数为Excel打开时sheet的索引,从0开始
//2.获取行对象
//方法一:
Row row = sheet.createRow(0);//参数为行号,从0开始
//方法二:
Row row = sheet.getRow(0);//参数为行号,从0开始
//3.获取单元格对象
Cell cell = row.createCell(0);//参数为列索引,从0开始
//4.写入数据
//可以使用重载方写入不同类型的数据
cell.setCellValue();
//5.保存数据
workbook.write(new FileOutputStream("./test.xlsx"));

3.行高列宽

//3.1设置列宽(此处填写的列宽*270差不多才是excel显示的正常列宽)
sheet.setColumnWidth(ColIndex, width);//参数1:列索引,参数2:列宽
//3.2设置行高
sheet.setDefaultRowHeightInPoints(20);

4.单元格样式

//1.字体大小
XSSFFont font = workbook.createFont();
font.setFontHeight(14);
//2.字体样式
font.setFontName("等线");
//3.字体颜色(使用GUI的Color类设置16进制颜色值)
font.setColor(new XSSFColor(Color.decode("0x990000")));
//4.垂直居中
CellStyle cs = workbook.createCellStyle();
cs.setVerticalAlignment((short)1);
//5.水平居中
cs.setAlignment(HSSFCellStyle.ALIGN_CENTER);
//6.单元格边框
cs.setBorderBottom(HSSFCellStyle.BORDER_THIN);
cs.setBorderTop(HSSFCellStyle.BORDER_THIN);
cs.setBorderLeft(HSSFCellStyle.BORDER_THIN);
cs.setBorderRight(HSSFCellStyle.BORDER_THIN);
//7.为指定单元格设置颜色和字体
cs.setFont(font);
cell.setCellStyle(cs);
//8.为货币数据指定格式
CellStyle currencyStyle = cs;
XSSFDataFormat df = workbook.createDataFormat();
currencyStyle.setDataFormat(df.getFormat("#,###.00"));

5.其他操作

//1.不显示分页符(分页视图中的蓝色虚线)
sheet.setFitToPage(true);
//2.设置页面布局为分页视图
CTSheetView view = sheet.getCTWorksheet().getSheetViews().getSheetViewList().get(0);
view.setView(STSheetViewType.PAGE_BREAK_PREVIEW);
//3.设置分页符(打印内同由第一行开始,到分页符所在的那一行结束,.分页视图中出现蓝色虚线
sheet.setRowBreak(10);
sheet.setAutobreaks(true);
//插入一行(插入后下面的行会下移,下移后空出来的就是想要插入的行)
sheet.shiftRows(1,1,1);//参数1:下移部分的起始行,参数2:下一部分的结束行,参数3:下移行数
posted @   小茗的学习笔记  阅读(684)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示