2011-12-31 24 views
13

Me pregunto si puedo establecer la dirección de la hoja de Excel de derecha a izquierda ... Estoy usando JXL Api.Cómo crear una hoja de Excel con alineación de derecha a izquierda usando JXL

gracias de antemano

La recompensa es de aproximadamente derecha a izquierda y no alineación a la derecha

enter image description here

+0

Sólo una conjetura de mi parte, pero es el método para establecer la configuración regional de ninguna ayuda para usted ('setExcelRegionalSettings() 'on' WorkbookSettings')? Nunca he trabajado con esta 'API', por lo que hacer una prueba sería mucho más fácil para usted que para mí. – Aquillo

+0

Esta función no está disponible en JXL. Sin embargo, si usa el POI de Apache, esto es muy posible. –

+0

@Imad JAMIL ¿Has cambiado a Poi de JXL? –

Respuesta

7

Esto se puede hacer manualmente (from Microsoft Office Support)

El Derecho-a- la opción izquierda en el cuadro de diálogo Opciones de Excel orienta nuevas hojas de trabajo de ri ght a la izquierda. La configuración no se aplica a la hoja de cálculo que se muestra actualmente. Puede tener hojas de cálculo orientadas a la derecha a la izquierda y de izquierda a derecha en el mismo libro de trabajo.

  1. Haga clic en el botón de Microsoft Office y luego en Opciones de Excel. ¿Dónde está el botón Opciones de Excel?
  2. Haga clic en Internacional.
  3. De derecha a izquierda y Dirección predeterminada, haga clic en De derecha a izquierda y, a continuación, haga clic en Aceptar.
  4. Inserta una nueva hoja de trabajo o abre un nuevo libro de trabajo.
  5. En la barra de tareas de Windows (o en la barra de idiomas, si está visible), haga clic en el icono de Idioma y luego en el nombre del idioma de derecha a izquierda que desea usar.
  6. Si necesita cambiar la dirección del texto, haga clic en el botón de derecha a izquierda en la pestaña Datos en el grupo Alineación de fuentes.

Parece que JXL api no es compatible con esta característica. Puede echar un vistazo a Apache Poi (javadoc) o TeamDev's JExcel (javadoc) que es más apropiado para este tipo de requisito. La aplicación será similar a esto:

Poi manera:

XSSFSheet sheet = workbook.createSheet(); 
sheet.getCTWorksheet().getSheetViews().getSheetViewArray(0).setRightToLeft(true); 

Via JExcel:

final Application application = ...; 
     application.getOleMessageLoop().doInvokeAndWait(new Runnable() { 
      public void run() { 
       _Application app = application.getPeer(); 
       app.setDefaultSheetDirection(new Int32(LocaleID.LOCALE_USER_DEFAULT), new Int32(Constants.xlRTL)); 
      } 
     }); 

Sobre poi: 1, 2, 3.

Por cierto, si se intenta el uso setExcelRegionalSettings(IL) o setExcelRegionalSettings(IL-JM) no va a funcionar porque estos son los únicos países apoyados por JXL:

public static final jxl.biff.CountryCode USA; 
public static final jxl.biff.CountryCode CANADA; 
public static final jxl.biff.CountryCode GREECE; 
public static final jxl.biff.CountryCode NETHERLANDS; 
public static final jxl.biff.CountryCode BELGIUM; 
public static final jxl.biff.CountryCode FRANCE; 
public static final jxl.biff.CountryCode SPAIN; 
public static final jxl.biff.CountryCode ITALY; 
public static final jxl.biff.CountryCode SWITZERLAND; 
public static final jxl.biff.CountryCode UK; 
public static final jxl.biff.CountryCode DENMARK; 
public static final jxl.biff.CountryCode SWEDEN; 
public static final jxl.biff.CountryCode NORWAY; 
public static final jxl.biff.CountryCode GERMANY; 
public static final jxl.biff.CountryCode PHILIPPINES; 
public static final jxl.biff.CountryCode CHINA; 
public static final jxl.biff.CountryCode INDIA; 
public static final jxl.biff.CountryCode UNKNOWN; 
+1

