2011-12-31 12 views
13

Mi chiedo se posso impostare la direzione del foglio Excel da destra a sinistra ... Sto usando JXL Api.Come creare un foglio Excel con allineamento da destra a sinistra usando JXL

grazie in anticipo

La generosità è circa da destra a sinistra e non a destra allineamento

enter image description here

+0

Solo una supposizione da parte mia, ma è il metodo per impostare le impostazioni regionali di alcun aiuto a voi ('setExcelRegionalSettings() 'su' WorkbookSettings')? Non ho mai lavorato con questo 'API', quindi fare un banco di prova sarebbe molto più semplice per te come lo sarebbe per me. – Aquillo

+0

Questa funzione non è disponibile in JXL. Tuttavia, se si utilizza POI Apache, questo è molto possibile. –

+0

@Imad JAMIL Sei passato a Poi da JXL? –

risposta

7

Questo può essere fatto manualmente (from Microsoft Office Support)

La Destra-to l'opzione a sinistra nella finestra di dialogo Opzioni di Excel orienta i nuovi fogli di lavoro di ri da sinistra a sinistra. L'impostazione non si applica al foglio di lavoro attualmente visualizzato. È possibile avere fogli di lavoro orientati a destra a sinistra e a sinistra nella stessa cartella di lavoro.

  1. Fare clic sul pulsante Microsoft Office, quindi su Opzioni di Excel. Dov'è il pulsante Opzioni di Excel?
  2. Fare clic su Internazionale.
  3. In direzione destra-sinistra e predefinita, fare clic su Da destra a sinistra, quindi fare clic su OK.
  4. Inserire un nuovo foglio di lavoro o aprire una nuova cartella di lavoro.
  5. Nella barra delle applicazioni di Windows (o sulla barra della lingua, se è visibile), fare clic sull'icona Lingua, quindi fare clic sul nome della lingua da destra a sinistra che si desidera utilizzare.
  6. Se è necessario modificare la direzione del testo, fare clic sul pulsante da destra a sinistra nella scheda Dati nel gruppo Allineamento carattere.

Sembra che JXL api non supporti questa funzione. È possibile dare un'occhiata a Apache Poi (javadoc) o TeamDev's JExcel (javadoc) che è più appropriato per questo tipo di esigenza. L'attuazione sarà simile a questi:

Poi modo:

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

Circa poi: 1, 2, 3.

Btw, se si prova l'uso setExcelRegionalSettings(IL) o setExcelRegionalSettings(IL-JM) non è andare a lavorare perché questi sono gli unici paesi supportati da 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 è buono, l'ho usato qualche tempo fa, consente di modificare senza rovinare i grafici o le impostazioni avanzate nella cartella di lavoro. – NoBugs

8

Attualmente JXL non supporta questa opzione, ma ho una buona soluzione funzionerà se sei disposto a modificare e ricostruire JXL.

Le opzioni da destra a sinistra vengono salvate e definite in una sezione del file denominato record WINDOW2. È possibile visualizzare tutte le opzioni definite nella parte here nella sezione 5.110 WINDOW2. Sotto la sezione 5.110.2 flag di opzione, si può vedere il valore della maschera per il flag di opzione e l'opzione da destra a sinistra:

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

JXL creare Questa parte del file excel in questa classe - Window2Record.

Nel metodo di costruzione si può vedere che alcuni dei valori sono configurabili e alcuni sono hard-coded:

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

Come si può vedere le opzioni "di visualizzazione simboli di struttura" è difficile codificato per essere vero, dal momento che è mask (0x80) sempre aggiunto al flag delle opzioni, e DisplayZeroValues ​​è configurabile dai valori dell'oggetto SheetSettings dato (che ha getter e setters ...)

Se sei disposto a ricostruire il progetto, puoi hardcoded le tue impostazioni da destra a sinistra aggiungendo la riga:

opzioni | = 0x40; // Colonne da destra a sinistra

a questo costruttore, o se lo vuoi configurabile, aggiungere un nuovo parametro per le SheetSettings (e un getter e setter per esso) e nel Window2Record aggiungono destra se la clausola per questo.

0

Per impostare da destra a sinistra in direzione durante la creazione foglio di calcolo:

  • crea manualmente un file modello xls con da destra a sinistra direzione del testo
  • Quando si desidera creare un nuovo foglio di calcolo in JExcel:

    • aprire il modello come un foglio di lavoro
    • invok e il metodo del foglio di lavoro per creare un nuovo foglio di lavoro come copia del modello del foglio di lavoro. Ecco il metodo nella classe cartella di lavoro:.

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

      Crea una cartella di lavoro scrivibile con il nome del file data come una copia della cartella di lavoro passato in volta creati, i contenuti della cartella di lavoro scrivibili possono essere modificati

cambiare direzione dopo la creazione:

  • è possibile creare manualmente una macro di Excel chiamato Auto_apri che verrà eseguito ogni volta che il foglio di calcolo è aperto:

    Application.DefaultSheetDirection = xlRTL 
        ActiveSheet.DisplayRightToLeft = True 
    
  • o si può fare tutto il vostro trattamento con JXL, chiudere il file e quindi eseguire un VBscript (interfacciamento con Microsoft .office.interop.excel.dll):

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

    È possibile eseguire uno script da Java tramite Process

Problemi correlati