1、设置自动换行样式
HSSFCellStyle tabDataStyle = wb.createCellStyle();
//设置自动换行
tabDataStyle.setWrapText(true);
HSSFCell dataCell = tableDataRow.createCell(i);
//设置单元格数据
dataCell.setCellValue(value);
//为单元格设置样式
dataCell.setCellStyle(tabDataStyle);
2、追加空白文本列
假设我们的表格为6列数据,那么我们在为单元格设置数据时,再增加一列空白列,原因是即使我们设置单元格数据为文本,只能够解决前n-1列数据的溢出,最后一列总是无法得到解决,因此我们可以追加一列空白文本列。
//获取表格标题样式对象
HSSFCellStyle tabDataStyle = wb.createCellStyle();
//创建一个DataFormat对象
HSSFDataFormat format = wb.createDataFormat();
//设置为文本格式(可以防止单元格文本太长而溢出)
tabDataStyle.setDataFormat(format.getFormat("@"));
for(UserInfo u : list){
tableDataRow = st.createRow(dataRow);
Field[] fArr = u.getClass().getDeclaredFields();
HSSFCell dataCell = null;
//防止最后一列溢出,所以这里需要比字段数目多一列
for(int i = 0;i<fArr.length+1;i++){
try{
if(i<fArr.length){
Field f = fArr[i];
//设置私有变量可操作
f.setAccessible(true);
//获取字段的值
String value = f.get(u).toString();
dataCell = tableDataRow.createCell(i);
//设置单元格数据
dataCell.setCellValue(value);
dataCell.setCellStyle(tabDataStyle);
//追加一列空白文本列,防止最后一列溢出
}else{
dataCell = tableDataRow.createCell(i);
//设置单元格数据
dataCell.setCellValue("");
}
}catch(Exception e){
e.printStackTrace();
}
}
dataRow++;
}