Avatar billede henriksp Nybegynder
02. august 2006 - 19:58 Der er 5 kommentarer

Java(Script) tabel med kolonne filtre og eksport til CSV/XLS

JAVA(Script) TABEL med FILTRE og EKSPORT TIL KOMMASEPARERET FIL

Er der nogen der har koden til at i Java (eller Javascript) at lave en tabel med kolonne overskrifter på en HTML side, hvor det er muligt:

1) på en nem måde selv at bestemme antallet af kolonner (samt desuden farve, font, skriftstoerrelse og stoerrelse på tabellen).

2) at filtrere (drop down liste alfabetisk/numerisk raekkefoelge indhold i kolonne) og sortere hver kolonne (Filtrering funktion skal kunne slaaes til/fra for hver kolonne). (Filter oeverst i tabellen for hver kolonne).

3) Vise sum af numeriske kolonner i bunden af tabellen (Summen efter tabellen er filtreret).

4) Med et klik på en knap at kunne gemme den filtrede og sorterede tabel på harddisken (Som csv (kommasepareret) eller xls (Excel)).

5) at tabellen laeser alle data fra en kommasepareret txt fil (Op til 10000 raekker.)

Hele java koden skal ligge på html siden eller alternativt kaldes fra HTML siden og loesningen skal ikke stille krav til en speciel server/database loesning.

Jeg har kigget på internettet efter en loesning, og det taetteste jeg er kommet på er en loesing fra http://www.objectplanet.com/table/ men jeg kan ikke finde ud af at lave loesningen på hvordan man eksporterer til kommasepareret selv om det delvist står beskrevet i filen der kan downloades på siden http://www.programurl.com/software-table-applet-downloadnow.html
Desuden vil jeg helst have en loesning uden copyright og logo som er simpel og udviklet specielt til formålet beskrevet ovenfor. Eksemplet med objectplanet tabellen skal derfor også mest bruges til demonstration af, hvad det er, jeg oensker.

Mange tak.
Avatar billede spaceus Nybegynder
03. august 2006 - 08:27 #1
jamen så gå dog igang, og når du løber panden ind i en mur kan det være du kan få hjælp, det er jo ikke et lav mit shit fordi jeg er for doven site
Avatar billede henriksp Nybegynder
03. august 2006 - 10:53 #2
Muligvis, men det er en side hvor folk taler i en god tone til hinanden!!!
Jeg er ikke doven, hvis jeg kunne lave det selv havde jeg jo ikke spurgt, det er jo netop derfor jeg spoerger Eksperten, og det kunne jo vaere at der var nogle der var flinke og ville hjaelpe eller som allerede havde lavet noget lignende. I dette tilfaelde er jeg rent faktisk "løbet panden ind i en mur" som naevt ovenfor idet jeg ikke kan finde ud af loesningen på hvordan man eksporterer til kommasepareret selv om det delvist står beskrevet i filen der kan downloades på siden http://www.programurl.com/software-table-applet-downloadnow.html . Hjaelp oenskes!
Avatar billede spaceus Nybegynder
03. august 2006 - 12:56 #3
hehe, fair nok. Jeg undskylder tonen, at eksportere til csv kan du jo evt gøre ved en filewriter og så bare sætte et , eller ; efter hver værdi

men jeg er lige på job, men som undskyldning skal jeg nok kigge på det, men det kan være det først bliver i weekenden
Avatar billede henriksp Nybegynder
04. august 2006 - 18:30 #4
DET ER NEDENSTAAENDE CLASS JEG IKKE KAN FAA TIL AT FUNGERE SAMMEN MED MIN HTML SIDE, MEN SOM SAGT VIL jeg helst have en loesning uden copyright og logo som er simpel og udviklet specielt til formålet beskrevet ovenfor. Eksemplet med objectplanet tabellen skal derfor også mest bruges til demonstration af, hvad det er, jeg oensker.

package com.objectplanet.gui.examples;

import com.objectplanet.gui.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.datatransfer.*;
import java.lang.reflect.*;

/**
*/
public class DataExportTable extends Table implements TableListener, ActionListener {

// constants


    /**
    * The export data popup menu item.
    */
    public static final String MENU_EXPORT_DATA = "Export Data";
   
   
    /**
    * The get data button label.
    */
    private static final String BUTTON_GET_DATA = "Get Data";
   

    /**
    * The select all button label.
    */
    private static final String BUTTON_SELECT_ALL = "Select All";
   

// object connections

   
    /**
    * The popup menue for this table.
    */
    private PopupMenu popup;
   
   
    /**
    * The data export window set by the exportData() method.
    */
    private TextArea dataExportText;
   

    /**
    * The data export separator text field set by the exportData() method.
    */
    private TextField dataExportSeparatorField;
   
   
    /**
    * A reference to the window frame for the data export.
    */
    private Frame dataExportFrame;
   

// construction


