使用 excel xml 和 java_读写 excel 和 xml

一、新建一个excel表格

44db442026183d82efb197568b631212.png

二、新建一个java 工程导入 jxl-2.6.12.jar (用来解析excel的api)

三、新建一个相应的实体类 user

package cn.rebuild;

import java.util.ArrayList;

import java.util.List;

public class User {

//定义实体集合

public static List list = new ArrayList();

private String name;

private String age;

private String address;

private String phone;

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 getAddress() {

return address;

}

public void setAddress(String address) {

this.address = address;

}

public String getPhone() {

return phone;

}

public void setPhone(String phone) {

this.phone = phone;

}

@Override

public String toString() {

return "[ name = " + name + ", age = " + age + ", address = " + address + ", phone = " + phone + " ]";

}

}

四、建一个读excel文件内容的类ReadFromExcel

package cn.rebuild;

import java.io.FileInputStream;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

import jxl.Cell;

import jxl.Sheet;

import jxl.Workbook;

public class ReadFromExcel {

public static void readExcelFile(String filePath) {

try {

InputStream is = new FileInputStream(filePath);

Workbook rwb = Workbook.getWorkbook(is);

// 获得总的Sheets,得到sheet的层数

Sheet[] sheets = rwb.getSheets();

int sheetLen = sheets.length;

// 获得第一个Sheets 的结果

jxl.Sheet rs = rwb.getSheet(0);

int num_row = rs.getRows();

int num_column = rs.getColumns();

for (int j = 0; j < num_row; j++) {

User user = new User();

// 得到第j行的所有值

Cell[] cell = rs.getRow(j);

for (int column_index = 0; column_index < num_column; column_index++) {

// 得到第j行,第column_indexs列的值

String value = cell[column_index].getContents();

System.out.print(value + " ");

//从第二行开始将值存入到实体里面并添加到list中

if (j >= 1) {

String columnValue = rs.getRow(j)[column_index].getContents();

switch(column_index){

case 1 : user.setName(columnValue);;break;

case 2 : user.setAge(columnValue);;break;

case 3 : user.setAddress(columnValue);;break;

case 4 : user.setPhone(columnValue);;break;

default : System.out.print("");break;

}

}

}

System.out.println("");

if (j >= 1) {

User.list.add(user);

}

}

} catch (Exception ex) {

ex.printStackTrace();

}

}

}

五、将excel文件中的内容写入到xml文件中

package cn.rebuild;

import java.io.FileOutputStream;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.transform.Result;

import javax.xml.transform.Source;

import javax.xml.transform.Transformer;

import javax.xml.transform.TransformerFactory;

import javax.xml.transform.dom.DOMSource;

import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.Node;

import cn.excel.test.Main;

import cn.rebuild.ReadFromExcel;

public class CreateXML {

public static DocumentBuilderFactory dbf = null;

public static DocumentBuilder db = null;

public static Document doc = null;

public static TransformerFactory tff = null;

public static Transformer tf = null;

public static Source in = null;

public static Result out = null;

public static String xmlpath = null;

public static void init() throws Exception {

dbf = DocumentBuilderFactory.newInstance();// 实例化工厂类

dbf.setValidating(false);// 不进行有效性检查

dbf.setNamespaceAware(true);

db = dbf.newDocumentBuilder();// 实例化DocumentBuilder类

doc = (Document) db.newDocument();// 实例化Document类

tff = TransformerFactory.newInstance();

tf = tff.newTransformer();

in = new DOMSource((Node) doc);

}

/**

* 生成xml 文件

* @param axmlpath

*/

public static void ProuduceXml(String axmlpath) {

try {

Element users = ((org.w3c.dom.Document) doc).createElement("users");// 生产根元素users

doc.createElement("users");

((Node) doc).appendChild(users);// 将根元素添加到根节点后面

for (int i = 0; i < User.list.size(); i++) {

Element user = ProuduceElement(User.list.get(i).getName(),

User.list.get(i).getAge(), User.list.get(i).getAddress(),

User.list.get(i).getPhone());

users.appendChild(user);

}

xmlpath = axmlpath;

out = new StreamResult(new FileOutputStream(xmlpath));// 生成输出源

tf.transform(in, out);

} catch (Exception e) {

System.out.println(e.getMessage());

}

}

public static Element ProuduceElement(String aname, String _age, String _address, String _phone) throws Exception {

Element user = ((org.w3c.dom.Document) doc).createElement("student");// 生成student元素(students的子元素)

Element name = ((org.w3c.dom.Document) doc).createElement("name");// 创建name子元素

name.appendChild(((org.w3c.dom.Document) doc).createTextNode(aname));// 在name元素后添加文本节点

user.appendChild(name);// 添加student的子元素name

// 设置student的属性id的值

Element age = doc.createElement("age");

age.appendChild(doc.createTextNode(_age));

user.appendChild(age);

Element address = doc.createElement("address");

address.appendChild(doc.createTextNode(_address));

user.appendChild(address);

Element phone = doc.createElement("phone");

phone.appendChild(doc.createTextNode(_phone));

user.appendChild(phone);

return user;

}

public static void createXMLFile(String xmlpath) {

try {

CreateXML.init();

CreateXML.ProuduceXml(xmlpath);

} catch (Exception e) {

System.out.println("main:\n" + e.getMessage());

}

}

}

六、测试类

package cn.rebuild;

public class Start {

public static void main(String[] args) {

//读excel内容

ReadFromExcel.readExcelFile("d://temp/user.xls");

//将excel文件内容写到xml并保存到指定路径

CreateXML.createXMLFile("d://temp/user.xml");

}

}

七、结果

7476c9b69f62c4383c913f5399d663da.png

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值