swing导出html到excel
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 截图:


swing导出html到excel的更多相关文章
- 1.ASP.NET MVC使用EPPlus,导出数据到Excel中
好久没写博客了,今天特地来更新一下,今天我们要学习的是如何导出数据到Excel文件中,这里我使用的是免费开源的Epplus组件. 源代码下载:https://github.com/caofangshe ...
- 导出数据到Excel --使用ExcelReport有感
先看图,这是几个月前用NPOI写的导出数据到Excel,用了上百行代码,而且难控制,导出来也比较难看 excel打开的效果 下面是我用ExcelReport类库导出到Excel的操作 1.首先引用Ex ...
- 使用Open xml 操作Excel系列之二--从data table导出数据到Excel
由于Excel中提供了透视表PivotTable,许多项目都使用它来作为数据分析报表. 在有些情况下,我们需要在Excel中设计好模板,包括数据源表,透视表等, 当数据导入到数据源表时,自动更新透视表 ...
- Dynamics CRM导出数据到Excel
原创地址:http://www.cnblogs.com/jfzhu/p/4276212.html 转载请注明出处 Pivot Table是微软BI的一个重要工具,所以这里讲一下Dynamics CRM ...
- MVC导出数据到EXCEL新方法:将视图或分部视图转换为HTML后再直接返回FileResult
导出EXCEL方法总结 MVC导出数据到EXCEL的方法有很多种,常见的是: 1.采用EXCEL COM组件来动态生成XLS文件并保存到服务器上,然后转到该文件存放路径即可: 优点:可设置丰富的EXC ...
- C#实现Excel模板导出和从Excel导入数据
午休时间写了一个Demo关于Excel导入导出的简单练习 1.窗体 2.引用office命名空间 添加引用-程序集-扩展-Microsoft.Office.Interop.Excel 3.封装的Exc ...
- php导出数据到excel,防止身份证等数字字符格式变成科学计数的方法
而关于php的也有,但是大多都是用phpExcel导出的方法或者spreadsheet等类或者控件之类的导出方法,而我所在维护的系统却用很简单的方法,如下,网上很少有讲如何设置要导出数据的EXcel格 ...
- NPOI导出数据到Excel
NPOI导出数据到Excel 前言 Asp.net操作Excel已经是老生长谈的事情了,可下面我说的这个NPOI操作Excel,应该是最好的方案了,没有之一,使用NPOI能够帮助开发者在没有安装微 ...
- 【转】c# winform DataGridView导出数据到Excel中,可以导出当前页和全部数据
准备工作就是可以分页的DataGridView,和两个按钮,一个用来导出当前页数据到Excel,一个用来导出全部数据到Excel 没有使用SaveFileDialog,但却可以弹出保存对话框来 先做导 ...
随机推荐
- python学习(二):基本数据类型:整型,字符型
整型: type():显示数据类型 # 整型,int # python3里,不管数字有多大,都是int类型 # python2里,有大小区分,长整型:long int a = " print ...
- 简单搭建zookeeper集群分布式/伪分布式
分布式搭建 一.下载zookeeper安装包 自行下载:我用的是 zookeeper-3.5.4-beta.tar.gz 二.环境准备 1. 我的虚拟机自带的java是1.7的,这个版本要求java1 ...
- 【剑指Offer面试题】 九度OJ1371:最小的K个数
题目链接地址: http://ac.jobdu.com/problem.php?pid=1371 题目1371:最小的K个数 时间限制:1 秒内存限制:32 兆特殊判题:否提交:5938解决:1265 ...
- 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记3 Xcode、Auto Layout及MVC
继续上一话中的计算器Demo.上一话讲到类必须被初始化.类中的属性也必须被初始化,所以你不能仅仅声明而不给它一个处置,那么问题来了,我们从storyboard中拖拽的@IBOutlet为什么仅仅有声明 ...
- [JZOJ3385] [NOIP2013模拟] 黑魔法师之门 解题报告(并查集)
Description 经过了16个工作日的紧张忙碌,未来的人类终于收集到了足够的能源.然而在与Violet星球的战争中,由于Z副官的愚蠢,地球的领袖applepi被邪恶的黑魔法师Vani囚禁在了Vi ...
- Square roots
Loops are often used in programs that compute numerical results by starting with an approximate answ ...
- Magento-设置产品显示的条数和默认条数
在Block/Product/List/Toolbar.php里面,控制每页显示条数和默认条数的方法如下: 1.每页显示条数: protected function _getAvailableLimi ...
- BZOJ 3123 主席树 启发式合并
思路: 主席树 搞树上的k大 x+y-lca(x,y)-fa(lca(x,y)) 按照size小树往大树上插 启发式合并 n*log^2n的 搞定~ //By SiriusRen #include & ...
- MyBatis多参数传递之注解方式示例--转
原文地址:http://legend2011.blog.51cto.com/3018495/1015003 若映射器中的方法只有一个参数,则在对应的SQL语句中,可以采用#{参数名}的方式来引用此参数 ...
- 基于分布式的短文本命题实体识别之----人名识别(python实现)
目前对中文分词精度影响最大的主要是两方面:未登录词的识别和歧义切分. 据统计:未登录词中中文姓人名在文本中一般只占2%左右,但这其中高达50%以上的人名会产生切分错误.在所有的分词错误中,与人名有关的 ...