Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / September 2006

Tip: Looking for answers? Try searching our database.

how to save the data of a JTable to a html file?

Thread view: 
ant - 21 Sep 2006 10:45 GMT
how to save the data of a JTable to a html file?
now, I am doing a Java Applet program, and I need to save the content
of a JTable to html formatted file.
if you hava some useful suggestions or you know some third-party
components, please tell me!
thanks a lot!
Andrew Thompson - 21 Sep 2006 10:54 GMT
> how to save the data of a JTable to a html file?
> now, I am doing a Java Applet program, and I need to save the content
> of a JTable to html formatted file.

1) An applet will need to be 'trusted' before it can do any such thing.
2) To be trusted, it will need to be signed and accepted as trusted by
the end user.
3) converting the table data to HTML is relatively trivial, so..

> if you hava some useful suggestions or you know some third-party
> components,

...a third party 'component' is entirely overkill!

Andrew T.
Thomas Weidenfeller - 21 Sep 2006 11:00 GMT
> how to save the data of a JTable to a html file?

Write code to do it. Open a text file. Write the page's HTML header and
start of the body to the file. Write the start of an HTML table to the
file. For each row, read the data from the table model, replace special
HTML entities in the data, generate an HTML table row and write it to
the file. At the end close the HTML table, the HTML body and the HTML
root element. Close the file.

> now, I am doing a Java Applet program,

If you want to store the file locally you will need to sign the applet.

> if you hava some useful suggestions or you know some third-party
> components, please tell me!

Writing the code should consume much less time than searching for some
3rd party tool and learning that tool. This is an almost trivial
programming task.

/Thomas
Signature

The comp.lang.java.gui FAQ:
http://gd.tuwien.ac.at/faqs/faqs-hierarchy/comp/comp.lang.java.gui/
ftp://ftp.cs.uu.nl/pub/NEWS.ANSWERS/computer-lang/java/gui/faq

Thomas Hawtin - 21 Sep 2006 17:49 GMT
> how to save the data of a JTable to a html file?
> now, I am doing a Java Applet program, and I need to save the content
> of a JTable to html formatted file.
> if you hava some useful suggestions or you know some third-party
> components, please tell me!

Perhaps not directly relevant (it's a piece of cake to generate HTML
from the table model), but I thought I'd try using JTable itself (well,
the PL&F) to generate HTML. JTable supports copying as HTML via
clipboards and drag and drop, which we can exploit with a private
clipboard. Disappointing code and disappointing results below.

Some bad points:

 o You need to mutate the table (select all).
 o The APIs are cumbersome.
 o Actual requirements of the implementation are under specified.
 o The table is plain, with just toString applied to data.
 o Even the header isn't included.
 o There's no sensible extension mechanism.
 o It's not particularly efficiently coded.

Tom Hawtin

import java.awt.*;
import java.awt.datatransfer.*;
import javax.swing.*;

class ExportTableAsHTMLDemo {
    private static final DataFlavor HTML_STRING_FLAVOR;
    static {
        // The datatransfer API could do with some work here...
        try {
            HTML_STRING_FLAVOR = new DataFlavor(
                "text/html;class=java.lang.String"
            );
        } catch (ClassNotFoundException exc) {
            // Don't even load class.
            throw new Error(exc);
        }
    }
    public static void main(String[] args) {
        java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    go();
                }
        });
    }
    public static void go() {
        // Some random data.
        javax.swing.JTable table = new javax.swing.JTable(
            new Object[][]{
                new Object[] { "some", "data" },
                new Object[] { "more", "data" },
            },
            new Object[] { "Col A", "Col B" }
        );

        // Exports selected data only.
        table.selectAll(); // Evil.

        javax.swing.TransferHandler handler =
            table.getTransferHandler();
        if (handler == null) {
            System.err.println("No transfer handler.");
            return;
        }
        int actions = handler.getSourceActions(table);
        if ((actions & javax.swing.TransferHandler.COPY) == 0) {
            System.err.println("Table does not support copy.");
            return;
        }

        java.awt.datatransfer.Clipboard clipboard =
            new java.awt.datatransfer.Clipboard(
                "Export table as HTML private clipboard"
            );
        try {
            handler.exportToClipboard(
                table, clipboard, javax.swing.TransferHandler.COPY
            );
        } catch (IllegalStateException exc) {
            exc.printStackTrace();
            return;
        }
        java.awt.datatransfer.Transferable transferable =
            clipboard.getContents(/* unused... */null);
        if (transferable == null) {
            System.err.println("Clipboard empty");
            return;
        }
        // Just support HTML as String.
        // Could also use HTML as Reader or UTF-8 InputStream
        //   (particularly for large tables,
        //     if the implementation was better).
        if (!transferable.isDataFlavorSupported(HTML_STRING_FLAVOR)) {
            System.err.println("HTML (String) not supported");
            return;
        }
        try {
            Object data = transferable.getTransferData(
                HTML_STRING_FLAVOR
            );
            System.out.println(data);
        } catch (java.io.IOException exc) {
            exc.printStackTrace();
            return;
        } catch (java.awt.datatransfer.UnsupportedFlavorException exc) {
            System.err.println("HTML (String) not supported");
            return;
        }
    }
}

