Java操作excel之合并单元格、写入强制换行数据

1、初始化Excel表格

HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("test");
List<Object> list= 获取list
String fileName = "test"  + ".xls";//设置要导出的文件的名字

2、合并单元格

//这个就是合并单元格
//参数说明:1:开始行 2:结束行  3:开始列 4:结束列
//比如我要合并 第二行到第四行的    第六列到第八列     sheet.addMergedRegion(new CellRangeAddress(1,3,5,7));
if(!list.isEmpty()){
    //这里是我写完list数据的5行至14行之间、0列至10列之间=进行合并单元格
    CellRangeAddress cra = new CellRangeAddress(list.size()+5,list.size()+14,0,10);
    sheet.addMergedRegion(cra);
}else{
    CellRangeAddress cra = new CellRangeAddress(5,14,0,10);
    sheet.addMergedRegion(cra);
}

3、先把list数据写完、再给合并单元格写入强制换行数据

//1、新增数据行,并且设置单元格数据
int rowNum = 1;
String[] headers = { "姓名","学号"};
//headers表示excel表中第一行的表头
HSSFRow row = sheet.createRow(0);
//2、在excel表中添加表头
for(int i=0;i<headers.length;i++){
    HSSFCell cell = row.createCell(i);
    HSSFRichTextString text = new HSSFRichTextString(headers[i]);
    cell.setCellValue(text);
}
//3、在表中存放查询到的数据放入对应的列
for (Object object: list) {
    HSSFRow row1 = sheet.createRow(rowNum);
    row1.createCell(0).setCellValue(object.0);//示例
    row1.createCell(1).setCellValue(object.1);//示例
}
//4、给合并单元格写入数据
HSSFRow row1 = sheet.createRow(rowNum+4);
HSSFCellStyle cellStyle=workbook.createCellStyle();
//5、先设置为自动换行
cellStyle.setWrapText(true);
HSSFCell cell = row1.createCell(0);
cell.setCellStyle(cellStyle);
//6、"\r\n为显示换行"
cell.setCellValue("说明:\r\n" +
                  "1、挂科数据截至去年底\r\n" +
                  "2、经济水平为近1个月内餐厅消费平均值与全校平均自对比(分男女)\r\n" +
                  "3、熬夜判定条件为凌晨2-5点有主动网络或消费记录\r\n" +
                  "4、全天无休判定条件为全天没有连续4个小时无主动消费或网络记录的情况\r\n" +
                  "5、异常离校判定条件为两周内,非周末离校,连续两天及以上\r\n" +
                  "6、疑似失恋或人际冲突判定条件为,两人相互的交流次数出现异常减少\r\n" +
                  "7、如需详细数据请联系心理辅导中心");
response.setContentType("application/octet-stream");
response.setHeader("Content-disposition", "attachment;filename=" + fileName);
response.flushBuffer();
workbook.write(response.getOutputStream());

4、核心:

HSSFCellStyle cellStyle=workbook.createCellStyle();
cellStyle.setWrapText(true);//先设置为自动换行 数据中"\r\n为显示换行"

5、效果图:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小达哥的垃圾桶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值