-
Ich kenne mich in den Funktionen da nicht aus.
Aber die Deklaration (sprich der Aufruf) muss ja in etwa ähnlich anderen Zuweisungs-Operationen definiert werden.
Prüfe da genau die Argumente und Ausprägungen.
-
Da ich nur die Deklarationen sehen, kann ich mir kein richtiges Urteil bilden. Aber wie setzt du die Javazeilen:
PHP-Code:
// Papiergrösse A4 (short 9) HSSFPrintSetup ps = sheet.getPrintSetup(); ps.setPaperSize(HSSFPrintSetup.A4_PAPERSIZE);
um? Das Objekt HSSFPrintSetup muss aus dem Sheet initialisiert werden. Machst du das?
Allerdings muss ich hier auch ein Warnungen aussprechen:
1. RPG und Java....(siehe auch Homepage von Dieter Bender)
2. die POI-Lib
Die Exceltabelle wird komplett im Hauptspeicher erstellt. Der Hauptspeicherbedarf ist ca. Faktor 15-20 (!) vom xls.
Da bei uns auch mal größere Listen drüberlaufen, verwende ich die POI-Lib nicht! (besser JExcelAPI)
Anbei ein Commandline Tool, aber wie gesagt: nix für große XLS-Dateien.
Robert P.
PHP-Code:
import com.ibm.as400.access.*; import java.sql.*; import java.io.FileOutputStream; import org.apache.poi.hssf.usermodel.*;
public class PoiDemo {
public void run (String dbFile, String outFile, String user, String password) throws SQLException {
dbFile = dbFile.replaceAll("/", "."); // SQL schreibweise
// JDBC-Treiber laden DriverManager.registerDriver(new com.ibm.as400.access.AS400JDBCDriver());
Connection conn = DriverManager.getConnection("jdbc:as400://127.0.0.1;extended metadata=true", user, password);
Statement stmt = conn.createStatement (); ResultSet rs = stmt.executeQuery ("select * from " + dbFile);
ResultSetMetaData meta = rs.getMetaData(); int anzFields = meta.getColumnCount(); int zeile = 0;
// neues Dokument HSSFWorkbook wb = new HSSFWorkbook(); // neues sheet HSSFSheet sheet = wb.createSheet("Demo"); // Papiergrösse A4 (short 9) HSSFPrintSetup ps = sheet.getPrintSetup(); ps.setPaperSize(HSSFPrintSetup.A4_PAPERSIZE);
// Zeile erzeugen, um 1 erhöhen HSSFRow row = sheet.createRow(zeile++); HSSFCell cell;
// Überschriften erzeugen for (int i = 0; i < anzFields; i++) { cell = row.createCell((short) i); String label = meta.getColumnLabel(i+1);
// alte, mehrzeilige Columnheadings komprimieren (für Autofilter & Co) switch (label.length()) { case 60: label = label.substring(0, 19).trim() + " " + label.substring(20, 39).trim() + " " + label.substring(40).trim(); break; case 40: label = label.substring(0, 19).trim() + " " + label.substring(20, 39).trim(); break; default: label = label.trim(); }
cell.setCellValue(label); // Spaltenbreite aus Metadaten holen (256=eine Zeichenbreite + etwas Abstand) sheet.setColumnWidth((short) i, (short) (meta.getColumnDisplaySize(i+1) * (256 + 16) + 512)); }
// Daten umschaufeln while (rs.next ()) { row = sheet.createRow(zeile++); for (int i = 0; i < anzFields; i++) { cell = row.createCell((short) i); // zwischen numerisch unterscheiden, der Rest als String if (meta.getColumnClassName(i+1).equals("java.math.BigDecimal")) { cell.setCellValue(rs.getDouble(i+1)); cell.setCellType(cell.CELL_TYPE_NUMERIC); } else { cell.setCellValue(rs.getString(i+1)); cell.setCellType(cell.CELL_TYPE_STRING); }
} }
rs.close(); stmt.close(); conn.close();
// File schreiben try { FileOutputStream xlsFile = new FileOutputStream(outFile); wb.write(xlsFile); xlsFile.close(); } catch (Exception e) { System.out.println("Fehler beim Erstellen von File " + outFile + ": " + e); } }
public static void main (String args []) throws SQLException {
if (args.length == 4) { try { new PoiDemo().run(args[0],args[1],args[2],args[3]); } catch (SQLException e) { System.out.println("Datenbankfehler: " + e); } } else { System.out.println("AS/400 DbFile2XLS"); System.out.println("Parameter: AS400Lib/File IFS-OutFile User Password"); } } }
Anmkerungen:
1. Das Tool verwendet nicht die nativen DB2-Treiber
2. Für den Normalgebrauch ist von metadata=true abzuraten. In diesem Fall ist das Absicht, damit man an die wirklichen Feldbezeichnungen kommt.
3. wie gesagt, braucht viel Speicher bei großen XLS-Tabellen
4. hier ein Beispielaufruf:
PHP-Code:
QSH
java -classpath /pfad:/pfad/poi-2.5.1.jar PoiDemo Lib/ARTIKEL /freigaben/Artikel.xls user pass
Similar Threads
-
By Stoeberl in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 10-01-07, 10:58
-
By Kilianski in forum NEWSboard Server Software
Antworten: 0
Letzter Beitrag: 22-11-06, 15:23
-
By TobiasHe in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 08-04-05, 08:44
-
By ErnieBaer in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 16-02-05, 15:03
-
By Markus H in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 19-07-01, 19:21
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks