在我们的工作中可能会需要到让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文件(可以输入多个)

  我的目录结构如下::

  

 using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Excel;
using System.Data;
using System.Xml; namespace ClientObjectTransform
{
class Program
{
static void Main(string[] args)
{
string str;
Console.WriteLine("请输入Excel文件名字(可输入1个,多个,也可以不输入)::");
str = Console.ReadLine();
args = str.Split(' ');
if ( args.Length >= )
{
Console.WriteLine("你输入的文件名字为::");
for (int i = ; i < args.Length; i++)
{
Console.WriteLine(string.Format("{0}::{1}", i + , args[i]));
}
}
LoadExcelData(args);
} static void LoadExcelData(string[] strFileNames)
{
//获取当前应用程序目录下的所有文件名
string[] strFiels = Directory.GetFiles(Directory.GetCurrentDirectory() + "/object/", "*.xls*", SearchOption.TopDirectoryOnly); if ( strFileNames.Length >= )
{ foreach (string strName in strFileNames)
{
string str = Directory.GetCurrentDirectory() + "/object/"+strName + ".xlsx";
//Console.Write("str file:{0}", str);
if (strFiels.Contains(str))
{
LoadOneFile(str);
}
}
} else
{
foreach (string strPath in strFiels)
{
if ( strPath.Length > )
{
LoadOneFile(strPath);
}
}
}
Console.Write("按任意键退出...");
Console.ReadKey(true);
} static void LoadOneFile(string strPath)
{
FileInfo fileinfo = new FileInfo(strPath);
FileStream filestream; if (fileinfo != null)
{
filestream = fileinfo.Open(FileMode.Open, FileAccess.Read); //FileAccess::指定对文件的读取和写入访问。
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(filestream);
filestream.Close(); // 第二行是key 第三行是类型,所以从第四行开始读就可以 DataSet result = excelReader.AsDataSet();
DataTable datatable = result.Tables[]; int columns = datatable.Columns.Count; //execl列
int rows = datatable.Rows.Count; //execl行 XmlDocument xmlDoc = new XmlDocument();
XmlNode rootNode = xmlDoc.CreateElement("object"); //假如根元素 string filename = Path.GetFileNameWithoutExtension(strPath); for (int i = ; i < rows; i++)
{
XmlNode objectNode = xmlDoc.CreateElement(filename);
for (int j = ; j < columns; j++)
{
string val = datatable.Rows[i][j].ToString();
bool bErrorData = (i == || i == || j == ) && val.Length == ;
if (bErrorData)
{
Console.Write("file:{0} key or type is null", filename);
continue;
} string nodeName = datatable.Rows[][j].ToString();
if (nodeName.Length == )
{
continue;
} XmlNode objectChildNode = xmlDoc.CreateElement(nodeName); XmlAttribute valAttr = xmlDoc.CreateAttribute("value"); //属性
valAttr.Value = val;
objectChildNode.Attributes.Append(valAttr); XmlAttribute typeAttr = xmlDoc.CreateAttribute("type");
typeAttr.Value = datatable.Rows[][j].ToString();
objectChildNode.Attributes.Append(typeAttr); objectNode.AppendChild(objectChildNode);
} rootNode.AppendChild(objectNode);
} excelReader.Close(); xmlDoc.AppendChild(rootNode); xmlDoc.Save(Directory.GetCurrentDirectory() + "/clientobject/" + filename + ".xml"); //保存转换好的xml文件到指定目录
}
}
}
}

程序运行的结果

这样就会得到对应的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. Linux chown命令

    chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID:组可以是组名或者组ID:文件是以空格分开的要改变权限的文件列表,支持通配符.系统管理员经常使用chown命令,在将文件拷贝 ...

  2. spring boot 2.0.0由于版本不匹配导致的NoSuchMethodError问题解析

    spring boot升级到2.0.0以后,项目突然报出 NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBu ...

  3. Android TextView数字增长动画效果

    某些app上,新进入一个Activity的时候,上面的一个关键性数字(比如金额)会以一个数字不断变大的动画来显示.刚开始的时候,想到的一个方案是:使用Thead+Handler,给定一个动画总时长与刷 ...

  4. kvm之四:从网上镜像安装虚拟机Centos6.8

    1.再加块硬盘,格式化挂载至新建目录/kvm2下 2.CentOS 6.8镜像地址 http://mirrors.163.com/centos/6.8/os/x86_64/ 3.配置安装参数,执行安装 ...

  5. 以太坊开发DApp入门教程——区块链投票系统(一)

    概述 对初学者,首先要了解以太坊开发相关的基本概念.   学习以太坊开发的一般前序知识要求,最好对以下技术已经有一些基本了解: 一种面向对象的开发语言,例如:Python,Ruby,Java... 前 ...

  6. java错题集

    解析:java中,JavaDoc注释以 /** 开头(中间写内容)以*/结尾 解析:A对象是类的实例,不是集合,其余正确 解析:创建一个对象的语法为: 类名 对象名=new 类名();,因此正确答案为 ...

  7. jdk 环境配置踩坑

    其实在网上已经有很多环境配置的介绍了.不过我还是想用切身经历告诉大家这里面可能遇到的坑. 首先,先给大家讲一下JAVA_HOME,path,CLASSPATH JAVA_HOME 指向的是JDK的安装 ...

  8. 使用 Except 和 Intersect

    做了一个如下的小厕所,如果我需要得到返回是 d,f 那我需要用那组语句呢? A: ;WITH CA AS( SELECT * FROM (VALUES('a'),('b'),('c'),('d'))a ...

  9. Git详细教程(1)---个人Git的基本使用

    分布式版本控制系统--git 一.什么是Git 1.Git是什么 Git是目前世界上最先进的分布式版本控制系统(没有之一). 实际上版本控制系统有如下几个: 1) CVS 2)  SVN 3) Git ...

  10. 【Alpha版本】冲刺阶段 - Day2 - 漂流

    今日进展 袁逸灏:实现车辆的子弹发射(3.5h) 启动类,子弹类(修改类),游戏画面类(修改类) 刘伟康:继续借鉴其他 alpha 冲刺博客,初步了解墨刀.leangoo等工具(2h) 刘先润:解决了 ...