Java读取excel文件生成xml文档和JSON文档

时间:2021-03-15 12:04:54


 

Java读取excel文件生成xml文档和JSON文档


目录(?)[+]

1.读取Excel文档中的内容


注意:刚开始在网上下了jlx.rar文件,没注意直接把jlx.rar当成jar包导进去了,在写代码时候纠结了,死活找不到相关jxl.jar包下面的类!各位看客注意了导包的时候一定要导入.jar包   rar与jar  真的好像  眼睛睁大  放亮了呵呵!

jlx.jar包下载地址:

[java] view plaincopy
  1. <span style="font-size:14px;">package com.jun.excel;  
  2.   
  3. import java.io.FileInputStream;  
  4. import java.io.InputStream;  
  5.   
  6. import jxl.Cell;  
  7. import jxl.Sheet;  
  8. import jxl.Workbook;  
  9.    
  10. public class ImportUser  
  11.  {  
  12.      public static void main(String[] args)  
  13.      {  
  14.        readExcelFile();  
  15.      }  
  16. //读取d://test.xls文件  
  17.     private static void readExcelFile() {  
  18.         // TODO Auto-generated method stub  
  19.          try  
  20.          {  
  21.             String sourcefile = "d://test.xls";  
  22.              InputStream is = new FileInputStream(sourcefile);  
  23.              Workbook rwb = Workbook.getWorkbook(is);  
  24.            //获得总的Sheets,得到sheet的层数  
  25.              Sheet[] sheets = rwb.getSheets();  
  26.              int sheetLen = sheets.length;  
  27.              //获得第一个Sheets 的结果  
  28.             jxl.Sheet rs = rwb.getSheet(0);   
  29.             int num_row = rs.getRows();//得到行数  
  30.             int num_column=rs.getColumns();//得到列数  
  31.             for(int j=0;j < num_row ;j++)  
  32.              {  
  33.                 Cell[] cell  = rs.getRow(j);//得到第j行的所有值  
  34.                   
  35.                 for(int column_index=0;column_index<num_column;column_index++){  
  36.                  String value  = cell[column_index].getContents();//得到第j行,第column_indexs列的值  
  37.                 System.out.print(""+""+rs.getRow(j)[column_index].getContents()+"   ");  
  38.                   
  39.                 }  
  40.                 System.out.println("");  
  41.              }  
  42.          }  
  43.          catch(Exception ex)  
  44.         {  
  45.                ex.printStackTrace();  
  46.          }  
  47.     }  
  48.  }</span>  

2.生成xml文档

生成XML文档类的主要代码:

[java] view plaincopy
  1. package com.jun.createxml;  
  2.   
  3. import java.io.FileOutputStream;  
  4.   
  5.   
  6. import javax.xml.parsers.DocumentBuilder;  
  7. import javax.xml.parsers.DocumentBuilderFactory;  
  8. import javax.xml.transform.Result;  
  9. import javax.xml.transform.Source;  
  10. import javax.xml.transform.Transformer;  
  11. import javax.xml.transform.TransformerFactory;  
  12. import javax.xml.transform.dom.DOMSource;  
  13. import javax.xml.transform.stream.StreamResult;  
  14.   
  15. import org.w3c.dom.Document;  
  16. import org.w3c.dom.Element;  
  17. import org.w3c.dom.Node;  
  18.   
  19. import com.jun.excel.ImportUser;  
  20.   
  21. public class CreateXML {  
  22.     DocumentBuilderFactory dbf  = null;  
  23.     DocumentBuilder db = null;  
  24.     Document doc = null;  
  25.     TransformerFactory tff = null;  
  26.     Transformer tf = null;  
  27.     Source in = null;  
  28.     Result out = null;  
  29.     String xmlpath = null;  
  30.       
  31.     public CreateXML()throws Exception  
  32.     {  
  33.           
  34.         dbf = DocumentBuilderFactory.newInstance();//实例化工厂类  
  35.         dbf.setValidating(false);//不进行有效性检查  
  36.         dbf.setNamespaceAware(true);  
  37.           
  38.         db = dbf.newDocumentBuilder();//实例化DocumentBuilder类  
  39.           
  40.         doc = (Document) db.newDocument();//实例化Document类  
  41.           
  42.         tff = TransformerFactory.newInstance();  
  43.         tf = tff.newTransformer();  
  44.           
  45.         in=new DOMSource((Node) doc);  
  46.     }  
  47.   
  48. /*===================================================== 
  49.  *============生成xml文件 
  50.  *=====================================================*/  
  51.     public void ProuduceXml(String axmlpath)  
  52.     {  
  53.           
  54.         try  
  55.         {  
  56.           
  57.         Element users = ((org.w3c.dom.Document) doc).createElement("users");//生产根元素students       
  58.         ((Node) doc).appendChild(users);//将根元素添加到根节点后面  
  59.           
  60.           
  61.         for(int i=0;i<ImportUser.userList.size();i++){  
  62.             Element user = ProuduceElement(ImportUser.userList.get(i).getName(), ImportUser.userList.get(i).getAge(),ImportUser.userList.get(i).getAddress(),ImportUser.userList.get(i).getPhone());  
  63.               
  64.             users.appendChild(user);  
  65.               
  66.         }  
  67.           
  68.           
  69.         xmlpath = axmlpath;  
  70.         out=new StreamResult(new FileOutputStream(xmlpath+"tr.xml"));//生成输出源  
  71.         tf.transform(in,out);   
  72.         }  
  73.         catch(Exception e)  
  74.         {  
  75.             System.out.println(e.getMessage());  
  76.         }  
  77.     }  
  78.       
  79.     public Element ProuduceElement(String aname, String _age,String _address,String _phone) throws Exception  
  80.     {  
  81.           
  82.         Element user = ((org.w3c.dom.Document) doc).createElement("student");//生成student元素(students的子元素)  
  83.           
  84.         Element name = ((org.w3c.dom.Document) doc).createElement("name");//创建name子元素  
  85.         name.appendChild(((org.w3c.dom.Document) doc).createTextNode(aname));//在name元素后添加文本节点  
  86.         user.appendChild(name);//添加student的子元素name  
  87.           
  88.           
  89.         //设置student的属性id的值  
  90.           
  91.           
  92.         Element age = doc.createElement("age");  
  93.         age.appendChild(doc.createTextNode(_age));  
  94.         user.appendChild(age);  
  95.           
  96.         Element address = doc.createElement("address");  
  97.         age.appendChild(doc.createTextNode(_address));  
  98.         user.appendChild(address);  
  99.           
  100.           
  101.         Element phone= doc.createElement("phone");  
  102.         age.appendChild(doc.createTextNode(_phone));  
  103.         user.appendChild(address);  
  104.         return user;  
  105. }  
  106. }  




在main函数中调用的方法:

[java] view plaincopy
  1. //创建XML文档  
  2. private static void createXMLFile() {  
  3.         // TODO Auto-generated method stub  
  4.       
  5.     try  
  6.     {  
  7.       
  8.     CreateXML xml=new CreateXML();          
  9.     xml.ProuduceXml(xmlpath);  
  10.     }  
  11.     catch(Exception e)  
  12.     {  
  13.         System.out.println("main:\n"+e.getMessage());  
  14.     }  
  15.           
  16.           
  17.     }  





3.生成json文档