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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_31122833/article/details/89945142

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、效果图:

猜你喜欢

转载自blog.csdn.net/qq_31122833/article/details/89945142