StealthRT
StealthRT

Reputation: 10542

POI and setting cells to VerticalAlignment.MIDDLE

Hey all I am trying to get my cell to vertical line instead of just being aligned by the left side using POI.

This is my java code:

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);

However, the line headerCellStyle.setVerticalAlignment(VerticalAlignment.MIDDLE); has an error of:

The method setVerticalAlignment(org.apache.poi.ss.usermodel.VerticalAlignment) in the type CellStyle is not applicable for the arguments (org.apache.poi.sl.usermodel.VerticalAlignment)

How can i go about getting this to work if I have already defined it as an static CellStyle headerCellStyle = workbook.createCellStyle();?

Changing to SS does not seem to have the "middle" option?

enter image description here

This is the difference within excel for those 2 types:

The default way:

enter image description here

The Middle way (the way I am wanting):

enter image description here

The Center way:

enter image description here

Upvotes: 0

Views: 7999

Answers (1)

Axel Richter
Axel Richter

Reputation: 61870

Your second image (the way you want) shows CellStyle.setVerticalAlignment(VerticalAlignment.CENTER). Your third image shows CellStyle.setAlignment(HorizontalAlignment.CENTER).

There is a difference between setVerticalAlignment(VerticalAlignment.CENTER) and setAlignment(HorizontalAlignment.CENTER). The first sets vertical alignment to center (aka middle). The second sets horizontal alignment to center.

Complete Example:

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);
  }

 }
}

Result:

enter image description here

Upvotes: 4

Related Questions