Java:Excel

Aus Alexander's Wiki
Version vom 22. November 2010, 20:57 Uhr von Admin (Diskussion | Beiträge) (Schützte „Java:Excel“: Editwar ([edit=autoconfirmed] (unbeschränkt) [move=autoconfirmed] (unbeschränkt)))

Vorlage:GoogleAnalytics

Excel-Datei mit der JAVA POI-HSSF API schreiben

Analog zum Einlesen einer Excel Datei funktioniert auch das Schreiben in eine Excel Datei über die Java POI API. Erst ein Workbook anlegen, dann über dieses Workbook ein Tabellenblatt erstellen bzw. ein vorhandenes öffnen. Und nun kann man die Zellen wiederum über die Row und Cell Objekte ansprechen, mit Inhalten befüllen und formatieren.

  public HSSFWorkbook wb = new HSSFWorkbook();
  public HSSFSheet sheet = wb.createSheet("Name des Excel-Sheets");
  public HSSFRow row = null;
  public HSSFCell cell = null;

Die einzelnen Zellen lassen sich vielseitig formatieren. Angefangen von Ausrichtungen, über die Schriftart, Schröße und Stärke kann unter anderem auch der Hintergrund farblich angepasst oder z.B. einer Zelle ein bestimmtes Format zugewiesen werden.

  public HSSFDataFormat format = wb.createDataFormat();
  public HSSFFont font = wb.createFont();
  font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
  public HSSFColor color = null;
  public HSSFCellStyle cellstyle = wb.createCellStyle();
  cellstyle.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
  cellstyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);
  cellstyle.setFillPattern( HSSFCellStyle.SOLID_FOREGROUND );
  cellstyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
  cellstyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
  cellstyle .setBorderRight(HSSFCellStyle.BORDER_THIN);
  cellstyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
  cellstyle.setFont(font);
  cellstyle.setDataFormat(format.getFormat("#,##"));

Wenn man sich ein Standard-Set an Formatierungen in Form der CellStyles erarbeitet hat kann man nun die Zellen mit Inhalten beschreiben und anschließen den passenden CellStyle setzen.

  row = sheet1.createRow((short)0);
  cell = row.createCell(0);
  cell.setCellValue("Zeile 1 - Zelle 1");
  cell.setCellStyle(cellstyle);
  row = sheet1.createRow((short)1);
  cell = row.createCell(1);
  cell.setCellValue("Zeile 2 - Zelle 2");,
  cell.setCellStyle(cellstyle);

Die Festlegung der Zellbreite kann automatisch erfolgen. Die fertige Datei lässt sich als FileOutputStream abspeichern.

  sheet.autoSizeColumn((short)0);
  sheet.autoSizeColumn((short)1);
  FileOutputStream fileOut = new FileOutputStream("workbook.xls");

Weiterführende Links