`

把Excel文件中的数据直接读取之后写到XML文件中

阅读更多
要用到的jar包:

dom4j-1.6.1.jar

poi-3.2-FINAL-20081019.jar

poi-contrib-3.2-FINAL-20081019.jar

poi-scratchpad-3.2-FINAL-20081019.jar



以下是java源代码


import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileWriter;

import java.io.IOException;



import org.apache.poi.hssf.usermodel.HSSFCell;

import org.apache.poi.hssf.usermodel.HSSFRow;

import org.apache.poi.hssf.usermodel.HSSFSheet;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.dom4j.Document;

import org.dom4j.DocumentHelper;

import org.dom4j.Element;

import org.dom4j.io.OutputFormat;

import org.dom4j.io.XMLWriter;



public class ExcelXMLTest {



   /**

    * @param args

    */

   public static void main(String[] args) {

      export("D:/code.xls","D:/Area.xml");

   }



   public static void export(String inFile,String outFile){

     

      HSSFWorkbook book = null;

      try {

         //读取一个现有的excel文件

         book = new HSSFWorkbook(new FileInputStream(inFile));

      } catch (FileNotFoundException e) {

         System.out.println("===要读取的excel文件不存在===");

         e.printStackTrace();

      } catch (IOException e) {

         System.out.println("===读取excel文件是出错===");

         e.printStackTrace();

      }

      //获取excel文件的第一个工作薄

      HSSFSheet sheet = book.getSheetAt(0);

      //创建一个XML的文件

      Document d = DocumentHelper.createDocument();

      //为这个XML文件设置一个根结点,名为:address

      Element root = d.addElement("address");

      //获取的代码

      String code = "";

      //代码对应的值

      String value = "";

      //省级代码,也就是代码的前两位,如北京:11

      String proCode = "";

      //市级代码,也就是代码的前四位,如北京1100

      String cityCode = "";

      //创建几个结点,省级结点

      Element province = null;

      //市级结点

      Element city = null;

      //乡镇结点

      Element country = null;

      //循环读取excel文件中的数据,第一行是标题就不读取了

      for(int i=1;i<sheet.getLastRowNum();i++) {

         HSSFRow row = sheet.getRow(i);

         HSSFCell codeCell = row.getCell(0);

         HSSFCell valueCell = row.getCell(1);

         code = new String((int)codeCell.getNumericCellValue()+"");

         if(valueCell.getRichStringCellValue()!=null)

            value = valueCell.getRichStringCellValue().toString();

        

         //如果省级代码不等于代码中的前两位就表示这又是另一个省了

         if(!proCode.equals(code.substring(0,2))) {

            //改变省级代码

            proCode = code.substring(0,2);

            //在根目录下添加一个province的子结点

            province = root.addElement("province");

            //为这个结点添加一两个属性:name和value,对应的值两个是value和code

            province.addAttribute("name", value);

            province.addAttribute("value", code);

            //如果市级代码不等于代码的前四位就表示这是另一个市的了

         } else if(!cityCode.equals(code.substring(0,4))) {

            //改变市级代码

            cityCode = code.substring(0,4);

            //在省结点下添加相应的市子结点

            city = province.addElement("city");

            //设置两个属性并赋值

            city.addAttribute("name", value);

            city.addAttribute("value", code);

         } else {

            //否则的话就直接在市结点下添加相应的乡镇子结点

            country = city.addElement("country");

            country.addAttribute("name", value);

            country.addAttribute("value", code);

         }

      }

     

      try {

         //格式化XML

         OutputFormat format = OutputFormat.createPrettyPrint();

         //是否缩进

         format.setIndent(true);

         //在声明完之后是否进行换行

         format.setNewLineAfterDeclaration(false);

         //设置字符编码,只是在声明里把encoding的值设置为UTF-8

         format.setEncoding("UTF-8");

         //进否格式化

         format.setTrimText(true);

         //进否添加新行

         format.setNewlines(true);

         XMLWriter writer = new  XMLWriter(new FileWriter(outFile),format);

         writer.write(d);

         //写完之后要进行flush这样才会把数据真正的写到文件中去

         writer.flush();

         writer.close();

         System.out.println("===成功生成XML文件!!!===");

      } catch (IOException e) {

         System.out.println("===生成XML文件是出错===");

         e.printStackTrace();

      }

     

   }



}

相应包及源代码:http://bbs.fengfly.com/thread-129-1-1.html
分享到:
评论

相关推荐

    读取Excel数据生成XML文件

    综上所述,实现“读取Excel数据生成XML文件”的过程涉及到对Excel数据的处理、XML语法的理解,以及利用编程语言如Python中的工具进行转换。同时,提供详细的使用说明和资源链接可以帮助用户更好地理解和应用这个过程...

    excel读取生成xml文件

    本文将详细介绍如何通过Excel读取数据并生成XML文件,以实现数据的标准化存储和传输。 首先,我们需要了解Excel如何读取数据。Excel提供了丰富的函数和公式,可以方便地对单元格中的数据进行操作。例如,VLOOKUP...

    读取目录中的xml文件并写入Excel

    读取XML文件主要涉及到`System.IO`和`System.Xml.Linq`命名空间。`Directory.GetFiles()`方法用于获取指定目录下的所有XML文件路径。`XDocument.Load()`或`XmlDocument.Load()`可以加载XML文件内容,其中`XDocument`...

    C# 读取XML文件并写入Excel表格

    综上所述,"C# 读取XML文件并写入Excel表格"这一主题涵盖了XML解析和Excel操作的关键技术,对于数据处理和报告生成等场景非常实用。在实际应用中,开发者可以根据具体需求调整代码逻辑,以满足各种复杂的业务需求。

    android 读取Excel文件转成xml文件

    在Android平台上,有时候我们需要处理Excel数据,例如读取其中的内容并转换为XML文件,以便更好地在应用程序中使用或与其他系统交换数据。这个项目提供了一种方法来实现这一目标,利用了jxl.jar库来处理Excel文件,...

    以读取XML方式的大批量导入Excel

    2. **XML解析**:使用StAX或类似的API读取XML文件,逐个处理数据项,减少内存占用。 3. **数据处理**:根据业务需求,对解析出来的数据进行验证、计算、过滤等操作。 4. **数据写入Excel**:创建新的Excel工作表,...

    QTP的XML结果文件中读取数据,汇总写入EXCEL

    在给定的描述中,我们看到如何从 QTP 的 XML 结果文件中提取数据,并将这些数据汇总到一个 Excel 文件中。 首先,我们需要了解如何读取 XML 文件。在示例代码中,使用了 `GetXmlAttribute` 函数来获取特定 XML 路径...

    sql server 直接读取excel

    在SQL Server中,直接读取Excel文件是一种常见的需求,特别是在数据整合、分析或者报表生成时。标题和描述中提到的方法允许我们避免将Excel数据导入到数据库中,而是直接在SQL Server中对Excel文件进行查询或处理。...

    vb.net 编程读取excel文件中的数据

    在VB.NET编程中,读取Excel文件是常见的任务,尤其在数据处理和分析场景中。以下将详细讲解如何使用VB.NET来实现这一功能,并提供一些关键知识点。 首先,要读取Excel文件,我们需要一个能够与Excel文件交互的库。...

    python文件对比 xml、excel

    在Python编程中,处理XML和Excel文件是常见的任务,尤其在数据处理和分析领域。XML(eXtensible Markup Language)是一种结构化数据格式,常用于存储和交换数据,而Excel则是Microsoft Office套件中的一个应用程序,...

    c#读取excel文件并生成xml文件

    这个程序将读取指定的Excel文件,将其中的数据转换为XML格式,并保存到新的XML文件中。请注意,替换`path_to_your_excel_file.xlsx`和`output.xml`为实际的文件路径。完成这些步骤后,您将获得一个包含Excel数据的...

    java读取excel形成xml文件

    1. **读取Excel文件**:使用Apache POI读取Excel文件中的数据。 2. **构建XML结构**:根据读取的数据使用JDOM构建相应的XML结构。 3. **输出XML文件**:将构建好的XML文档写入到一个新的XML文件中。 ### 总结 通过...

    Android Excel文件写入和读取

    在Android应用开发中,有时需要处理大量的结构化数据,这时Excel文件就成为一个理想的存储选择,因为它们便于人类阅读,同时也方便程序进行数据处理。本文将详细介绍如何在Android中实现Excel文件的读取与写入。 ...

    读取excel文件到高级表格易语言源码

    在易语言编程环境中,读取Excel文件并将其数据导入到高级表格是一种常见的需求,这有助于数据处理和分析。本文将详细讲解如何使用易语言来实现这一功能,主要涉及的知识点包括: 1. 易语言基础:易语言是中国自主...

    XML文件导出为本地excel文件

    本篇文章将详细讲解如何将XML文件导出为本地的Excel文件,这一过程涉及到数据解析、格式转换以及文件操作等多个关键知识点。 首先,我们需要了解XML的基本结构。XML文件由元素(Elements)、属性(Attributes)、...

    C#利用Openxml读取Excel数据实例

    在C#编程中,OpenXML SDK是一个强大的工具,用于读写Microsoft Office文件格式,...如果遇到OpenXML读取时Cell.DataType为`null`的问题,可以继续寻找社区中其他开发者的解决方案,或者考虑使用不同的数据读取方式。

    用idl读取excel

    这个函数能够直接读取Excel文件中的数据,包括工作表名称、单元格内容等。例如,要读取名为“Sheet1”的工作表,可以这样编写代码: ```idl ; 加载xlsread库 loadct, /xlsread ; 指定Excel文件路径 file_path = '...

    用ruby读excel文件生成xml文件

    接着,我们可以遍历Excel文件中的每一行和每一列,获取数据并存储到适当的数据结构中,例如数组或哈希: ```ruby data = [] sheet.each_row_streaming(offset: 1) do |row| row_data = {} row.each_with_index do...

    读取Excel文件中多个sheet

    java读取Excel文件中多个sheet,生成xml格式的文件

Global site tag (gtag.js) - Google Analytics