weis jemand, ob es möglich ist, einen JTable mit gesetzten Farben in eine Excel-Datei zu exportieren?
Ich habe einen JTable (Lagersoftware) bei dem verschiedene Stadien der einzelnen Zeilen (Lagereingänge) mit Farben dargestellt sind.
Das Programm ist soweit fertig, aber unserem Kunden müssen wir die Liste als Excel mit den entsprechenden Farbzuteilungen schicken.
Bisher habe ich nur Möglichkeiten gefunden, die reinen Daten in eine Excel zu exportieren.
Oh, das hört sich gut an. Darauf bin ich nicht gestoßen.
Nur müssen natürlich die einzelnen Farben aus dem JTable ausgelesen werden. Es geht nicht um die Spalten, sondern um die Zeilen.
Row 0 = green
Row 1 = yellow
Row 2 = green usw.
So eine Lagerliste hat bis zu 100 rows und jede hat eine von 4 Farben, je nach deren Stadium zugeteilt.
rot = Teillieferung
gelb = Komplettlieferung
blau ist = nicht prüfbar
grün = ausgelagert.
Aber ich werde unter dem Stichwort Apache POI mal weiterschauen. Das ist ein Ansatz.
ich bin mitlerweile mit Apache POI am experimentieren.
Evtl. hast Du eine Idee weshalb der Export nicht funktioniert.
Durch den JFileChooser speichere ich die Excel auf meinem Rechner ab.
Wenn ich die Excel-Datei öffne, bekomme ich sofort den Hinweis:
>> Wir haben ein Problem bei einigen Inhalten on xxxx. (Dateiname)....
Es sind dann auch keine Daten in dem Excel-Sheet vorhanden.
Durch die sysout Zeile weis ich aber, daß die Zellen durch die Schleifen mit den richtigen Daten gefüllt werden.
Auf der Konsole wird alles richtig ausgegeben.
Nur das Schreiben in Excel haut aus was für einen Grund auch immer nicht hin.
Ich danke für Deine Zeit
Code:
public class ExcelExport {
public static void writer (JTable table) throws IOException {
JFileChooser save = new JFileChooser();
save.setDialogTitle("Save as...");
save.setFileFilter(new FileNameExtensionFilter ("xlsx", "xls", "xlsm"));
int choose = save.showSaveDialog(null);
if (choose == JFileChooser.APPROVE_OPTION) {
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet ("Gartner Lagerliste");
//try
TableModel model = table.getModel();
for (int i=0; i<model.getRowCount(); i++) {
XSSFRow hRow = sheet.createRow(i);
for (int j=0; j<model.getColumnCount(); j++) {
XSSFCell cell = hRow.createCell((short)j, CellType.STRING);
// hier Schleife für Kopfzeile if i=0 ...
cell.setCellValue(model.getValueAt(i, j).toString());
System.out.println(cell);
// Cell wird nicht in Excel geschrieben
}
}
FileOutputStream FOS = new FileOutputStream (save.getSelectedFile()+".xlsx");
BufferedOutputStream bos = new BufferedOutputStream (FOS);
workbook.write(bos);
FOS.close();
bos.close();
}
}
}
Im ersten Moment würde ich sagen, dass Du erst den bos und dann den FOS schließen musst. Wenn das nichts bringt, melde Dich nochmal, dann probiere ich das kurz aus.
Im ersten Moment würde ich sagen, dass Du erst den bos und dann den FOS schließen musst. Wenn das nichts bringt, melde Dich nochmal, dann probiere ich das kurz aus.