swing导出html到excel

1  ShowCopDetal

package com.product;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Desktop;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.color.ColorSpace;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.awt.image.ColorConvertOp;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URISyntaxException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.swing.AbstractAction;
import javax.swing.AbstractButton;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComponent;
import javax.swing.JEditorPane;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.ScrollPaneLayout;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
import javax.swing.WindowConstants;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
import javax.swing.filechooser.FileFilter;

import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

public class ShowCopDetal extends JPanel{
     // 内置了本地系统桌面操作支持
    private Desktop desktop;

    private static final long serialVersionUID = 1L;

    // html内容
   // private static final String HTML_TEXT = "<html><font color=‘red‘><a href=\"http://www.helpsoff.com.cn\" target=\"_blank\">支持SOFF,插件无罪</a></font>";
    private static List contentheader;
    private static List contentbody;

    public static List getContentheader() {
        return contentheader;
    }

    public static void setContentheader(List contentheader) {
        ShowCopDetal.contentheader = contentheader;
    }

    public static List getContentbody() {
        return contentbody;
    }

    public static void setContentbody(List contentbody) {
        ShowCopDetal.contentbody = contentbody;
    }

    public ShowCopDetal() {}

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                //createGUI();
                scrollpanelinframe();
            }
        });
    }

    public static void createGUI() {

        JFrame frame = new JFrame("在Swing中使用Html标签");
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.setSize(new Dimension(450, 200));

        frame.getContentPane().add(new ShowCopDetal());

        frame.setResizable(false);
        frame.setLocationRelativeTo(null);

        frame.setAlwaysOnTop(true);
        frame.setVisible(true);
    }
   static  JFrame frame = new JFrame("model detail");

    /////////////////////////////////test/////////////////////////////////////
    public static void scrollpanelinframe() {

        //init data
        testENT a=new testENT("zhangsan","23","china");
        testENT b=new testENT("lisi","26","usa");
        testENT c=new testENT("mhmd","28","my");

        testENT aa=new testENT("azhangsan","a23","china");
        testENT bb=new testENT("blisi","b26","usa");
        testENT cc=new testENT("cmhmd","c28","my");

        List ds=new ArrayList();
        ds.add(a);
        ds.add(b);
        ds.add(c);
        List ds2=new ArrayList();
        ds2.add(aa);
        ds2.add(bb);
        ds2.add(cc);
        List totalsds=new ArrayList();
        totalsds.add(ds);
        totalsds.add(ds2);

        ShowCopDetal.setContentbody(totalsds);

        String[] headerstr={"Colum 1","Colum 2","Colum 3","Colum 4"};
        ShowCopDetal.setContentheader(java.util.Arrays.asList(headerstr));

        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.setSize(new Dimension(1100, 760));

        StringBuffer initialText=new StringBuffer();
        initialText.append("<html>\n");

        //initialText.append("<div style=\"border:2px solid ;\">");

        for(int v=0;v<totalsds.size();v++)
        {   

            initialText.append("<div style=\"border:10px solid orange;\">");
            initialText.append("<fieldset>");
            initialText.append("<legend>{infomation of "+v+" }</legend>");
            initialText.append("<table >");
            initialText.append("<tr style=\"font-size:2px color:red\"><td  colSpan=\"9\">****************************************************************************************</td></tr>");

             for(int n=0;n<((List)totalsds.get(v)).size();n++)
             {
                 testENT te=(testENT) ((List)totalsds.get(v)).get(n);

                 initialText.append("<tr><td  colSpan=\"9\">_______________"+te.getName()+"_________</td></tr>");

                 initialText.append("<tr>");
                 initialText.append("<td>");
                 initialText.append("<font size=+2 color=green>");
                 initialText.append(te.getName());
                 initialText.append("</font>");
                 initialText.append("</td>");

                 initialText.append("<td>");
                 initialText.append("<font size=+2 color=red>");
                 initialText.append(te.getAge());
                 initialText.append("</font>");
                 initialText.append("</td>");

                 initialText.append("<td>");
                 initialText.append("<font size=+2 color=yellow>");
                 initialText.append(te.getCountry());
                 initialText.append("</font>");
                 initialText.append("</td>");

                 initialText.append("</tr>");
                // initialText.append("<tr><td  colSpan=\"9\" style=\"border-bottom:#FF0000 solid 1px; width:50%; background-color:#00CC33; text-align:center; line-height:24px;\"></td></tr>");

             }
             initialText.append("</table>");
             initialText.append("</fieldset>");
             initialText.append("</div>");

        }
        System.out.println(initialText);
             JButton btsave=new JButton("Save");
             Dimension preferredSize = new Dimension(10,20);//设置尺寸
             btsave.setPreferredSize(preferredSize);
             btsave.setLocation(10, 10);
             //btsave.addActionListener(this);
             btsave.addActionListener(new ActionListener() {

                @Override
                public void actionPerformed(ActionEvent e) {
                    // TODO Auto-generated method stub
                      JOptionPane.showMessageDialog(null,"start");
                      //selectSavePath();
                    //List<String[]> list
                    //  getcontentbody();
                     // getcontentheader();

                      List list=new ArrayList();
                      list.add(0,ShowCopDetal.getContentheader());
                      list.add(1,ShowCopDetal.getContentbody());
                      try {
                        writeExcel(list);
                    } catch (Exception e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
                }

                 });

             //JPanel rightPanel=new JPanel();
             JScrollPane rightPanel = new JScrollPane();
             rightPanel.setLayout(new ScrollPaneLayout());

             JLabel   theLabel = new JLabel(initialText.toString());

               theLabel.setVerticalAlignment(SwingConstants.TOP);
               theLabel.setHorizontalAlignment(SwingConstants.NORTH_EAST);
               theLabel.setLocation(100, 10);

             //JScrollPane.UPPER_LEFT_CORNER
             rightPanel.setBorder(BorderFactory.createCompoundBorder(
                             BorderFactory.createTitledBorder("preview detail"),
                             BorderFactory.createEmptyBorder(40,10,20,20)));

            // rightPanel.setColumnHeaderView(btsave);
             rightPanel.setRowHeaderView(btsave);
             //rightPanel.setViewportView(btsave);
              rightPanel.setViewportView(theLabel);
              //rightPanel.setLayout(new ScrollPaneLayout());

           //  frame.add(jscPanel);
              frame.add(rightPanel); 

        frame.setResizable(true);
        frame.setLocationRelativeTo(null);

        frame.setAlwaysOnTop(false);
        frame.setVisible(true);
    }

    public static void writeExcel(List list)
               throws Exception {
              //弹出保存框
              JFileChooser file = ShowCopDetal.getFile();
              //判断是否关闭或取消保存框
              if (file != null) {
               //的到保存路径
               String fpath=file.getSelectedFile().getAbsolutePath()+".xls";
               //创建文件
               File f = new File(fpath);
               WritableWorkbook wwb = Workbook.createWorkbook(new FileOutputStream(f));
               WritableSheet ws = wwb.createSheet("TestSheet1", 0);
               // 设置字体样式
               WritableFont wfc = new WritableFont(WritableFont.ARIAL, 16, WritableFont.BOLD, false);
               WritableCellFormat wcfFC = new WritableCellFormat(wfc);
               // 遍历列头字段名
               for (int i = 0; i < ((List)list.get(0)).size(); i++) {
                Label labelC = new jxl.write.Label(i, 0, ((List)list.get(0)).get(i).toString(), wcfFC);
                ws.addCell(labelC);
               }
               // 遍历内容
               for (int i = 1; i < list.size(); i++) {
                for (int j = 0; j < ((List)list.get(i)).size(); j++) {
                 Label labelC = new jxl.write.Label(j, i, ((List)list.get(i)).get(j).toString());

                 ws.addCell(labelC);
                }
               }
               // 写入Exel工作表
               wwb.write();
               // 关闭Excel工作薄对象
               wwb.close();
               //消息框
               JOptionPane.showMessageDialog(null, "File is saved to:"+fpath,"Save success!",JOptionPane.INFORMATION_MESSAGE);
              }
             }

    public static JFileChooser getFile() {
          //默认打开D盘
          JFileChooser file = new MyChooser("");
          // 下面这句是去掉显示所有文件这个过滤器。
          file.setAcceptAllFileFilterUsed(false);
          // 添加excel文件的过滤器
          file.addChoosableFileFilter(new ExcelFileFilter("xls"));
          int result = file.showSaveDialog(null);
          // JFileChooser.APPROVE_OPTION是个整型常量,代表0。就是说当返回0的值我们才执行相关操作,否则什么也不做。
          if (result == JFileChooser.APPROVE_OPTION) {
           // 获得你选择的文件绝对路径。并输出。当然,我们获得这个路径后还可以做很多的事。
           String path = file.getSelectedFile().getAbsolutePath();
           System.out.println(path);
          } else {
           file = null;
           System.out.println("You have canceled and colosed the window!");
          }
          return file;
         }
         //文件过滤器 只保存xls文件
         private static class ExcelFileFilter extends FileFilter {
          String ext;
          ExcelFileFilter(String ext) {
           this.ext = ext;
          }
          @Override
          public boolean accept(File f) {
           if (f.isDirectory()) {
            return true;
           }
           String fileName = f.getName();
           int index = fileName.lastIndexOf(‘.‘);
           if (index > 0 && index < fileName.length() - 1) {
            String extension = fileName.substring(index + 1).toLowerCase();
            if (extension.equals(ext))
             return true;
           }
           return false;
          }
          @Override
          public String getDescription() {
           if (ext.equals("xls")) {
            return "Microsoft Excel file(*.xls)";
           }
           return "";
          }
         }

    private static class MyChooser extends JFileChooser {

          private static final long serialVersionUID = 1L;
          MyChooser(String path) {
           super(path);
          }
          public void approveSelection() {
           File file = this.getSelectedFile();
           if (file.exists()) {
            int copy = JOptionPane.showConfirmDialog(null, "Do you want to overwrite the current file?",
              "Save", JOptionPane.YES_NO_OPTION,
              JOptionPane.QUESTION_MESSAGE);
            if (copy == JOptionPane.YES_OPTION)
             super.approveSelection();
           } else
            super.approveSelection();
          }
         }

}

2 bean 类

package com.product;

public class testENT {

    public testENT (String name,String age,String country)
    {
        this.name=name;
        this.age=age;
        this.country=country;
    }
    private String name;
    private String age;
    private String country;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
    public String getCountry() {
        return country;
    }
    public void setCountry(String country) {
        this.country = country;
    }

}

3 依赖jar   :

jxl-2.4.2.jar

4 截图:

时间: 2024-10-04 16:09:09

swing导出html到excel的相关文章

MVC导出数据到EXCEL新方法:将视图或分部视图转换为HTML后再直接返回FileResult

MVC导出数据到EXCEL新方法:将视图或分部视图转换为HTML后再直接返回FileResult 导出EXCEL方法总结:MVC导出数据到EXCEL的方法有很多种,常见的是: 1.采用EXCEL COM组件来动态生成XLS文件并保存到服务器上,然后转到该文件存放路径即可:优点:可设置丰富的EXCEL格式,缺点:需要依赖EXCEL组件,且EXCEL进程在服务器中无法及时关闭,以及服务器上会存留大量的不必要的XLS文件: 2.设置输出头为:application/ms-excel,再输出拼接的HTM

sqlserver 导出数据到Excel

1.导出非正式Excel EXEC master..xp_cmdshell 'bcp t.dbo.tcad out D:\MySelf\output\Temp.xls -c -q -S"." -U"sa" -P"sql2008"'--参数:S 是SQL服务器名:U是用户:P是密码 2.启用/停用xp_cmdshell -- To allow advanced options to be changed. EXEC sp_configure 'sh

Dynamics CRM导出数据到Excel

原创地址:http://www.cnblogs.com/jfzhu/p/4276212.html 转载请注明出处 Pivot Table是微软BI的一个重要工具,所以这里讲一下Dynamics CRM将数据导出到Excel的功能. (一)导出数据到Excel的三种类型 下图中点击红框内的按钮EXPORT TO EXCEL,会弹出三个选项 第一个是一个静态工作表,将当前页面内的数据导出到一张表内.该数据是静态的,也就是说CRM里的数据发生改变,工作表的数据不会发生相应修改.如果勾选了”Make t

php导出数据到excel,防止身份证等数字字符格式变成科学计数的方-------缺点,必须使用table tr td

php导出数据到excel,防止身份证等数字字符格式变成科学计数的方 时间:2012-08-17 13:50来源:未知 作者:硅峰网络-红豆 点击:219次 在网上查了很多资料知道解决办法大概有两个:一是在身份证字段前加个英文单引号,二是设置Excel的格式为文本格式. 我试用过第一种确实可以显示,但是有个'号在那里感觉确实不是很好,虽然听说不影响,但是需要用户点击那个单元格那个单引号才消失,并且在该 在网上查了很多资料知道解决办法大概有两个:一是在身份证字段前加个英文单引号,二是设置Excel

在ASP.NET Web Forms中使用页面导出伪xls Excel表格

将数据导出为Excel表格是比较常见的需求,也有很多组件支持导出真正的Excel表格.由于Excel能打开HTML文件,并支持其中的table元素以及p之类的文本元素的显示,所以把.html扩展名改为.xls是比较常用的一种方式.当然这只是一种骗人的伎俩,所以我称之为伪xls表格.不过对于要求不高的需求,这种方法还是比较简单快捷的. 在Web Forms项目中,除了用代码拼凑HTML元素标记外,还可以直接用窗体页面渲染HTML表格.Web Forms就是用来渲染动态HTML的,直接利用它,支持代

PHP导出数据到Excel

PHP导出数据到Excel 在Web开发中经常需要将一些数据导入到Excel表格中,比如需要导出符合条件的用户数据,导出项包括姓名.性别.***号.联系方式等等.那么问题来了,在导出的数据中如果出现比较长的数值类型的项时,默认按科学计数法表示,比如***号这显然不是我们需要的,那么我们怎么做才能让数据按我们要求的格式显示呢? 查到一些相关资料,摘抄如下: 首先,我们了解一下excel从web页面上导出的原理.当我们把这些数据发送到客户端时,我们想让客户端程序(浏览器)以excel的格式读取它,所

CodeIgniterCodeigniter+PHPExcel导出数据到Excel文件

解压压缩包里的Classes文件夹中的内容到application\libraries\目录下,目录结构如下:--application\libraries\PHPExcel.php--application\libraries\PHPExcel(文件夹)修改application\libraries\PHPExcel\IOFactory.php文件--将其类名从PHPExcel_IOFactory改为IOFactory,遵从CI类命名规则.--将其构造函数改为public $this->loa

Delphi 导出数据至Excel的7种方法【转】

转自:http://blog.csdn.net/zang141588761/article/details/52275948 一; delphi 快速导出excel uses ComObj,clipbrd; function ToExcel(sfilename:string; ADOQuery:TADOQuery):boolean; const xlNormal=-4143; var y : integer; tsList : TStringList; s,filename :string; a

NPOI导出数据到Excel

NPOI导出数据到Excel 前言 Asp.net操作Excel已经是老生长谈的事情了,可下面我说的这个NPOI操作Excel,应该是最好的方案了,没有之一,使用NPOI能够帮助开发者在没有安装微软Office的情况下读写Office 97-2003的文件,支持的文件格式包括xls, doc, ppt等.NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office的情况下对Word/Excel文档进行读写操作. 方法 先去官网:http://npoi.codeplex.com/下载需要