<html>
<body>
<table>
<tr>
  <td>some</td>
  <td>data</td>
</tr>
<tr>
  <td>more</td>
  <td>data</td>
</tr>
</table>
</body>
</html>
Signature

Unemployed English Java programmer
http://jroller.com/page/tackline/

ant - 22 Sep 2006 08:16 GMT
thanks, All.
Now, I met another problem.
Because it is an Applet program, if I want to access local files, now I
modified the java.security file in jre1.5.0_07\lib\security directory.
But the project is a B/S project, so I think it's not a good way. we
can't change every files in Client.
my question is: if I don't want to modify the java.security file, what
way should I walk?
thanks!

Best Regards

> > how to save the data of a JTable to a html file?
> > now, I am doing a Java Applet program, and I need to save the content
[quoted text clipped - 127 lines]
> Unemployed English Java programmer
> http://jroller.com/page/tackline/
Andrew Thompson - 22 Sep 2006 08:58 GMT
> > > how to save the data of a JTable to a html file?
...
> thanks, All.

Your future lack of top-posting, should be thanks enough.

> Now, I met another problem.
> Because it is an Applet program, if I want to access local files,

The only practical ways for an applet to access local files are
a) Sign the applet and get the user to accept the signed code.
b) Launch the applet via. WebStart and use the FileService.

Note there is another way to get an applet to the point that
it can break out of the security sandbox..

>...now I
> modified the java.security file ...

..and that is it.

A few 'highly motivated' and 'technically proficient' people
might be able to edit policy files on there own PC in order
to allow an applet to run, but that is not a good description
of the average internet surfer.

Andrew T.
Thomas Weidenfeller - 22 Sep 2006 09:05 GMT
> thanks, All.
> Now, I met another problem.
[quoted text clipped - 4 lines]
> my question is: if I don't want to modify the java.security file, what
> way should I walk?

Did you at least read the answers you got? Or was that already too much
work for your royal highness? May I repeat them for you, sir?

> Andrew Thompson wrote:
>> 1) An applet will need to be 'trusted' before it can do any such
>> thing.
>> 2) To be trusted, it will need to be signed and accepted as trusted by
>> the end user.

> Thomas Weidenfeller wrote:
>> If you want to store the file locally you will need to sign the
>> applet.

Signature

The comp.lang.java.gui FAQ:
http://gd.tuwien.ac.at/faqs/faqs-hierarchy/comp/comp.lang.java.gui/
ftp://ftp.cs.uu.nl/pub/NEWS.ANSWERS/computer-lang/java/gui/faq

ant - 22 Sep 2006 10:18 GMT
to Andrew Thompson:
thanks for your answer!

to Thomas Weidenfeller:
I am sorry for my inattention.
thank you! I know what I should do.

> > thanks, All.
> > Now, I met another problem.
[quoted text clipped - 22 lines]
> http://gd.tuwien.ac.at/faqs/faqs-hierarchy/comp/comp.lang.java.gui/
> ftp://ftp.cs.uu.nl/pub/NEWS.ANSWERS/computer-lang/java/gui/faq


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.