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 截图:

最新文章

  1. 转:eclipse打开文件或者目录位置(不使用插件)
  2. module
  3. ubuntu中搭建php7+mongodb方法
  4. ASP.NET MVC系列:从Controller访问Model数据
  5. Learn Spring Framework(continue update...)
  6. BIOS设置开机密码
  7. (05)odoo数据库和业务操作
  8. 【英语】Bingo口语笔记(42) - Got系列
  9. Oracle/PLSQL: Creating Functions
  10. SGU 145.Strange People(无环K短路)
  11. 3Sum Closest——LeetCode
  12. Dividing (hdu 1059 多重背包)
  13. div简单布局理解
  14. 活动图activity diagram
  15. Intent的属性及Intent-filter配置——Component属性
  16. Java之增强的for 循环
  17. QQ路径
  18. vue ssr github 项目及其 文章
  19. Item 18: 使用srd::unique_ptr来管理独占所有权的资源
  20. BZOJ.2679.Balanced Cow Subsets(meet in the middle)

热门文章

  1. Mysql学习总结(29)——MySQL中CHAR和VARCHAR
  2. POJ 2607 Fire Station
  3. js 判断是否滚动到底部
  4. phpstorm 激活方法
  5. how to deal with &amp;quot;no such file error or diretory&amp;quot; error for a new programmer in QT creator
  6. UVa 10954 Add All 贪心
  7. 适配 iOS 8 时遇到的问题两则:远程推送和 Unwind Segue
  8. 45.angular路由设置
  9. Android RecyclerView 水平滚动+自动循环轮播
  10. PostgreSQL Replication之第八章 与pgbouncer一起工作(3)