zk导出excel

我写这些的主要目的是方便以后查阅,当然也是为了和朋友们互相学习,如果各位有什么好的方法和建议请分享一下
row javabean
public class Row {
private List<Column> columnList= new ArrayList();

public List<Column> getColumnList() {
return columnList;
}

public void setColumnList(List<Column> columnList) {
this.columnList = columnList;
}

public void appendColumn(Column column){
columnList.add(column);
}
}

column javabean
public class Column {

private int columnNum;
private String columnLabel;
public int getColumnNum() {
return columnNum;
}
public void setColumnNum(int columnNum) {
this.columnNum = columnNum;
}
public String getColumnLabel() {
return columnLabel;
}
public void setColumnLabel(String columnLabel) {
this.columnLabel = columnLabel;
}

}

sheet javabean
public class Sheet {

private List<Row> rowList = new ArrayList();
private String name;


public List<Row> getRowList() {
return rowList;
}

public void setRowList(List<Row> rowList) {
this.rowList = rowList;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public void appendRow(Row row){
rowList.add(row);
}

}

Excel后台类
public class Excel{

public static void write(List<Sheet>sheetList,OutputStream os){
jxl.write.WritableWorkbook wwb;
jxl.write.WritableFont wf1=new jxl.write.WritableFont(WritableFont.ARIAL,20,WritableFont.BOLD,false,
UnderlineStyle.DOUBLE_ACCOUNTING,jxl.format.Colour.BRIGHT_GREEN);
jxl.write.WritableCellFormat wff1=new jxl.write.WritableCellFormat(wf1);
try {
// wff1.setBackground(jxl.format.Colour.VIOLET2);
// wff1.setBackground(jxl.format.Colour.VIOLET2);
wwb = Workbook.createWorkbook(os);
int i = 0;
for(Iterator<Sheet>itr = sheetList.iterator();itr.hasNext();){
Sheet sheet = itr.next();
int rowNum =0;
jxl.write.WritableSheet ws = wwb.createSheet(sheet.getName(),i);
for(Iterator<Row>sheetItr = sheet.getRowList().iterator();sheetItr.hasNext();){
Row row = sheetItr.next();
int colunNum = 0;
for(Iterator<Column>rowIterator=row.getColumnList().iterator();rowIterator.hasNext();){
Column column = rowIterator.next();
ws.addCell(new jxl.write.Label(colunNum,rowNum,column.getColumnLabel(),wff1));
colunNum++;
}
rowNum++;
}
i++;
}
//写入Exel工作表
wwb.write();
//关闭Excel工作薄对象
wwb.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

实现导出excel的方法,在前台加一个按钮调用onAdd2()方法
 public void onAdd2(ForwardEvent event) throws Exception{
Excel excel=new Excel();
if(listbox.getSelectedItem()==null){
Messagebox.show("请选择要导出报表的内容!", "提示信息", Messagebox.OK, Messagebox.INFORMATION);
}
else{
Date dat=new Date();
//dat.setTime(dat.getTime());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String timeStr = sdf.format(dat);
FileSystemView fsv = FileSystemView.getFileSystemView();
fsv.getHomeDirectory();
File f=new File(fsv.getHomeDirectory()+"//"+timeStr+ ""+listbox.getSelectedItem().getLabel()+".xls");
Sheet sheet = new Sheet();
listbox.getSelectedItem().getValue();
System.out.println(listbox.getSelectedItem().getLabel());
sheet.setName(listbox.getSelectedItem().getLabel()+"的费用报表");
Set set = listbox.getSelectedItems();
for(Iterator iter= set.iterator();iter.hasNext();)
{
Row row = new Row();
Listitem listitem = (Listitem) iter.next();
List columnList = new ArrayList();
for(int i = 0 ; i <listitem.getChildren().size();i++)
{
Column column = new Column();
column.setColumnLabel(((Listcell)listitem.getChildren().get(i)).getLabel());
column.setColumnNum(i);
columnList.add(column);
}
row.setColumnList(columnList);
sheet.appendRow(row);
}
List list = new ArrayList();
list.add(sheet);
new Excel().write(list,new FileOutputStream(f));
Messagebox.show("导出excel成功", "提示信息", Messagebox.OK, Messagebox.INFORMATION);
}
}


//appendTitleRow
private Row appendTitleRow(Sheet sheet){
Row row = new Row();
List columnList = new ArrayList();
for(int i = 0 ; i <exportTitles.length;i++)
{
Column column = new Column();
column.setColumnLabel(exportTitles[i]);
column.setColumnNum(i);
column.setType("title");
row.appendColumn(column);
}
sheet.appendRow(row);
return row;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值