#Java--HSSF操作之巧妙解决最后一列数据溢出单元格

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++;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值