【问题标题】:POI and setting cells to VerticalAlignment.MIDDLEPOI 并将单元格设置为 VerticalAlignment.MIDDLE
【发布时间】:2019-12-26 19:53:08
【问题描述】:

大家好,我想让我的单元格垂直排列,而不是使用 POI 靠左侧对齐。

这是我的java代码:

static CellStyle headerCellStyle    = workbook.createCellStyle();

headerCellStyle = workbook.createCellStyle();
Row headerRow   = null;        
sheet           = workbook.createSheet("String " + sheetname);

headerCellStyle.setWrapText(true);
headerCellStyle.setAlignment(HorizontalAlignment.LEFT);
headerCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
headerCellStyle.setVerticalAlignment(VerticalAlignment.MIDDLE);

// Create a Row
headerRow   = sheet.createRow(0);

但是,headerCellStyle.setVerticalAlignment(VerticalAlignment.MIDDLE); 行有以下错误:

CellStyle类型中的setVerticalAlignment(org.apache.poi.ss.usermodel.VerticalAlignment)方法不适用于参数(org.apache.poi.sl.usermodel.VerticalAlignment)

如果我已经将它定义为 static CellStyle headerCellStyle = workbook.createCellStyle();,我该如何让它工作?

改成SS好像没有“中间”选项?

这是这两种类型在 excel 中的区别:

默认方式:

中道(我想要的方式):

中心路:

【问题讨论】:

  • 仔细查看您的错误 - 您的导入包名称中有错字!需要poi.ss. 而不是poi.sl.
  • @Gagravarr 似乎没有选择 SS 的中间选项?
  • CENTER 不会做你需要的吗? (不同的文件格式称呼不同的东西)
  • 更新了我的 OP 以显示每个设置的差异。
  • 你的第二张图片(我想要的方式)显示CellStyle.setVerticalAlignment(VerticalAlignment.CENTER)。您的第三张图片显示CellStyle.setAlignment(HorizontalAlignment.CENTER)VerticalAlignment.CENTERHorizontalAlignment.CENTER 是有区别的。

标签: java excel apache-poi alignment vertical-alignment


【解决方案1】:

您的第二张图片(您想要的方式)显示CellStyle.setVerticalAlignment(VerticalAlignment.CENTER)。您的第三张图片显示CellStyle.setAlignment(HorizontalAlignment.CENTER)

setVerticalAlignment(VerticalAlignment.CENTER)setAlignment(HorizontalAlignment.CENTER) 之间存在差异。第一个设置垂直对齐到中心(又名中间)。第二个设置水平对齐到中心。

完整示例:

import java.io.FileOutputStream;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

class CreateExcelVerticalAlignment {

 public static void main(String[] args) throws Exception {

//  try (Workbook workbook = new XSSFWorkbook(); 
//       FileOutputStream fileout = new FileOutputStream("Excel.xlsx") ) {

  try (Workbook workbook = new HSSFWorkbook(); 
       FileOutputStream fileout = new FileOutputStream("Excel.xls") ) {

   CellStyle headerCellStyle = workbook.createCellStyle();
   headerCellStyle = workbook.createCellStyle();
   headerCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);

   Sheet sheet = workbook.createSheet();
   sheet.setColumnWidth(0, 20*256);
   Row row = sheet.createRow(0);
   row.setHeightInPoints(40);
   Cell cell = row.createCell(0);
   cell.setCellStyle(headerCellStyle);
   cell.setCellValue("1082192560 1868");

   workbook.write(fileout);
  }

 }
}

结果:

【讨论】:

  • 这确实把它带到了中间。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多