C# Execl表格文件转xml文件

  在我们的工作中可能会需要到让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 >= 1 )
 22             {
 23                 Console.WriteLine("你输入的文件名字为::");
 24                 for (int i = 0; i < args.Length; i++)
 25                 {
 26                     Console.WriteLine(string.Format("{0}::{1}", i + 1, 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 >= 1 )
 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 > 0 )
 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[0];
 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 = 3; i < rows; i++)
 90                 {
 91                     XmlNode objectNode = xmlDoc.CreateElement(filename);
 92                     for (int j = 0; j < columns; j++)
 93                     {
 94                         string val = datatable.Rows[i][j].ToString();
 95                         bool bErrorData = (i == 1 || i == 2 || j == 0) && val.Length == 0;
 96                         if (bErrorData)
 97                         {
 98                             Console.Write("file:{0} key or type is null", filename);
 99                             continue;
100                         }
101
102                         string nodeName = datatable.Rows[1][j].ToString();
103                         if (nodeName.Length == 0)
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[2][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文件了.

时间: 2024-10-20 11:15:47

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

Android中java文件与XML文件的协作过程

android是使用XML布局文件来定义界面,不是用Java代码来定义界面,所以说所有组件都提供了两种方式来控制组件的行为. 1. 在XML布局文件中通过XML属性进行时控制 2. 在Java程序代码中通过调用方法进行时控制. 实际上不管使用哪种方式,他们控制android用户界面行为的本质是完全一样的.大部分时候,控制UI组件的XML属性还有对应的方法. 对于View类而言,他是所有UI组件的基类,因此他包含的XML属性和方法时所有组件可以使用的.XML文件布局相对简单,常用的几种属性练熟就基

浅试txt文件与xml文件互相转换

最近遇到了txt文件和xml文件互相转换的问题,于是自己写了写,不算深,只是简单的互相转换,下面把代码共享一下,欢迎大家指点. 先看结果: 这是数据表里面查询出来的  select * from 表名 将数据表导出到txt文件中: 将上述的txt文件转换成xml文件: 由于屏幕截图问题,一个屏没截完整,最后没问题的. 又将xml文件转换成txt文件 : 第一步:获得txt文件数据源,首先找一个数据表把里面的数据导出到txt文件中,以逗号隔开.如下: 配置文件和读取数据类就不多说了,默认的 . 从

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

下载flexpaper源码修改后做成swf阅读器,要加入待阅读的swf文件,可以在flex里调用js的方法来获取swf文件的路径的方法,在js只专注获取路径就行,等着flex来调用:但这里会遇到一个问题那就是出现安全问题,如下的提示: Error #2044: 未处理的 onDocumentLoadedError:. text=Error #2048: 安全沙箱冲突:http://localhost:8080/UpLoadAndDownLoad/FlexPaper.swf 不能从 http://

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

spring方便我们的项目快速搭建,功能强大,自然也会是体系复杂! 这里说下配置文件properties管理的问题. 一些不涉及到代码逻辑,仅仅只是配置数据,可以放在xxxx.properties文件里面,项目功能复杂的时候,往往properties文件很多,这时,就比较容易让人困惑,有些properties的文件内容总是加载不起来,应用启动时,就不断爆出错误,说某某参数加载失败,这个是什么原因呢? 其实,这个是spring配置的时候,org.springframework.beans.fact

C# 读取xml文件忽略xml文件的注释

默认情况下,读取xml文件是不忽略注释的,这样读取带注释的节点会造成异常,那么怎么屏蔽掉这些注释呢? 方案如下: XmlDocument doc = new XmlDocument(); XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreComments = true; //xmlFilePath:xml文件路径 XmlReader reader = XmlReader.Create(xmlFilePath,

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

一.邂逅XML 文件种类是丰富多彩的,XML作为众多文件类型的一种,经常被用于数据存储和传输.所以XML在现今应用程序中是非常流行的.本文主要讲Java解析和生成XML.用于不同平台.不同设备间的数据共享通信. XML文件的表现:以“.xml”为文件扩展名的文件: 存储结构:树形结构: 节点名称区分大小写. 1.<book id="1"></book> id为属性, <book><id>1</id></book>

Excel文件转换为XML文件

1 import java.io.BufferedWriter; 2 import java.io.File; 3 import java.io.FileInputStream; 4 import java.io.FileNotFoundException; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.io.InputStream; 8 import java.io.OutputSt

【C#】如何创建xml文件以及xml文件的增、改

增: using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; using System.Web; using System.Xml; namespace AppService { public class XMLReader { public static void XMLMake(string inDesString) { try { str

QT开发(四十一)——XML文件解析基础

QT开发(四十一)--XML文件解析基础 一.XML文档简介 XML(Extensible Markup Language,可扩展标记语言),是一种通用的文本格式,被广泛运用于数据交换和数据存储,而不是显示数据.XML的标签没有被预定义,用户需要在使用时自行进行定义.XML是W3C(万维网联盟)的推荐标准.相对于数据库表格的二维表示,XML使用的树形结构更能表现出数据的包含关系,作为一种文本文件格式,XML简单明了的特性使得它在信息存储和描述领域非常流行. <?xml version="1