Excel转换成Xml

转自:http://dongisland.iteye.com/blog/1432019


环境

JDK1.6 和 jxl.jar

这两个都可以在网上下,我下的这个jxl (http://ishare.iask.sina.com.cn/f/14559561.html?from=dl) 可以对Excel2010操作

Model类(以防参数太多而建立的类)


package com.island;

public class User {

    /**
     * UID
     */
    private static final long serialVersionUID = 346821702783141852L;
    
    private String username;
    private String usermail;
    private String password;
    
    
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getUsermail() {
		return usermail;
	}
	public void setUsermail(String usermail) {
		this.usermail = usermail;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
    
    

}



Title借口(关键词借口)

package com.island;
public interface UserKeys {
    
	public static final String USER_NAME_VALUE = "用户名";
	public static final String USER_EMAIL_VALUE = "用户邮箱";
	public static final String USER_PASSWORD_VALUE = "用户密码";
	
}

Excel2Xml类

package com.island;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Iterator;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

public class Excel2XML {
    
    /**
     * The output stream to write to
     */
    private OutputStream out;

    /** 
     * The encoding to write
     */
    private String encoding;
    
    public Excel2XML(OutputStream out, String enc) {
        encoding = enc;
        this.out = out;
        if (encoding == null || !encoding.equals("UnicodeBig"))
        {
          encoding = "UTF8";
        }
    }
    /**
     * 读取EXCEL文件,存到formBean放到ArrayList返回
     *      
     */
    public static ArrayList readExcel(File file) {
        ArrayList userList = new ArrayList();
        Workbook wb = null;
        try {
            wb = Workbook.getWorkbook(file);
        } catch (BiffException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        if(wb == null) 
            return null;
        Sheet[] sheets = wb.getSheets();
        
        if(sheets != null && sheets.length > 0) {
            for(int i=0; i<sheets.length; i++) {
                int rowNum = sheets[i].getRows();
                int columnNum = sheets[i].getColumns();
                Cell[] title = null;
                for(int row=0; row<rowNum; row ++) {
                    if(row == 0){
                        title = sheets[i].getRow(row);    
                    } else {
                        Cell[] rowContent = sheets[i].getRow(row);
                        User user = paserUnit(title,rowContent);
                        userList.add(user);
                    }
                }
                
                
            }
        }
        wb.close();
        return userList;
    }
    
    /**
     * 根据给的信息生产XML
     * @param filmList
     * @throws IOException
     */
    public void generateXML(ArrayList userList) throws IOException {
        
        try {
            OutputStreamWriter osw = new OutputStreamWriter(out, encoding);
            BufferedWriter bw = new BufferedWriter(osw);
            bw.write("<?xml version=\"1.0\" encoding=\"utf-8\" ?>");
            bw.newLine();
            Iterator it= userList.iterator();
            bw.write("<user_info_root>");
            bw.newLine();
            while(it.hasNext()) {
                User user = (User) it.next();
                bw.write("<user_info>");
                bw.newLine();
                bw.write("<name>"+user.getUsername()+"</name>");
                bw.newLine();
                bw.write("<email>"+user.getUsermail()+"</email>");
                bw.newLine();
                bw.write("<password>"+user.getPassword()+"</email>");
                bw.newLine();
                bw.write("</user_info>");
                bw.newLine();
            }
            bw.write("</user_info_root>");
            bw.flush();
            bw.close();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }

    /**
     * 按EXCEL的表头,解析EXCEL的每一行数据,放入formBean
     * @param title
     * @param rowContent
     * @return
     */
    public static User paserUnit(Cell[] title, Cell[] rowContent) {
        User userContent = new User();
        for(int i=0; i<rowContent.length; i++) {
            Cell filmCell = title[i];
            String user = filmCell.getContents();
            System.out.println(user);
            Cell filmContentCell = rowContent[i];
            String userValue = filmContentCell.getContents();
            
            if(UserKeys.USER_NAME_VALUE.equals(user)) {
            	userContent.setUsername(userValue);
            }
            if(UserKeys.USER_EMAIL_VALUE.equals(user)) {
            	userContent.setUsermail(userValue);
            }
            if(UserKeys.USER_PASSWORD_VALUE.equals(user)) {
            	userContent.setPassword(userValue);
            }
        }
       
        return userContent;
    }
    /**
     * 整型验证
     * @param str
     * @return
     */
    public static  Integer validateInteger(String str){
        Integer result = null;
        if(str == null || str.equals("")) {
            result = new Integer("0");
            return result;
        } else {
            return new Integer(str);
        }
        
    }
    /**
     * 字符编码转换
     * @param str
     * @return
     */
    public static String StringConersion(String str) {
        String result = null;
        byte context[];
        try {
            context = str.getBytes("UTF-8");
            result =   new  String(context, "gb2312" );
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
       return result;
    }
    /**
     * EXCEL到XML的生成
     * @param excelFile
     * @param xmlFile
     */
    public static void Exce2XMLComplete(File excelFile, File xmlFile) {
        ArrayList list = Excel2XML.readExcel(excelFile);
        FileOutputStream fos;
        try {
            fos = new FileOutputStream(xmlFile);
            Excel2XML obj = new Excel2XML(fos,"utf-8");
            try {
                obj.generateXML(list);
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
        File file = new File("D:\\user.xls");
        ArrayList list = Excel2XML.readExcel(file);
        FileOutputStream fos;
        try {
            fos = new FileOutputStream(new File("D:\\user.xml"));
            Excel2XML obj = new Excel2XML(fos,"utf-8");
            try {
                obj.generateXML(list);
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        

    }
}


最后实现附件中的样式,简单的用这个方法可能有点复杂,建议这样做,对以后改进有很好的帮助!


















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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值