2016-06-01 2 views
1

tête de colonne rotative à l'aide HSSFCellStyle en utilisant la méthode setRotation fonctionne bien comme ci-dessous le programme ---XSSF Apache POI XSSFCellStyle

public static void main(String[] args)throws Exception 
{ 
    HSSFWorkbook workbook = new HSSFWorkbook(); 
    HSSFSheet spreadsheet = workbook.createSheet(
    "Text direction"); 
    HSSFRow row = spreadsheet.createRow(2); 
    HSSFCellStyle myStyle = workbook.createCellStyle(); 
    myStyle.setRotation((short) 0); 
    HSSFCell cell = row.createCell(1); 
    cell.setCellValue("0D angle"); 
    cell.setCellStyle(myStyle); 

    myStyle=workbook.createCellStyle(); 
    myStyle.setRotation((short) 90); 
    cell = row.createCell(3); 
    cell.setCellValue("30D angle"); 
    cell.setCellStyle(myStyle); 

    myStyle=workbook.createCellStyle(); 
    myStyle.setRotation((short) -90); 
    cell = row.createCell(5); 
    cell.setCellValue("90D angle"); 
    cell.setCellStyle(myStyle); 

    FileOutputStream out = new FileOutputStream(
    new File("textdirection.xlsx")); 
    workbook.write(out); 
    out.close(); 
    System.out.println( 
    "textdirection.xlsx written successfully"); 
} 

mais même code en utilisant writen tête de colonne de fichier de sortie XSSF ne tourne pas. ci-dessous en utilisant le code XSSF--

public static void main(String[] args)throws Exception 
{ 
    XSSFWorkbook workbook = new XSSFWorkbook(); 
    XSSFSheet spreadsheet = workbook.createSheet(
    "Text direction"); 
    XSSFRow row = spreadsheet.createRow(2); 
    XSSFCellStyle myStyle = workbook.createCellStyle(); 
    myStyle.setRotation((short) 0); 
    XSSFCell cell = row.createCell(1); 
    cell.setCellValue("0D angle"); 
    cell.setCellStyle(myStyle); 

    myStyle=workbook.createCellStyle(); 
    myStyle.setRotation((short) 180); 
    cell = row.createCell(3); 
    cell.setCellValue("30D angle"); 
    cell.setCellStyle(myStyle); 

    myStyle=workbook.createCellStyle(); 
    myStyle.setRotation((short) -180); 
    cell = row.createCell(5); 
    cell.setCellValue("90D angle"); 
    cell.setCellStyle(myStyle); 

    FileOutputStream out = new FileOutputStream(
    new File("textdirection.xlsx")); 
    workbook.write(out); 
    out.close(); 
    System.out.println( 
    "textdirection.xlsx written successfully"); 
} 

si quelqu'un peut me donner soupçon à ce sujet.

Merci.

Répondre

1

Tout tourne autour des formats de feuilles et de classeurs XLS et XLSX - ils sont différents.

est ici une partie de JavaDoc sur setRotation() méthode:

public void setRotation(short rotation)

Définir le degré de rotation du texte dans la cellule

exprimé en degrés. Les valeurs vont de 0 à 180. La première lettre de le texte est considéré comme le point central de l'arc. Pour 0 - 90, la valeur représente des degrés au-dessus de l'horizon. Pour 91-180 les degrés inférieurs à l'horizon est calculé comme suit: [degrés sous l'horizon] = 90 - textRotation.

Remarque: HSSF utilise des valeurs comprises entre -90 et 90 degrés, alors que XSSF utilise des valeurs comprises entre 0 et 180 degrés. Les implémentations de cette méthode mapperont entre ces deux plages de valeurs en conséquence, cependant le getter correspondant renvoie des valeurs dans la plage mandatée par le type actuel de format de fichier Excel que ce CellStyle est appliqué à.

Alors, voici l'exemple correct de ce que vous êtes prêt à faire:

package com.github.xsavikx.apachepoitest; 

import org.apache.poi.hssf.usermodel.*; 
import org.apache.poi.xssf.usermodel.*; 

import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 


public class ApachePOITest { 
    public static void main(String[] args) throws Exception { 
     XSSF(); 
     HSSF(); 
    } 

    private static void XSSF() throws IOException { 
     String filename = "textdirection_xssf.xlsx"; 
     try (XSSFWorkbook workbook = new XSSFWorkbook(); 
      FileOutputStream out = new FileOutputStream(new File(filename));) { 

      XSSFSheet spreadsheet = workbook.createSheet(
       "Text direction"); 
      XSSFRow row = spreadsheet.createRow(2); 
      XSSFCellStyle myStyle = workbook.createCellStyle(); 
      myStyle.setRotation((short) 0); 
      XSSFCell cell = row.createCell(1); 
      cell.setCellValue("0D angle"); 
      cell.setCellStyle(myStyle); 

      myStyle = workbook.createCellStyle(); 
      myStyle.setRotation((short) 90); 
      cell = row.createCell(3); 
      cell.setCellValue("30D angle"); 
      cell.setCellStyle(myStyle); 

      myStyle = workbook.createCellStyle(); 
      myStyle.setRotation((short) 180); 
      cell = row.createCell(5); 
      cell.setCellValue("90D angle"); 
      cell.setCellStyle(myStyle); 
      workbook.write(out); 
      System.out.println(String.format("%s written successfully", filename)); 
     } 
    } 

    private static void HSSF() throws IOException { 
     String filename = "textdirection_hssf.xls"; 
     try (HSSFWorkbook workbook = new HSSFWorkbook(); 
      FileOutputStream out = new FileOutputStream(new File(filename));) { 
      HSSFSheet spreadsheet = workbook.createSheet(
       "Text direction"); 
      HSSFRow row = spreadsheet.createRow(2); 
      HSSFCellStyle myStyle = workbook.createCellStyle(); 
      myStyle.setRotation((short) 0); 
      HSSFCell cell = row.createCell(1); 
      cell.setCellValue("0D angle"); 
      cell.setCellStyle(myStyle); 

      myStyle = workbook.createCellStyle(); 
      myStyle.setRotation((short) 90); 
      cell = row.createCell(3); 
      cell.setCellValue("30D angle"); 
      cell.setCellStyle(myStyle); 

      myStyle = workbook.createCellStyle(); 
      myStyle.setRotation((short) -90); 
      cell = row.createCell(5); 
      cell.setCellValue("90D angle"); 
      cell.setCellStyle(myStyle); 


      workbook.write(out); 
      System.out.println(String.format("%s written successfully", filename)); 
     } 
    } 

}

+0

@Basavaraj, si ma réponse est correcte - s'il vous plaît marquer comme le meilleur, donc que d'autres membres de la communauté pourraient le trouver utile aussi. – xSAVIKx