EXCEL遍历并写入到XML中(C#)

s_111111 2010-04-18 09:23:21
因为不知道如何加入附件我就手写EXCEL数据了。

A B C D E F G (此栏位EXCEL中ROW行,第一行数字亦然)
1 实例标题
2 by name
3 科目 备註 成绩
4 英语 89
5 数学 80
6 计算机 二级 89
7 三级 70
8


实例标题:CDE合并
by name:FG合并
科目:AB合并
备註:CD合并
成绩:EF合并

我是新手,所以很多都不懂,麻烦大家写详细点,最好从建立工程开始讲起,如需要建立什么文件,在文件中需要添加那些命名空间,然后再是怎么打开并保存Excel数据,然后遍历EXCEL并写入XML中(设两个阶层就可以),最后就是碰到一些问题怎么处理,比如碰到两个合并的单元格如何抓取并写入,注意的事项等等。
有点啰嗦,但没办法,我想学一次后然后自己多多练习,学的快一些。有劳了。。。
...全文
404 25 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
fuchunjun 2010-04-19
  • 打赏
  • 举报
回复
飘过回帖是美德~~~
whowhen21 2010-04-19
  • 打赏
  • 举报
回复
楼上有解~我来顶一下哈~
wuzhicheng5 2010-04-19
  • 打赏
  • 举报
回复
xd.Save(Fpath);//加上这句
wuzhicheng5 2010-04-19
  • 打赏
  • 举报
回复
思路:

1.要能读取出excel的内容,然后装入一个ado.net数据集对象里面 比如dt 或者ds都行
这一点,1楼和8楼提提供的代码都能实现。这里假设是dt.
public DataTable ExcelDataSource( string filepath , string sheetname )
{
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
OleDbDataAdapter oada = new OleDbDataAdapter ( "select * from [" + sheetname + "$]", strConn );
DataSet ds = new DataSet ();
oada.Fill ( ds );
return ds.Tables[0] ;
}

2.将dt中数据行读,遇到需要合并的项,即合并后再写入xml中对应的节点,

for (int i = 0; i < dt.Rows.Count; i++)
{
//科目:AB合并
string KM=dt.Rows[i]["A"].ToString()+dt.Rows[i]["B"].ToString()
AddNode(KM);//将新的节点加入目标文件xml中

//其它类似
}

3.将数据存入xml文档中
public bool AddNode(string node)
{
string Fpath="C:\test.xml";//设置的xml存储路径
XmlDocument xd = new XmlDocument();
xd.Load(Fpath);
XmlElement xe;

xe = xd.CreateElement("科目");
xe.InnerText = node; //科目对应的值
}


现写的,基本差不多,希望能帮到你
s_111111 2010-04-19
  • 打赏
  • 举报
回复
今天晚上结贴,有完整给出流程跟代码的,分全给;没有的话就不满意结贴。
谢谢大家。
s_111111 2010-04-19
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 myhope88 的回复:]
建议楼还是先看看基本教程吧,大概看一下怎么配置环境,哪里写代码,怎么调试执行程序再来看这些就不难了
[/Quote]
是有这个准备,不过现在急着要,不然也不会发100分的贴了。
不知道是不是太简单了,以致都没人帮忙了。。。
myhope88 2010-04-19
  • 打赏
  • 举报
回复
建议楼还是先看看基本教程吧,大概看一下怎么配置环境,哪里写代码,怎么调试执行程序再来看这些就不难了
s_111111 2010-04-19
  • 打赏
  • 举报
回复
最佳但是我执行不了,因为我根本就不知道如何执行。
能不能从简开始。
不知道各位有没有看全我帖子内容和要求,我是新手,没写过c#程式的。请帮忙,先谢了。
ljt_09 2010-04-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyq11 的回复:]
SELECT * into newtable
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]

string strConn = "Provider……
[/Quote]
鉴定完毕,本贴最佳!
guyehanxinlei 2010-04-19
  • 打赏
  • 举报
回复
支持一楼!
s_111111 2010-04-19
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 myhope88 的回复:]
将excel中的数据读取到一个dataset数据集中---循环读取dataset中的数据放到xml中
[/Quote]
有没有具体点的代码(单元格合并的情况有不一样吗?)
myhope88 2010-04-19
  • 打赏
  • 举报
回复
将excel中的数据读取到一个dataset数据集中---循环读取dataset中的数据放到xml中
s_111111 2010-04-19
  • 打赏
  • 举报
回复
哪位大侠花点时间写个大概流程出来可以吗?
  • 打赏
  • 举报
回复
/// <summary>
/// 从Excel读取数据到dataset中
/// </summary>
/// <param name="filepath"></param>
/// <param name="sheetname"></param>
/// <returns></returns>
public DataSet ExcelDataSource( string filepath , string sheetname )
{
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
OleDbDataAdapter oada = new OleDbDataAdapter ( "select * from [" + sheetname + "$]", strConn );
DataSet ds = new DataSet ();
oada.Fill ( ds );
return ds ;
}

//然后把Dataset填充到Table中 然后循环读取数据写到xml中
for (int i = 0; i < dt.Rows.Count; i++)
{

变量= dt.Rows[i]["Sname"].ToString();
变量= int.Parse(dt.Rows[i]["Age"].ToString());
//填充到xml中

}
乐居猫 2010-04-19
  • 打赏
  • 举报
回复
引点命名空间就行了吧
s_111111 2010-04-19
  • 打赏
  • 举报
回复
帮帮忙 各位
s_111111 2010-04-19
  • 打赏
  • 举报
回复
自己已經解決了,花了我整整一天時間。你們代碼大概正確,可是我是新手,代碼是其次,流程是關鍵!!!
不知道為什麼沒多少人來解答,可能是我語言表達有點問題。第一次在C#發帖很很失望。
總之,貼代碼的三位仁兄每人20,其餘作廢。
s_111111 2010-04-19
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 wuzhicheng5 的回复:]
3.将数据存入xml文档中
public bool AddNode(string node)
{
string Fpath="C:\test.xml";//设置的xml存储路径
XmlDocument xd = new XmlDocument();
xd.Load(Fpath); // 提示:無效的 URI: Dos 路徑必須是根目錄,例如 'c:\'。
XmlElement xe;

xe = xd.CreateElement("科目");
xe.InnerText = node; //科目对应的值
}
[/Quote]
s_111111 2010-04-19
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 wuzhicheng5 的回复:]
2.将dt中数据行读,遇到需要合并的项,即合并后再写入xml中对应的节点,

for (int i = 0; i < dt.Rows.Count; i++)
{
//科目:AB合并
string KM=dt.Rows[i]["A"].ToString()+dt.Rows[i]["B"].ToString()
AddNode(KM);//将新的节点加入目标文件xml中

//其它类似
}
[/Quote]
有没有办法自动检测是合并项?
因为我举的例子内容是比较少的,现实是很多行的。
s_111111 2010-04-18
  • 打赏
  • 举报
回复
我用的是VS2008,选择C#类可以做吗?1楼代码需要添加什么?
加载更多回复(4)

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