Apache one es bueno, lo usé hace algún tiempo, permite editar sin estropear gráficos o configuraciones avanzadas en el libro de trabajo. – NoBugs

8

Actualmente JXL no admite esta opción, pero tengo una buena solución eso funcionará si está dispuesto a editar y reconstruir JXL.

Las opciones de derecha a izquierda se guardan y definen en una sección del archivo llamada registro WINDOW2. Puede ver todas las opciones definidas en la parte here en la sección 5.110 WINDOW2. En la sección 5.110.2 indicadores de opción, se puede ver el valor de la máscara de la bandera opción y la opción de derecha a izquierda:

6 | 0040H | 0 = Columns from left to right | 1 = Columns from right to left 

JXL crear esta parte del archivo de Excel en esta clase - Window2Record.

En el método constructor se puede ver que algunos de los valores son configurables y algunos son no modificable:

public Window2Record(SheetSettings settings) 
    { 
    super(Type.WINDOW2); 

    int options = 0; 

    options |= 0x0; // display formula values, not formulas 

    if (settings.getShowGridLines()) 
    { 
     options |= 0x02; 
    } 

    options |= 0x04; // display row and column headings 

    options |= 0x0; // panes should be not frozen 

    if (settings.getDisplayZeroValues()) 
    { 
     options |= 0x10; 
    } 

    options |= 0x20; // default header 

    options |= 0x80; // display outline symbols 

    // Handle the freeze panes 
    if (settings.getHorizontalFreeze() != 0 || 
     settings.getVerticalFreeze() != 0) 
    { 
     options |= 0x08; 
     options |= 0x100; 
    } 
... 

Como se puede ver las opciones de "símbolos de esquema" está codificado para ser verdad, ya su máscara (0x80) siempre se agrega al indicador de opciones, y DisplayZeroValues ​​es configurable por los valores del objeto SheetSettings dado (que tiene getter y setters ...)

Si está dispuesto a reconstruir el proyecto, puede codifique su configuración de derecha a izquierda agregando la línea:

opciones | = 0x40; // Las columnas de derecha a izquierda

a este constructor, o si lo desea puede configurar, añadir un nuevo parámetro para los SheetSettings (y un getter y setter para ello) y en el Window2Record añaden la derecha si la cláusula para ello.

0

Para definir de derecha a izquierda dirección durante la creación de la hoja de cálculo:

  • crear manualmente un archivo de plantilla xls con escritura de derecha a izquierda dirección del texto
  • Cuando se desea crear una nueva hoja de cálculo en JExcel:

    • abrir la plantilla como una hoja de
    • invok El método de la hoja de cálculo para crear una nueva hoja de trabajo como una copia de la plantilla de la hoja de trabajo. Aquí está el método en la clase libro de trabajo:.

      public static WritableWorkbook createWorkbook(java.io.File file, 
                     Workbook in) 
                 throws java.io.IOException 
      

      creará un libro se puede escribir con el nombre de archivo dado como una copia del libro aprobada en vez creado, el contenido del libro se puede escribir pueden ser modificados

para cambiar de dirección después de la creación:

  • puede crear manualmente una macro de Excel llamada Auto_open que se ejecutará cada vez que la hoja de cálculo está abierta:

    Application.DefaultSheetDirection = xlRTL 
        ActiveSheet.DisplayRightToLeft = True 
    
  • o puede hacer todo su procesamiento con JXL, cierre el archivo y luego ejecutar un VBScript (interfaz con Microsoft .office.interop.excelDLL):

    Set xl = CreateObject("Excel.application") 
    xl.Application.Workbooks.Open "yourworkbookpath\yourworkbook.xls" 
    xl.DefaultSheetDirection = xlRTL 
    

    Puede ejecutar un script de Java a través de Process

Cuestiones relacionadas