通过xml的解析多数据源对文件进行导出成excel

package  mutixmlout;

/**
 * 
@author Alex
 * @msg 把列记录的xml转化为excel
 
*/

import  java.awt.Color;
import  java.io. * ;
import  java.util.List;
import  java.util.Vector;

import  javax.swing.JScrollPane;
import  javax.swing.JTable;
import  javax.swing.table.DefaultTableModel;

import  org.dom4j.Document;

import  jxl. * ;
import  jxl.write. * ;
import  jxl.write.biff.RowsExceededException;

public   class  XMLExcel  {

    
public void printxls() {
        WritableWorkbook book 
= null;
        String[] name 
= null;
        List collist 
= null;
        List datalist 
= null;
        List subcollist 
= null;
        List subrowlist 
= null;
        WritableSheet sheet 
= null;
        File folder 
= new File("D://excel");
        
if (!folder.exists()) {
            folder.mkdir();
        }

        
try {
            book 
= Workbook.createWorkbook(new File(folder + "/result.xls"));
        }
 catch (IOException e) {
            e.printStackTrace();
        }

        
        XlsOut dom4j 
= new XlsOut();
        
try {
            String url 
= "D:/xml/selectdatainfo.xml";

            Document tdoc 
= dom4j.parse(url);
            name 
= dom4j.database(tdoc);

            Document cdoc 
= dom4j.parse(url);
            collist 
= dom4j.colList(cdoc);

            Document rdoc 
= dom4j.parse(url);
            datalist 
= dom4j.rowList(rdoc);

        }
 catch (Exception e) {
            System.out.println(e.getMessage());
        }


        
//

        
for (int i = 0; i < name.length; i++{
            
// 进行附值
            int page=i+1;
            sheet 
= book.createSheet(name[i], i);
            subcollist 
= (List) collist.get(i);
            subrowlist 
= (List) datalist.get(i);
//            try {
//                sheet.addCell(new Label(0, 0, (String) name[i]));
//            } catch (RowsExceededException e2) {
//                // TODO Auto-generated catch block
//                e2.printStackTrace();
//            } catch (WriteException e2) {
//                // TODO Auto-generated catch block
//                e2.printStackTrace();
//            }
            
//
            for (int j = 0; j < subcollist.size(); j++{
                
try {
                    sheet.addCell(
new Label(j, 0, (String) subcollist.get(j)));
                }
 catch (RowsExceededException e1) {
                    
// TODO Auto-generated catch block
                    e1.printStackTrace();
                }
 catch (WriteException e1) {
                    
// TODO Auto-generated catch block
                    e1.printStackTrace();
                }

            }


            System.out.println(
"..................................");

            
//
            int m = 0, n = 1;
            
for (int k = 0; k < subrowlist.size(); k++{
                
try {
                    sheet.addCell(
new Label(m, n, (String) subrowlist.get(k)));
                    m
++;
                    
if (m % subcollist.size() == 0{
                        m 
= 0;
                        n
++;
                        
continue;
                    }

                }
 catch (RowsExceededException e) {
                    
// TODO Auto-generated catch block
                    e.printStackTrace();
                }
 catch (WriteException e) {
                    
// TODO Auto-generated catch block
                    e.printStackTrace();
                }


            }

            System.out.println(
"..................................");

        }

        
try {
            book.write();
            book.close();
        }
 catch (WriteException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }
 catch (IOException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }

    }


    
///
  
    
public static void main(String[] args) {
        XMLExcel xe 
= new XMLExcel();
        xe.printxls();
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值