import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.*; import javafx.scene.layout.*; import javafx.stage.Stage; import javafx.scene.text.TextAlignment; import javafx.scene.text.Font; import javafx.geometry.Pos; import javafx.geometry.Insets; import javafx.scene.layout.Border; import javafx.scene.layout.BorderStroke; import javafx.scene.layout.BorderStrokeStyle; import javafx.scene.layout.BorderWidths; import javafx.scene.paint.Color; import javafx.application.Platform; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.event.Event; import javafx.geometry.HPos; import java.io.*; public class UIBspExport2Excel02 extends Application { private Button bnString = new Button("String") ; private Button bnInteger = new Button("Integer") ; private Button bnDouble = new Button("Double") ; private Button bnAlles = new Button("Alles") ; @Override public void start(Stage stage) { // https://docs.oracle.com/javase/8/javafx/api/javafx/scene/layout/VBox.html // https://docs.oracle.com/javase/8/javafx/api/toc.htm VBox root = new VBox(22); root.setAlignment(Pos.CENTER); root.setFillWidth(true); HBox hbox = new HBox(); root.getChildren().add(hbox); Label label = new Label("Excel Export") ; label.setFont(new Font("Courier New",28)); hbox.getChildren().add(label); hbox.setMargin(label, new Insets(5, 0, 0, 10) ); // TRBL label.setTextAlignment(TextAlignment.LEFT); label.setAlignment(Pos.BASELINE_LEFT); label.setTextFill(Color.BLUE); FlowPane boxpane = new FlowPane(20,20); boxpane.setAlignment(Pos.CENTER); boxpane.setAlignment(Pos.CENTER); boxpane.setMaxWidth(Double.POSITIVE_INFINITY); root.getChildren().add(boxpane); root.setMargin(boxpane, new Insets(5, 0, 0, 10) ); // TRBL insertButton(boxpane, bnString); bnString.setOnAction(e->bnStringClick()); insertButton(boxpane, bnInteger); bnInteger.setOnAction(e->bnIntegerClick()); insertButton(boxpane, bnDouble); bnDouble.setOnAction(e->bnDoubleClick()); insertButton(boxpane, bnAlles); bnAlles.setOnAction(e->bnAllesClick()); Scene scene= new Scene(root, 660, 150); stage.setTitle("UIBspExport2Excel02"); stage.setScene(scene); stage.show(); } private void insertButton(FlowPane pane, Button bn) { bn.setFont(new Font("Courier New",22)); bn.setMaxWidth(Double.POSITIVE_INFINITY); pane.getChildren().add(bn); pane.setMargin(bn, new Insets(0, 10, 0, 10) ); // TRBL } private void bnStringClick() { Export2BIFF excel = new Export2BIFF("test1.xls"); excel.openFile(); excel.Write(1,1,"abc"); // col row Value excel.Write(1,2,"01.01.2010"); // col row Value hier String, NICHT Datum ! excel.Write(1,3,"01/01/2010"); // col row Value hier String, NICHT Datum ! excel.closeFile(); StartExcel("test1.xls"); } private void bnIntegerClick() { Export2BIFF excel = new Export2BIFF("test2.xls"); excel.openFile(); // excel.Write(1,1,"abc"); // col row Value excel.Write(1,2,1234); // col row Value excel.Write(1,3,2004); // col row Value // excel.Write(1,3,"=SUMME(B3:B4)"); // col row Value excel.closeFile(); StartExcel("test2.xls"); } private void bnDoubleClick() { Export2BIFF excel = new Export2BIFF("test3.xls"); excel.openFile(); excel.Write(1,1,1234.45678); // col row Value excel.closeFile(); StartExcel("test3.xls"); } private void bnAllesClick() { int row; Export2BIFF excel = new Export2BIFF("test4.xls"); excel.openFile(); java.util.Random random = new java.util.Random(); excel.Write(1,0, "Name" ); excel.Write(2,0, "Integer" ); excel.Write(3,0, "Gehälter" ); for (row=1; row<50; row++) { excel.Write(1,row, "abc" + Integer.toString(row) ); // col row Value excel.Write(2,row, random.nextInt() ); excel.Write(3,row, random.nextDouble()*10000 ); } // for excel.closeFile(); StartExcel("test4.xls"); } private void StartExcel(String filename) { try { // funktioniert nur mit vollstaendigen Pfad String excel = "\"C:\\Program Files (x86)\\Microsoft Office\\Office14\\EXCEL.EXE\""; Runtime.getRuntime().exec(excel+" D:\\Daten\\Dp60\\Java-Edit\\"+filename); } catch (IOException e1) { System.out.println("Error in Start Excel"); } } public static void main(String[] argv) { launch(argv); } } class Export2BIFF { // interne Varibalen fuer das Speichern private FileOutputStream fout; private DataOutputStream dout; private String filename; // Felder Beginn Ende String Int byte [] CXlsBof = { 9, 8, 8, 0, 0, 0, 0x10, 0, 1, 0, 0, 0 }; byte [] CXlsEof = {0x0A, 0, 0, 0}; byte [] CXlsString = new byte[12]; byte [] CXlsDouble = new byte[10]; byte [] CXlsInt = new byte[10]; public Export2BIFF(String filename) { this.filename = filename; ClearArrays(); } // Export2BIFF public void openFile() { try { fout = new FileOutputStream(filename); dout = new DataOutputStream(fout); for (int i=0; i> 8) & 255); // 4 5 [2] s = (short) (Col); CXlsInt[6] = (byte) (s & 255); // 6 7 [3] CXlsInt[7] = (byte) ((s >> 8) & 255); // 6 7 [3] writeCXlsInt(); // Trennung der Bytes, ā Resim v = (iValue << 2) | 2; i0 = (byte) (v & 255); i1 = (byte) ((v >> 8) & 255); i2 = (byte) ((v >> 16) & 255); i3 = (byte) ((v >> 24) & 255); dout.writeByte( i0 ); dout.writeByte( i1 ); dout.writeByte( i2 ); dout.writeByte( i3 ); } catch (IOException e) { System.err.println("IOException: " + e); } } // Write Int // schreiben der Vorspann eines double private void writeCXlsDouble() { try { for (int i=0; i> 8) & 255); // 4 5 [2] s = (short) (Col); CXlsDouble[6] = (byte) (s & 255); // 6 7 [3] CXlsDouble[7] = (byte) ((s >> 8) & 255); // 6 7 [3] writeCXlsDouble(); pipein = new PipedInputStream(); pipeout = new PipedOutputStream(); dout = new DataOutputStream(pipeout); // Erzeugen der Stream-Objekte zum Schreiben und Lesen pipeout.connect(pipein); // Kopplung der Streams dout.writeDouble(dValue); pipein.read(bits, 0, bits.length); // in dem Array wird gelesen, Startindex=0 Anzahl = 8 pipein.close(); dout.close(); pipeout.close(); for (i=bits.length-1; i>=0; i--) { dout.writeByte( bits[i] ); } // _dout.writeDouble( Value ); // leider hier verkehrte Reihenfolge } catch (IOException e) { System.err.println("IOException: " + e); } } // Write Double // schreiben der Vorspann eines String private void writeCXlsString() { try { for (int i=0; i> 8) & 255); // 2 3 s = (short) (Row); CXlsString[4] = (byte) (s & 255); // 4 5 [2] CXlsString[5] = (byte) ((s >> 8) & 255); // 4 5 [2] s = (short) (Col); CXlsString[6] = (byte) (s & 255); // 6 7 [3] CXlsString[7] = (byte) ((s >> 8) & 255); // 6 7 [3] s = (short) (len); CXlsString[10] = (byte) (s & 255); // 10 11 [5] CXlsString[11] = (byte) ((s >> 8) & 255); // 10 11 [5] writeCXlsString(); for (int i=0; i