java setcolumnwidth_Java Sheet.setColumnWidth方法代码示例

这篇博客展示了如何在Java中使用Apache POI库处理Excel文件,特别是通过`Sheet.setColumnWidth`方法设置单元格宽度。文章通过示例代码详细解释了如何创建和设置单元格样式,以及如何根据数据类型和对齐方式调整列宽。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import org.apache.poi.ss.usermodel.Sheet; //导入方法依赖的package包/类

private int buildGridExcelData(ReportGrid gridModel, Sheet sheet, int starDataRow, Map styles) {

CellStyle dataAlignLeftStyle = styles.get(GridStyleType.dataAlignLeftStyle.name());

CellStyle dataAlignCenterStyle = styles.get(GridStyleType.dataAlignCenterStyle.name());

CellStyle dataAlignRightStyle = styles.get(GridStyleType.dataAlignRightStyle.name());

IFillCellInterceptor interceptor = ContextHolder.getBean(IFillCellInterceptor.BEAN_ID);

List bottomGridExcelHeader = new ArrayList();

this.calculateBottomColumnHeader(gridModel.getGridHeaderModelList(), bottomGridExcelHeader);

List> excelDatas = gridModel.getGridDataModel().getDatas();

String treeColumn = gridModel.getGridDataModel().getTreeColumn();

int excelDataIndex = 0;

int rowSize = excelDatas.size();

Cell cell;

Row row;

for (int rowNum = starDataRow; rowNum <= starDataRow + rowSize - 1; rowNum++) {

row = sheet.createRow(rowNum);

Map map = excelDatas.get(excelDataIndex);

int j = 0;

for (ReportGridHeader header : bottomGridExcelHeader) {

Object value = map.get(header.getColumnName());

int dataAlign = header.getDataAlign();

cell = row.createCell(j);

if (dataAlign == 1) {

cell.setCellStyle(dataAlignCenterStyle);

} else if (dataAlign == 2) {

cell.setCellStyle(dataAlignRightStyle);

} else {

cell.setCellStyle(dataAlignLeftStyle);

}

if (value != null) {

if (header.getColumnName().equalsIgnoreCase(treeColumn)) {

int level = this.calculateIndentationCount(value.toString());

cell.setCellStyle(new GridStyleBuilder().createIndentationCellStyle(sheet.getWorkbook(), level == 0 ? 0 : level * 2));

cell.setCellValue(value.toString());

} else {

if (value instanceof BigDecimal || value instanceof Float || value instanceof Double){

CellStyle style = cell.getCellStyle();

DataFormat format = sheet.getWorkbook().createDataFormat();

String displayFormat = header.getDisplayFormat();

if (StringUtils.isEmpty(displayFormat))

style.setDataFormat(format.getFormat("#,##0.00"));

else

style.setDataFormat(format.getFormat(displayFormat));

cell.setCellStyle(style);

}

interceptor.fillCellValue(sheet, row, cell, value);

}

} else {

cell.setCellValue("");

}

sheet.setColumnWidth(cell.getColumnIndex(), header.getWidth() / 6 > 255 ? 254 * 256 : header.getWidth() / 6 * 256);

j++;

}

excelDataIndex++;

}

return starDataRow + rowSize;

}

详细解释这段代码 每行都干嘛了 然后 他这个响应式的流程是怎样的 import org.springframework.web.servlet.resource.ResourceUrlProvider; import reactor.core.publisher.Mono; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.xssf.usermodel.XSSFDrawing; import org.apache.poi.xssf.usermodel.XSSFClientAnchor; import org.apache.poi.xssf.usermodel.XSSFPicture; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import javax.servlet.http.HttpServletResponse; import java.io.OutputStream; import java.util.List; import java.util.Map; public Mono<Void> exportExcel(List<BizSubmitVo> list, HttpServletResponse response) { return Mono.defer(() -> { // 创建 Excel 工作簿 XSSFWorkbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("业务数据表"); // 设置列宽 sheet.setColumnWidth(0, 50 * 256); sheet.setColumnWidth(1, 30 * 256); sheet.setColumnWidth(2, 30 * 256); sheet.setColumnWidth(3, 30 * 256); sheet.setColumnWidth(4, 30 * 256); sheet.setColumnWidth(5, 30 * 256); sheet.setColumnWidth(6, 20 * 256); sheet.setColumnWidth(7, 50 * 256); sheet.setColumnWidth(8, 100 * 256); // 创建表头样式 Font headerFont = workbook.createFont(); headerFont.setBold(true); CellStyle headerStyle = workbook.createCellStyle(); headerStyle.setFont(headerFont); headerStyle.setAlignment(HorizontalAlignment.CENTER); headerStyle.setVerticalAlignment(VerticalAlignment.CENTER); headerStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); // 创建说明行样式 CellStyle noteStyle = workbook.createCellStyle(); noteStyle.setFillForegroundColor(IndexedColors.LEMON_CHIFFON.getIndex()); noteStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); noteStyle.setAlignment(HorizontalAlignment.LEFT); noteS
最新发布
03-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值