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 dbFileString outFileString userString 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",
                     
userpassword);

       
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 0anzFieldsi++) {
           
cell row.createCell((shorti);
           
String label meta.getColumnLabel(i+1);

           
// alte, mehrzeilige Columnheadings komprimieren (für Autofilter & Co)
           
switch (label.length()) {
               case 
60:
                   
label label.substring(019).trim() + " " +
                           
label.substring(2039).trim() + " " +
                           
label.substring(40).trim();
                   break;
               case 
40:
                   
label label.substring(019).trim() + " " +
                           
label.substring(2039).trim();
                   break;
               default:
                   
label label.trim();
           }

           
cell.setCellValue(label);
           
//  Spaltenbreite aus Metadaten holen (256=eine Zeichenbreite + etwas Abstand)
           
sheet.setColumnWidth((shorti, (short) (meta.getColumnDisplaySize(i+1) * (256 16) + 512));
       }

       
// Daten umschaufeln
       
while (rs.next ()) {
           
row sheet.createRow(zeile++);
           for (
int i 0anzFieldsi++) {
               
cell row.createCell((shorti);
               
// 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