2010-08-31 9 views

Antwort

22

jxl ist für eine erhöhte Leseeffizienz ausgelegt (da dies die primäre Verwendung der API ist). Um die Leistung zu verbessern, werden Daten, die sich auf Ausgabeinformationen beziehen (z. B. alle Formatierungsinformationen, wie z. B. Schriftarten), nicht interpretiert, wenn das Arbeitsblatt gelesen wird, da dies beim Abfragen der Rohdatenwerte überflüssig ist.

Wenn wir jedoch brauchen diese Tabelle einen Griff an die verschiedenen Schreib Schnittstellen ändern benötigt, die das Kopierverfahren erhalten werden können.

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

Dies kopiert die Informationen, die die zusätzliche Verarbeitung, wie die Durchführung in als auch gelesen hat, um die Felder zu interpretieren, die notwendig sind für das Schreiben von Tabellen bereits. Der Nachteil dieser leseoptimierten Strategie besteht darin, dass wir zwei Arbeitsblätter im Speicher haben und nicht nur eins, wodurch die Speicheranforderungen verdoppelt werden.

Aber nach diesem können Sie tun, was Sie wollen. Wie:

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

Hinweis: Dies ist direkt aus Andy Khan's tutorial page entnommen.

+0

Hallo @Lalli ich Ihre Antwort bin mit aber es funktioniert nicht Ich erhalte Fehler auf dieser Linie 'WritableWorkbook kopieren = Workbook.createWorkbook (neue Datei ("temp.xls"), Arbeitsmappe); ' FEHLER ist' java.io.FileNotFoundException: temp.xls: geöffnet fehlgeschlagen: EROFS (Nur-Lese-Dateisystem) ' –

0

Ich weiß, dass dies eine ziemlich alte Frage ist, aber wenn jemand auf das gleiche Problem stoßen wird, dann um die korrekte Formatierung (Schriftart, Färbung, etc.) zu speichern Sie sollten das Zellenformat speichern, bevor es auf Label , und erzwingen Sie dann die Zelle zu der vorherigen Formatierung. Code:

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

Obwohl es manchmal in Ordnung ist, eine Frage nur mit Code, aber die meiste Zeit zu beantworten Der Post wird durch Hinzufügen einer Erklärung verbessert. Sie können Ihre Antwort so bearbeiten, dass sie eine enthält. –

Verwandte Themen