    /**
    * Constructs a new data export table.
    */
    public DataExportTable() {
        addTableListener(this);
        popup = new PopupMenu();
        popup.addActionListener(this);
        add(popup);
        addPopupItem(MENU_EXPORT_DATA, MENU_EXPORT_DATA);
    }
   
   
// services


    /**
    * Adds an item to the popup menu.
    * @param label The label of the popup menu item.
    * @param command The command of the popup menu item.
    */
    public void addPopupItem(String label, String command) {
        if (label != null && command != null) {
            MenuItem item = popup.add(new MenuItem(label));
            item.setActionCommand(command);
        } else if (label != null) {
            popup.add(label);
        }
    }
   
   
// overridden table methods for customization


    /**
    * Opens a frame with a text area containing the visible data in
    * CSV format (or any other separator you choose).
    * @param width The width of the window.
    * @param height The height of the window.
    * @param separator The character used to separate the fields.
    * @param header True if the header should be included.
    */
    public Frame exportData(int width, int height, char separator) {
        if (dataExportFrame == null) {
            // get the data and the export window frame
            dataExportFrame = super.exportData(width, height, separator);
            dataExportFrame.addWindowListener(new WindowEventHandler());
            dataExportText = (TextArea) dataExportFrame.getComponent(0);
           
            // add the ability to get the data again with a new separator
            Panel controls = new Panel(new FlowLayout(FlowLayout.LEFT));
            dataExportSeparatorField = new TextField(1);
            dataExportSeparatorField.setText(separator + "");
            Button getdata_button = new Button(BUTTON_GET_DATA);
            getdata_button.addActionListener(this);
            controls.add(new Label("Separator:", Label.RIGHT));
            controls.add(dataExportSeparatorField);
            controls.add(getdata_button);
           
            // add the ability to select all
            Button selection_button = new Button(BUTTON_SELECT_ALL);
            selection_button.addActionListener(this);
            controls.add(selection_button);
           
            // add the controls
            dataExportFrame.add("South", controls);
            dataExportFrame.doLayout();
            controls.doLayout();
            controls.update(controls.getGraphics());
        } else {
            dataExportFrame.show();
        }
       
        // return the export window
        return dataExportFrame;
    }
   
   
// event handlers
   
   
    /**
    * The right click listener displays the popup menu.
    * @param event The table event.
    */
    public void tableSelection(TableEvent event) {
        // we got a right click, start a thread to display the popup
        int type = event.getType();
        if (type == TableEvent.RIGHT_CLICK || type == TableEvent.DOUBLE_CLICK) {
            Point position = event.getMousePosition();
            if (position != null && popup != null) {
                PopupThread thread = new PopupThread(position, event.getFields());
                thread.start();
            }
        }
    }
   
   
    /**
    * An entry in the popup menu was selected. Tell the traffic applet about it.
    * This also handles the export window buttons.
    */
    public void actionPerformed(ActionEvent event) {
        // an entry in the popup menu was selected, send a traffic table event
        // notifying the listeners about the event
        if (event.getActionCommand().equals(MENU_EXPORT_DATA)) {
            exportData(620,400,'|');
        }
       
        // select all the text in the action button window
        else if (event.getActionCommand().equals(BUTTON_SELECT_ALL)) {
            if (dataExportText != null) {
                dataExportText.requestFocus();
                dataExportText.selectAll();
                dataExportText.repaint();
            }
        }
       
        // export again this time with another separator
        else if (event.getActionCommand().equals(BUTTON_GET_DATA)) {
            if (dataExportSeparatorField != null && dataExportText != null) {
                String separator = dataExportSeparatorField.getText();
                if (separator != null && separator.length() > 0) {
                    String data = getExportData(separator.charAt(0));
                    dataExportText.requestFocus();
                    dataExportText.setText(data);
                    dataExportText.selectAll();
                }
            }
        }
    }

   
    /**
    * Handles the export window open and close, and makes sure only one
    * copy of the export window is opened.
    */
    class WindowEventHandler extends WindowAdapter {
        public void windowClosed(WindowEvent e) {
            if (e.getSource() == dataExportFrame) {
                dataExportFrame = null;
            }
        }
    }
   
   
// thread that displays the popup, this is done becaus
// the popup.show() call blocks until something is selected

   
    /**
    * Thread used to display the thread.
    */
    class PopupThread extends Thread {
       
       
        /**
        * The position of popup menu - this is the mouse position.
        */
        private Point position;
       
       
        /**
        * The row that was selected when right-clicking.
        */
        private Object[] row;
       
       
        /**
        * Creates a new popup thread.
        * @param position The position of the popup menu.
        * @param row The row that was selected when right-clicking.
        */
        public PopupThread(Point position, Object[] row) {
            this.position = position;
            this.row = row;
        }
       
       
        /**
        * Displays the popup.
        */
        public void run() {
            if (popup != null) {
                popup.show(DataExportTable.this, position.x, position.y+10);
            }
        }
    }
}
Avatar billede henriksp Nybegynder
31. august 2006 - 14:23 #5
Har du haft tid til at kigge paa det?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester