在我们的工作中可能会需要到让execl表格转换成xml文件来使用,这样程序读取数据来也比较方便

  下面就写一个小程序来实现execl表格转换成xml文件来使用

  

  会使用到的知识点如下

  1:引用第三方Execl库

  如图:我使用的

  添加引用的步骤如下

  

  

  然后指定库文件的路径就行!

  我是放在了应用程序的当前目录下了。

  2:Directory类   命名空间System.IO

  公开用于通过目录和子目录进行创建、移动和枚举的静态方法。此类不能被继承

  主要用到以下方法:

  GetCurrentDirectory()   获取应用程序的当前工作目录

  public static string[] GetFiles(  string path )    返回指定目录中文件的名称(包括其路径)。

  publicstaticstring[] GetFiles(  string path,  string searchPattern )    返回指定目录中与指定的搜索模式匹配的文件的名称(包含其路径)

  3:Path类     命名空间System.IO

  对包含文件或目录路径信息的 String 实例执行操作。 这些操作是以跨平台的方式执行的

  返回指定路径字符串的文件名和扩展名。 public static string GetFileName(  string path )

  返回不具有扩展名的指定路径字符串的文件名。 public static string GetFileNameWithoutExtension(  string path )

  4:程序如下:

  这个程序如果你不输入文件的名字的话,会把应用程序当前目录下object/的所有文件都会转换成xml文件,如果你输入相应的execl文件名字,则只会转换你输入的execl文件(可以输入多个)

  我的目录结构如下::

  

  1. using System;
  2. using System.IO;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using Excel;
  8. using System.Data;
  9. using System.Xml;
  10.  
  11. namespace ClientObjectTransform
  12. {
  13. class Program
  14. {
  15. static void Main(string[] args)
  16. {
  17. string str;
  18. Console.WriteLine("请输入Excel文件名字(可输入1个,多个,也可以不输入)::");
  19. str = Console.ReadLine();
  20. args = str.Split(' ');
  21. if ( args.Length >= )
  22. {
  23. Console.WriteLine("你输入的文件名字为::");
  24. for (int i = ; i < args.Length; i++)
  25. {
  26. Console.WriteLine(string.Format("{0}::{1}", i + , args[i]));
  27. }
  28. }
  29. LoadExcelData(args);
  30. }
  31.  
  32. static void LoadExcelData(string[] strFileNames)
  33. {
  34. //获取当前应用程序目录下的所有文件名
  35. string[] strFiels = Directory.GetFiles(Directory.GetCurrentDirectory() + "/object/", "*.xls*", SearchOption.TopDirectoryOnly);
  36.  
  37. if ( strFileNames.Length >= )
  38. {
  39.  
  40. foreach (string strName in strFileNames)
  41. {
  42. string str = Directory.GetCurrentDirectory() + "/object/"+strName + ".xlsx";
  43. //Console.Write("str file:{0}", str);
  44. if (strFiels.Contains(str))
  45. {
  46. LoadOneFile(str);
  47. }
  48. }
  49. }
  50.  
  51. else
  52. {
  53. foreach (string strPath in strFiels)
  54. {
  55. if ( strPath.Length > )
  56. {
  57. LoadOneFile(strPath);
  58. }
  59. }
  60. }
  61. Console.Write("按任意键退出...");
  62. Console.ReadKey(true);
  63. }
  64.  
  65. static void LoadOneFile(string strPath)
  66. {
  67. FileInfo fileinfo = new FileInfo(strPath);
  68. FileStream filestream;
  69.  
  70. if (fileinfo != null)
  71. {
  72. filestream = fileinfo.Open(FileMode.Open, FileAccess.Read); //FileAccess::指定对文件的读取和写入访问。
  73. IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(filestream);
  74. filestream.Close();
  75.  
  76. // 第二行是key 第三行是类型,所以从第四行开始读就可以
  77.  
  78. DataSet result = excelReader.AsDataSet();
  79. DataTable datatable = result.Tables[];
  80.  
  81. int columns = datatable.Columns.Count; //execl列
  82. int rows = datatable.Rows.Count; //execl行
  83.  
  84. XmlDocument xmlDoc = new XmlDocument();
  85. XmlNode rootNode = xmlDoc.CreateElement("object"); //假如根元素
  86.  
  87. string filename = Path.GetFileNameWithoutExtension(strPath);
  88.  
  89. for (int i = ; i < rows; i++)
  90. {
  91. XmlNode objectNode = xmlDoc.CreateElement(filename);
  92. for (int j = ; j < columns; j++)
  93. {
  94. string val = datatable.Rows[i][j].ToString();
  95. bool bErrorData = (i == || i == || j == ) && val.Length == ;
  96. if (bErrorData)
  97. {
  98. Console.Write("file:{0} key or type is null", filename);
  99. continue;
  100. }
  101.  
  102. string nodeName = datatable.Rows[][j].ToString();
  103. if (nodeName.Length == )
  104. {
  105. continue;
  106. }
  107.  
  108. XmlNode objectChildNode = xmlDoc.CreateElement(nodeName);
  109.  
  110. XmlAttribute valAttr = xmlDoc.CreateAttribute("value"); //属性
  111. valAttr.Value = val;
  112. objectChildNode.Attributes.Append(valAttr);
  113.  
  114. XmlAttribute typeAttr = xmlDoc.CreateAttribute("type");
  115. typeAttr.Value = datatable.Rows[][j].ToString();
  116. objectChildNode.Attributes.Append(typeAttr);
  117.  
  118. objectNode.AppendChild(objectChildNode);
  119. }
  120.  
  121. rootNode.AppendChild(objectNode);
  122. }
  123.  
  124. excelReader.Close();
  125.  
  126. xmlDoc.AppendChild(rootNode);
  127.  
  128. xmlDoc.Save(Directory.GetCurrentDirectory() + "/clientobject/" + filename + ".xml"); //保存转换好的xml文件到指定目录
  129. }
  130. }
  131. }
  132. }

程序运行的结果

这样就会得到对应的xml文件了.

C# Execl表格文件转xml文件的更多相关文章

  1. web端自动化——Python读取txt文件、csv文件、xml文件

    1.读取txt文件 txt文件是我们经常操作的文件类型,Python提供了以下几种读取txt文件的方式. 1)read(): 读取整个文件. 2)readline(): 读取一行数据. 3)readl ...

  2. LINQ to XML 从逗号分隔值 (CSV) 文件生成 XML 文件

    参考:http://msdn.microsoft.com/zh-cn/library/bb387090.aspx 本示例演示如何使用 语言集成查询 (LINQ) 和 LINQ to XML 从逗号分隔 ...

  3. schema文件及XML文件的DOM和Sax解析

    schema文件 <?xml version="1.0" encoding="UTF-8"?> <schema xmlns="htt ...

  4. 关于跨域策略文件crossdomain.xml文件

    下载flexpaper源码修改后做成swf阅读器,要加入待阅读的swf文件,可以在flex里调用js的方法来获取swf文件的路径的方法,在js只专注获取路径就行,等着flex来调用:但这里会遇到一个问 ...

  5. Java文件操作①——XML文件的读取

    一.邂逅XML 文件种类是丰富多彩的,XML作为众多文件类型的一种,经常被用于数据存储和传输.所以XML在现今应用程序中是非常流行的.本文主要讲Java解析和生成XML.用于不同平台.不同设备间的数据 ...

  6. spring配置中,properties文件以及xml文件配置问题

    spring方便我们的项目快速搭建,功能强大,自然也会是体系复杂! 这里说下配置文件properties管理的问题. 一些不涉及到代码逻辑,仅仅只是配置数据,可以放在xxxx.properties文件 ...

  7. C#程序:如何创建xml文件以及xml文件的增、删、改、查

    其实今天的这篇博文 ,是对请几天发表的博文的一个总结,只是想把xml文件的增删改查结合起来,这样更容易让初学的朋友理解,废话也不多说了,开始吧! 下面是我把我在vs环境下写的代码ctrl+V然后ctr ...

  8. json串转化成xml文件、xml文件转换成json串

    1.json串转化成xml文件 p=[{"name":"tom","age":30,"sex":"男" ...

  9. 设置Eclipse的类文件和xml文件代码自动补全

    原文:https://blog.csdn.net/erlian1992/article/details/53706736 我们在平常编写代码的时候,不会记住大多数的类和文件的属性,方法等等,这就需要我 ...

随机推荐

  1. 警示:AL32UTF8字符集不是ZHS16GBK字符集的超集

    今天有一个客户向我咨询:数据库由ZHS16GBK字符集修改为AL32UTF8字符集,发现中文的数据中小部分出现乱码,客户认为AL32UTF8明明可以支持更多的文字,不应该出现这样的情况才对. 从现象看 ...

  2. selenium + robotframework的运行原理

    1.点击ride界面启动用例执行时,首先会调用脚本 2.打开pybot脚本查看内容. 3.打开robot包下面的run文件,我们可以看到信息 run文件内容 程序启动的入口, sys.agv所表达的含 ...

  3. Java面试总结(二)

    前几天去了几家公司面试,果然,基本全部倒在二面上,无语啊...不过幸好,到最后拿到了环球易购的offer,打算就这么好好呆着了,学习学习,努力努力,下面讲讲这几天的面试吧. 先是恒大,一个组长面试,答 ...

  4. JavaScript(第十天)【Function类型】

    在ECMAScript中,Function(函数)类型实际上是对象.每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法.由于函数是对象,因此函数名实际上也是一个指向函数对象 ...

  5. 第二周作业(pta存在的问题)

    ***第一题 错题截图 错因分析:中英文符号用混 改正截图: 思路分析:(1)由输入格式可知,该程序需要用到scanf函数 (2)构建框架 (3)根据要求打入代码 **第二题(正确) 代码截图: 思路 ...

  6. 敏捷开发每日报告--day4

    1 团队介绍 团队组成: PM:齐爽爽(258) 小组成员:马帅(248),何健(267),蔡凯峰(285)  Git链接:https://github.com/WHUSE2017/C-team 2 ...

  7. Flask 扩展 Flask-PyMongo

    安装 pip install Flask-PyMongo 初始化Pymongo实例 from flask import Flask from flask.ext.pymongo import PyMo ...

  8. 原生ajax的请求函数

    ajax:一种请求数据的方式,不需要刷新整个页面:ajax的技术核心是 XMLHttpRequest 对象:ajax 请求过程:创建 XMLHttpRequest 对象.连接服务器.发送请求.接收响应 ...

  9. OpenCASCADE Trihedron Law

    OpenCASCADE Trihedron Law eryar@163.com Abstract. In differential geometry the Frenet-Serret formula ...

  10. win10 系统右键菜单不显示文字(只有小图标)修复方法

    如下图,win10点击鼠标右键调出菜单时,看不到菜单的文字,只显示了小图标. 解决方法: Cortana 搜索 cmd ,看到 命令提示符,右键,选择 以管理员身份运行. 在命令提示符里输入以下命令, ...