Java POI 设置Excel单元格的宽度和高度

在Excel中,单元格的宽度其实就是列的宽度,因为Excel假设这一列的单元格的宽度肯定一致。所以要设置单元格的宽度,我们就得从列的宽度下手,HSSFSheet有个方法叫SetColumnWidth,共有两个参数:一个是列的索引(从0开始),一个是宽度。

现在假设你要设置B列的宽度,就可以用下面的代码:

 

HSSFWorkbook hssfworkbook = new HSSFWorkbook();

HSSFSheet sheet1 = hssfworkbook.CreateSheet(“Sheet1″);

sheet1.SetColumnWidth(1, 100 * 256);

这里你会发现一个有趣的现象,SetColumnWidth的第二个参数要乘以256,这是怎么回事呢?其实,这个参数的单位是1/256个字符宽度,也就是说,这里是把B列的宽度设置为了100个字符。

刚才说的是如何设置,那如何去读取一个列的宽度呢?直接用GetColumnWidth方法,这个方法只有一个参数,那就是列的索引号。如下所示:

int col1width = sheet1.GetColumnWidth(1);

 

说完宽度,我们来说高度,在Excel中,每一行的高度也是要求一致的,所以设置单元格的高度,其实就是设置行的高度,所以相关的属性也应该在HSSFRow上,它就是HSSFRow.Height和HeightInPoints,这两个属性的区别在于HeightInPoints的单位是点,而Height的单位是1/20个点,所以Height的值永远是HeightInPoints的20倍。

要设置第一行的高度,可以用如下代码:

sheet1.CreateRow(0).Height = 200*20;

 

或者

sheet1.CreateRow(0).HeightInPoints = 200;

如果要获得某一行的行高,可以直接拿HSSFRow.Height属性的返回值。

 

你可能觉得一行一行设置行高或者一列一列设置列宽很麻烦,那你可以考虑使用HSSFSheet.DefaultColumnWidth、HSSFSheet.DefaultRowHeight和HSSFSheet.DefaultRowHeightInPoints属性。

一旦设置了这些属性,如果某一行或者某一列没有设置宽度,就会使用默认宽度或高度。代码如下:

sheet1.DefaultColumnWidth=100*256;

sheet1.DefaultRowHeight=30*20;

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在Java后台中生成Excel文件并设置全局宽度和边框样式,可以使用Apache POI库来完成。以下是一个简单的示例代码: ```java // 创建工作簿对象 Workbook workbook = new XSSFWorkbook(); // 创建工作表对象 Sheet sheet = workbook.createSheet("Sheet1"); // 设置列宽 sheet.setColumnWidth(0, 5000); // 第1列宽度为5000 sheet.setColumnWidth(1, 8000); // 第2列宽度为8000 sheet.setDefaultColumnWidth(10); // 其他列默认宽度为10 // 创建单元格样式对象 CellStyle style = workbook.createCellStyle(); style.setBorderTop(BorderStyle.THIN); // 上边框样式 style.setBorderBottom(BorderStyle.THIN); // 下边框样式 style.setBorderLeft(BorderStyle.THIN); // 左边框样式 style.setBorderRight(BorderStyle.THIN); // 右边框样式 // 创建标题行 Row titleRow = sheet.createRow(0); titleRow.createCell(0).setCellValue("标题1"); titleRow.createCell(1).setCellValue("标题2"); // 设置标题行样式 for (Cell cell : titleRow) { cell.setCellStyle(style); } // 创建数据行 for (int i = 1; i <= 10; i++) { Row dataRow = sheet.createRow(i); dataRow.createCell(0).setCellValue("数据" + i + "-1"); dataRow.createCell(1).setCellValue("数据" + i + "-2"); // 设置数据行样式 for (Cell cell : dataRow) { cell.setCellStyle(style); } } // 输出Excel文件 FileOutputStream outputStream = new FileOutputStream("output.xlsx"); workbook.write(outputStream); outputStream.close(); ``` 这段代码创建了一个名为`Sheet1`的工作表,并设置了第1列宽度为5000,第2列宽度为8000,其他列默认宽度为10。同时,创建了一个单元格样式对象,设置了上下左右四个边框的样式为细线。然后创建了一个标题行和10行数据行,并给它们设置了相同的样式。最后将工作簿对象输出到文件中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值