用java将excel文档格式的标日初单词转成适合有道单词本的xml格式

由于需要学日语,背单词。在新浪爱问找到了一份excel格式的标准日本语初级词汇。但是喜欢有道单词本,于是需要将其转成有道支持的格式。

这是有道单词本的xml格式:

<wordbook>
  <item>
    <word>かばん</word>
    <trans>包,公文包</trans>
    <phonetic>かばん |(声调:0)</phonetic><!--这里是自己设定的,否则声调看不到,只好加入到发音中-->
    <tags>名词</tags>
    <process></process>
  </item>
</wordbook>

这里采用jxl读取excel文件,采用dom4j创建xml文件和向其写入信息。需要导入jxl和dom4j两个jar包。

具体java源码如下:

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

import jxl.*; 
public class Read_excel{
    public static void main(String[] args) {
        int i;
        Sheet sheet;
        Workbook book;
        Cell cell1 = null,cell2 = null,cell3 = null,cell4 = null,cell5 = null;
        Document document = DocumentHelper.createDocument(); //创建文档实例
      	Element rootElement = document.addElement("wordbook");//创建根元素
        try { 
            //t.xls为要读取的excel文件名
            book= Workbook.getWorkbook(new File("C:\\Users\\Desktop\\ne2.xls")); //注意:一定要是xls格式,否则可能不支持
            
            //获得第一个工作表对象(ecxel中sheet的编号从0开始,0,1,2,3,....)
            sheet=book.getSheet(0); 
            //获取左上角的单元格
            cell1=sheet.getCell(0,0);
            System.out.println("标题:"+cell1.getContents()); 
            
            i=1;
            while(true)
            {
                //获取每一行的单元格 
                cell1=sheet.getCell(0,i);//(列,行)
                cell2=sheet.getCell(1,i);
                cell3=sheet.getCell(2,i);
                cell4=sheet.getCell(3,i);
                cell5=sheet.getCell(4,i);
                if("".equals(cell1.getContents())==true)    //如果读取的数据为空
                    break;
                System.out.println(cell1.getContents()+"\t"+cell2.getContents()
                		+"\t"+cell3.getContents()+"\t"+cell4.getContents()
                		+"\t"+cell5.getContents()); 
                
                Element itemElement = rootElement.addElement("item");//添加子元素
        		Element wordElement = itemElement.addElement("word");
        		wordElement.addText(cell1.getContents());//为元素添加值
        		Element transElement = itemElement.addElement("trans");
        		transElement.addText(cell3.getContents());
        		Element phoneticElement = itemElement.addElement("phonetic" );
        		phoneticElement.addText(cell2.getContents()+  " |(声调:" + cell4.getContents() + ")");
        		Element tagsElement = itemElement.addElement("tags");
        		tagsElement.addText(cell5.getContents());
        		Element processElement = itemElement.addElement("process");
        		processElement.addText("");
                i++;
            }
            book.close(); 
        }
        catch(Exception e) {
        	e.printStackTrace();
        } 
        
		
		
		//输出格式化
		XMLWriter output;
		OutputFormat format = OutputFormat.createPrettyPrint();
		format.setEncoding("utf-8");
		try {
			output = new XMLWriter(new FileWriter("C:\\Users\\Desktop\\ne2.xml"),format);
			output.write(document);
			output.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
    }
}
输出完成后导入有道单词本即可开始复习。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值