2010-08-31 17 views

risposta

22

jxl è progettato per una maggiore efficienza di lettura (poiché questo è l'uso principale dell'API). Per migliorare le prestazioni, i dati relativi alle informazioni di output (ad esempio tutte le informazioni di formattazione come i caratteri) non vengono interpretati quando viene letto il foglio di calcolo, poiché questo è superfluo quando si interrogano i valori dei dati non elaborati.

Tuttavia, se è necessario modificare questo foglio di calcolo, è necessario un handle per le varie interfacce di scrittura, che può essere ottenuto utilizzando il metodo di copia.

Workbook workbook = Workbook.getWorkbook(new File("myfile.xls")); 
WritableWorkbook copy = Workbook.createWorkbook(new File("temp.xls"), workbook); 

Questa copia le informazioni che è già stato letto in così come eseguire l'elaborazione aggiuntiva per interpretare i campi che sono necessari per per la scrittura di fogli di calcolo. Lo svantaggio di questa strategia ottimizzata per la lettura è che abbiamo due fogli di calcolo tenuti in memoria piuttosto che uno solo, raddoppiando così i requisiti di memoria.

Ma dopo, puoi fare quello che vuoi. Come:

WritableSheet sheet2 = copy.getSheet(1); 
WritableCell cell = sheet2.getWritableCell(1, 2); 

if (cell.getType() == CellType.LABEL) 
{ 
    Label l = (Label) cell; 
    l.setString("modified cell"); 
} 
copy.write(); 
copy.close(); 
workbook.close(); 

Nota: questa viene prelevata direttamente dalle Andy Khan's tutorial page.

+0

Hi @Lalli sto usando la tua risposta, ma non sta funzionando sto errore di salire su questa linea 'WritableWorkbook copia = Workbook.createWorkbook (new File ("temp.xls"), cartella di lavoro) ' ERRORE è' java.io.FileNotFoundException: temp.xls: open non riuscito: EROFS (sistema di file di sola lettura) ' –

0

So che questa è una domanda piuttosto vecchia, ma se qualcuno incontrasse lo stesso problema, quindi per conservare la formattazione corretta (tipo di carattere, colorazione, ecc.) dovresti salvare il formato della cella prima di lanciarlo su Etichetta e quindi forza la cella alla formattazione precedente. Codice:

CellFormat cfm = cell.getCellFormat(); 
Label l = (Label) cell; 
l.setString("modified cell"); 
cell.setCellFormat(cfm); 
0
//there is god example of it, you can copy in ur project and check it out, to 
//understand how it works 

Workbook wk = Workbook.getWorkbook(new File("ex.xls")); 
// 
WritableWorkbook wkr = Workbook.createWorkbook(new File("modifed.xls"), wk); 
/* second line makes copy of wk excel file object /creates a readable spreadsheet. 
both are now similar and i can Modify exiting wkr spreadsheets */ 



//next 2 line retrieve sheet number 0 and cell (1,1) 


WritableSheet getsht = wkr.getSheet(0); 
WritableCell getcl = getsht.getWritableCell(1, 1); 


//making own font 

WritableFont ft = new WritableFont(WritableFont.ARIAL, 20 , WritableFont.BOLD, true , UnderlineStyle.SINGLE); 
//making Format, which uses font 
WritableCellFormat form = new WritableCellFormat(ft); 

Number nb = (Number) getcl ;   
nb.setCellFormat(form);  


wkr.write(); 
wkr.close(); 
+0

Anche se a volte è ok rispondere a una domanda solo con il codice, ma il più delle volte il post è migliorato aggiungendo una spiegazione. Puoi modificare la tua risposta per includerne una. –

Problemi correlati