Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich habe eine JTable in meinem Programm, ich will nun gern das der Inhalt einer Tabelle die mit Excel gemacht worden ist in diese Jtable übertragen wird. Ist das Möglich? Wenn ja wo kann ich nachlsen wie das geht? Habe hier paar Bücher doch dort stehts leider nichts. Oder könnt Ihr mir das evt erklären?
Also mit JExcel ist das ganze ziemlich einfach. Hier mal eine Klasse, die ich mal geschrieben habe:
Code:
/**
* Reader zum Auslesen von Exceldateien
*
* @author Danny
* @version 0.1
*/
public class ExcelReader {
/** Die Arbeitsmappe der Exceldatei */
private Workbook workbook;
/** Einstellungen für die Arbeitsmappe */
private WorkbookSettings settings;
/** Der aktuell verwendete Sheet */
private Sheet sheet;
/** Erzeugt einen neuen ExcelReader und verwendet Standardeinstellungen */
public ExcelReader() {
this.settings = new WorkbookSettings();
this.settings.setLocale(new Locale("de", "DE"));
this.settings.setEncoding("ISO-8859-1");
//this.settings.setEncoding("UTF-8");
}
/**
* Lädt eine neue Datei und selektiert den ersten Sheet
* @param file die zu öffnende Datei
* @throws java.io.IOException
* @throws jxl.read.biff.BiffException
*/
public void loadFile(File file) throws IOException, BiffException {
this.workbook = Workbook.getWorkbook(file);
this.sheet = this.workbook.getSheet(0);
}
/**
* Wählt den Sheet anhand seiner ID aus
* @param sheetId die ID des Sheets
*/
public void setSheet(int sheetId) {
this.sheet = this.workbook.getSheet(sheetId);
}
/**
* Wählt den Sheet anhand seines Namens aus
* @param sheetName der Name des Sheets
*/
public void setSheet(String sheetName) {
this.sheet = this.workbook.getSheet(sheetName);
}
/**
* Gibt den aktuell verwendeten Zeichensatz zurück
* @return Zeichensatz
*/
public String getEncoding() {
return this.settings.getEncoding();
}
/**
* Legt den zu verwendeten Zeichensatz fest
* @param encoding Zeichensatz
*/
public void setEncoding(String encoding) {
this.settings.setEncoding(encoding);
}
/**
* Gibt die Namen aller verfügbaren Sheets zurück
* @return die verfügbaren Sheets
*/
public String[] getSheetNames() {
return this.workbook.getSheetNames();
}
/**
* Gibt die Anzahl der Zeilen des aktuellen Sheets zurück
* @return Anzahl der Zeilen
*/
public int getRowCount() {
return this.sheet.getRows();
}
/**
* Gibt die Anzahl der Spalten des aktuellen Sheets zurück
* @return Anzahl der Spalten
*/
public int getColumnCount() {
return this.sheet.getColumns();
}
/**
* Gibt den Inhalt des Sheets als zweidimensionales String-Array zurück
* @return Inhalt des Sheets
*/
public String[][] getDataArray() {
int rows = this.sheet.getRows();
int cols = this.sheet.getColumns();
String[][] data = new String[rows][];
// Alle Zeilen des Sheets durchlaufen
for (int i = 0; i < rows; i++) {
Cell[] row = this.sheet.getRow(i); // Die Zellen der aktuellen Zeile
String[] newRow = new String[cols]; // Zeile als String-Array
// Die Spalten der aktuellen Zeile durchlaufen
for (int j = 0; j < cols && j < row.length; j++) {
newRow[j] = row[j].getContents();
}
data[i] = newRow; // String-Array in das Daten-Array einfügen
}
return data;
}
}
Jetzt kannst du eine Instanz des ExcelReaders erstellen und die Datei laden.
Mit setSheet() kannst du entweder mit der ID oder den Namen den Sheet auswählen. Wenn du dann getDataArray() aufrufst, bekommst du ein zweidimensionales String-Array mit den vorhandenen Zeilen und SPalten zurück.
Wenn du dich jetzt ein bissle mit dem TableModel auskennst, sollte das ganze recht einfach sein.
Vorraussetzung für die Klasse ist das Vorhandensein der JExcelAPI!