2016-06-01 15 views
1

Spaltenüberschrift Rotierende Verwendung HSSFCellStyle Verwendung Arbeitsmethode setRotation fein wie unten Programm ---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"); 
} 

aber denselben Code verwenden WRITEN XSSF Ausgabedatei Spaltenkopf nicht dreht. Code unten 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"); 
} 

verwendet, kann so jemand mir auf diesen Hinweis geben.

Danke.

Antwort

1

Es geht um Formate für XLS und XLSX Blätter und Arbeitsmappen - sie sind anders.

Hier ist Teil JavaDoc auf setRotation() Methode:

public void setRotation(short rotation)

den Grad der Drehung für den Text in der Zelle Set

in Grad. Werte reichen von 0 bis 180. Der erste Buchstabe von der Text gilt als Mittelpunkt des Bogens. Für 0 - 90 repräsentiert der Wert Grad über Horizont. Für 91-180 Grad unter wird der Horizont berechnet als: [Grad unter Horizont] = 90 - textRotation.

Hinweis: HSSF verwendet Werte von -90 bis 90 Grad, während XSSF Werte von 0 bis 180 Grad verwendet. Die Implementierungen dieser Methode werden zwischen diesen beiden Wertebereichen entsprechend abgebildet, jedoch gibt der entsprechende Getter Werte in dem Bereich zurück, der durch den aktuellen Typ des Excel-Dateiformats, dem dieser CellStyle zugewiesen ist, an übermittelt.

So, hier ist das richtige Beispiel dafür, was Sie bereit sind zu tun:

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, wenn meine Antwort richtig ist - bitte es als das beste markieren, so dass andere Community-Mitglieder es auch nützlich finden könnten. – xSAVIKx