仰天一笑
昨日不悔,今日勿失,明日莫忧! —徐羽
博客园
::
首页
::
新随笔
::
联系
::
订阅
::
管理
::
230 随笔 :: 27 文章 :: 816 评论 :: 41 引用
用C#把文件转换为XML
using
System;
using
System.Drawing;
using
System.Collections;
using
System.ComponentModel;
using
System.Windows.Forms;
using
System.IO;
using
System.Xml;
namespace
MyWindows
{
/**/
///
<summary>
///
这个示例演示如何把Office文件编码为xml文件以及如何把生成的xml文件转换成Office文件
///
把文件转换成xml格式,然后就可以用web服务,.NET Remoting,WinSock等传送了(其中后两者可以不转换也可以传送)
///
xml解决了在多层架构中数据传输的问题,比如说在客户端可以用Web服务获取服务器端的office文件,修改后再回传给服务器
///
只要把文件转换成xml格式,便有好多方案可以使用了,而xml具有平台无关性,你可以在服务端用.net用发布web服务,然后客户端用
///
Java写一段applit小程序来处理发送过来的文件,当然我举的例子几乎没有任何显示意义,它却给了我们不少的启示.
///
另外如果你的解决方案是基于多平台的,那么他们之间的交互最好不要用远程应用程序接口调用(RPC),应该尽量用基于文档的交互,
///
比如说.net下的MSMQ,j2ee的JMQ.
///
///
示例中设计到好多的类,我并没有在所有的地方做过多注释,有不明白的地方请参阅MSDN,这是偶第一个windows程序,有不对的地方
///
欢迎各位指导
///
</summary>
public
class
Form1 : System.Windows.Forms.Form
{
/**/
///
<summary>
///
声明四个Button,一个OpenFileDialog,一个SaveFileDialog,以及两个XmlDocument
///
</summary>
private
System.Windows.Forms.Button button1;
private
System.Windows.Forms.Button button2;
private
System.Windows.Forms.OpenFileDialog openFileDialog1;
private
System.Windows.Forms.SaveFileDialog saveFileDialog1;
private
System.Windows.Forms.Button button3;
private
System.Windows.Forms.Button button4;
private
System.Xml.XmlDocument mXmlDoc;
private
System.Xml.XmlDocument doc;
private
System.ComponentModel.Container components
=
null
;
public
Form1()
{
//
//
Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
//
TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
/**/
///
<summary>
///
清理所有正在使用的资源。
///
</summary>
protected
override
void
Dispose(
bool
disposing )
{
if
( disposing )
{
if
(components
!=
null
)
{
components.Dispose();
}
}
base
.Dispose( disposing );
}
Windows 窗体设计器生成的代码
#region
Windows 窗体设计器生成的代码
/**/
///
<summary>
///
设计器支持所需的方法 - 不要使用代码编辑器修改
///
此方法的内容。
///
</summary>
private
void
InitializeComponent()
{
this
.button1
=
new
System.Windows.Forms.Button();
this
.button2
=
new
System.Windows.Forms.Button();
this
.openFileDialog1
=
new
System.Windows.Forms.OpenFileDialog();
this
.saveFileDialog1
=
new
System.Windows.Forms.SaveFileDialog();
this
.button3
=
new
System.Windows.Forms.Button();
this
.button4
=
new
System.Windows.Forms.Button();
this
.SuspendLayout();
//
//
button1
//
this
.button1.Location
=
new
System.Drawing.Point(
96
,
32
);
this
.button1.Name
=
"
button1
"
;
this
.button1.TabIndex
=
0
;
this
.button1.Text
=
"
生成xml
"
;
this
.button1.Click
+=
new
System.EventHandler(
this
.button1_Click);
//
//
button2
//
this
.button2.Location
=
new
System.Drawing.Point(
96
,
80
);
this
.button2.Name
=
"
button2
"
;
this
.button2.TabIndex
=
1
;
this
.button2.Text
=
"
生成doc
"
;
this
.button2.Click
+=
new
System.EventHandler(
this
.button2_Click);
//
//
button3
//
this
.button3.Location
=
new
System.Drawing.Point(
8
,
32
);
this
.button3.Name
=
"
button3
"
;
this
.button3.TabIndex
=
2
;
this
.button3.Text
=
"
加载doc
"
;
this
.button3.Click
+=
new
System.EventHandler(
this
.button3_Click);
//
//
button4
//
this
.button4.Location
=
new
System.Drawing.Point(
8
,
80
);
this
.button4.Name
=
"
button4
"
;
this
.button4.TabIndex
=
3
;
this
.button4.Text
=
"
加载xml
"
;
this
.button4.Click
+=
new
System.EventHandler(
this
.button4_Click);
//
//
Form1
//
this
.AutoScaleBaseSize
=
new
System.Drawing.Size(
6
,
14
);
this
.ClientSize
=
new
System.Drawing.Size(
184
,
141
);
this
.Controls.Add(
this
.button4);
this
.Controls.Add(
this
.button3);
this
.Controls.Add(
this
.button2);
this
.Controls.Add(
this
.button1);
this
.Name
=
"
Form1
"
;
this
.Text
=
"
Form1
"
;
this
.ResumeLayout(
false
);
//
//
手工注册一下Load和Closed事件
//
this
.Load
+=
new
System.EventHandler(
this
.Form1_Load);
this
.Closed
+=
new
System.EventHandler(
this
.Form1_Closed);
}
#endregion
/**/
///
<summary>
///
从这个入口启动窗体
///
</summary>
static
void
Main()
{
Application.Run(
new
Form1());
}
/**/
///
<summary>
///
把加载的Office文件转换为xml文件
///
</summary>
///
<param name="sender"></param>
///
<param name="e"></param>
private
void
button1_Click(
object
sender, System.EventArgs e)
{
saveFileDialog1.Filter
=
"
xml 文件|*.xml
"
;
//
设置打开对话框的文件过滤条件
saveFileDialog1.Title
=
"
保存成 xml 文件
"
;
//
设置打开对话框的标题
saveFileDialog1.FileName
=
""
;
saveFileDialog1.ShowDialog();
//
打开对话框
if
(saveFileDialog1.FileName
!=
""
)
//
检测用户是否输入了保存文件名
{
mXmlDoc.Save(saveFileDialog1.FileName);
//
用私有对象mXmlDoc保存文件,mXmlDoc在前面声明过
MessageBox.Show(
"
保存成功
"
);
}
}
/**/
///
<summary>
///
把加载的xml文件转换为Office文件
///
</summary>
///
<param name="sender"></param>
///
<param name="e"></param>
private
void
button2_Click(
object
sender, System.EventArgs e)
{
//
从私有对象dox里选取me节点,这里的一些对xml对象的操作详细说明可以参考msdn以获取更多信息
XmlNode node
=
doc.DocumentElement .SelectSingleNode(
"
me
"
) ;
XmlElement ele
=
(XmlElement)node;
//
获取一个xml元素
string
pic
=
ele.GetAttribute (
"
aa
"
);
//
获取ele元素的aa属性并报讯在一个临时字符串变量pic
byte
[] bytes
=
Convert.FromBase64String (pic);
//
声明一个byte[]用来存放Base64解码转换过来的数据流
//
从保存对话框里获取文件保存地址
saveFileDialog1.Filter
=
"
Office Documents(*.doc, *.xls, *.ppt)|*.doc;*.xls;*.ppt
"
;
saveFileDialog1.Title
=
"
保存成 office 文件
"
;
saveFileDialog1.FileName
=
""
;
saveFileDialog1.ShowDialog();
if
(saveFileDialog1.FileName
!=
""
)
{
//
创建文件流并保存
FileStream outfile
=
new
System.IO .FileStream (saveFileDialog1.FileName,System.IO.FileMode.CreateNew);
outfile.Write(bytes,
0
,(
int
)bytes.Length );
MessageBox.Show(
"
保存成功
"
);
}
}
/**/
///
<summary>
///
加载窗口时的一些初始化行为
///
</summary>
///
<param name="sender"></param>
///
<param name="e"></param>
public
void
Form1_Load(
object
sender, System.EventArgs e)
{
MessageBox.Show(
"
欢迎使用蛙蛙牌文档转换器
"
);
}
/**/
///
<summary>
///
卸载窗体时把临时变量全部释放
///
</summary>
///
<param name="sender"></param>
///
<param name="e"></param>
public
void
Form1_Closed(
object
sender, System.EventArgs e)
{
mXmlDoc
=
null
;
doc
=
null
;
}
/**/
///
<summary>
///
加载office文件并编码序列花为一个XmlDocument变量
///
</summary>
///
<param name="sender"></param>
///
<param name="e"></param>
private
void
button3_Click(
object
sender, System.EventArgs e)
{
string
strFileName;
openFileDialog1.Filter
=
"
Office Documents(*.doc, *.xls, *.ppt)|*.doc;*.xls;*.ppt
"
;
openFileDialog1.FilterIndex
=
1
;
openFileDialog1.FileName
=
""
;
openFileDialog1.ShowDialog();
strFileName
=
openFileDialog1.FileName;
if
(strFileName.Length
!=
0
)
{
System.IO.FileStream inFile
=
new
FileStream(strFileName,System.IO.FileMode.Open,System.IO.FileAccess.Read);
byte
[] binaryData
=
new
byte
[inFile.Length];
inFile.Read(binaryData,
0
,(
int
)inFile.Length);
string
mStr
=
Convert.ToBase64String(binaryData);
string
hh
=
mStr;
mXmlDoc
=
new
System.Xml.XmlDocument();
mStr
=
string
.Format (
"
<wawa><me aa=\
"
{
0
}
\
"
/></wawa>
"
,mStr);
mXmlDoc.LoadXml( mStr);
MessageBox.Show(
"
加载成功
"
);
}
}
/**/
///
<summary>
///
加载xml文件到私有对象dox
///
</summary>
///
<param name="sender"></param>
///
<param name="e"></param>
private
void
button4_Click(
object
sender, System.EventArgs e)
{
string
strFileName;
openFileDialog1.Filter
=
"
xml 文件|*.xml
"
;
openFileDialog1.FilterIndex
=
1
;
openFileDialog1.FileName
=
""
;
openFileDialog1.ShowDialog();
strFileName
=
openFileDialog1.FileName;
//
If the user does not cancel, open the document.
if
(strFileName.Length
!=
0
)
{
doc
=
new
XmlDocument();
doc.Load(strFileName);
MessageBox.Show(
"
加载成功
"
);
}
}
}
}
posted on 2006-12-18 14:06
仰天一笑
阅读(760)
评论(1)
编辑
收藏
网摘
所属分类:
Javascript/Ajax/XML
新用户注册
刷新评论列表
标题
姓名
主页
Email
(博主才能看到)
验证码
*
看不清,换一张
[
登录
][
注册
]
内容(请不要发表任何与政治相关的内容)
网站首页
新闻频道
社区
小组
博问
网摘
闪存
找找看
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索
相关文章:
不可多得的Javascript(AJAX)开发工具 - Aptana
在ASP.NET中使用无框架的Ajax事例
把Membership,Role包装为WCF服务
C#下如何实现服务器+客户端的聊天程序
关于XML序列化
怎么用DOM创建一个XML文件
微软Ajax在ie6中会内存泄露?
Ajax + 执行完后执行客户端脚本 的问题?
相关链接:
所属分类的其他文章:
iis权限设置
批量生成虚拟目录
取得当前鼠标的X,Y坐标
uri和url的定义及关系
HTML 组件
关键字加亮--JS方法
html页面中嵌入html页面
location用法简单介绍
DIV+CSS三行两列经典布局
javascript实现datagrid客户端checkbox列的全选,反选
最新IT新闻:
OpenOffice.org 3.0.0发布
Linux终于迎来了“同等”的Flash播放器
百度和讯全财经网正式上线
微软将于明天召开Blue Hat安全大会
超强的支付宝Flash招聘广告
公告
一、版权归原创作者所有。
二、坚持挖掘互联网宝藏。
三、重在技术交流,共享知识。
四、技术文章包括asp.net、seo、ajax、css、javascript等。
Email:ansonxy@gmail.com
MSN:dingxi819@yahoo.com.cn
与我联系
发短消息
搜索
常用链接
我的随笔
我的空间
我的短信
我的评论
更多链接
我的参与
我的新闻
最新评论
我的标签
留言簿
(17)
给我留言
查看留言
我参与的团队
上海.NET俱乐部(0/2254)
Ajax&Atlas技术团队(0/1138)
.net企业应用开发(0/141)
我的标签
火车站售票点
(1)
上海火车站售票点
(1)
上海火车票预定送票公司
(1)
一票难求
(1)
海量查询
(1)
无限分级
(1)
树形结构数据查询
(1)
datatable
(1)
dataview
(1)
datatable和dataview
(1)
更多
随笔分类
(258)
ASP.Net-C#(75)
(rss)
DataBase(27)
(rss)
Javascript/Ajax/XML(48)
(rss)
产品专卖(4)
(rss)
古风古韵(10)
(rss)
谈天论地(30)
(rss)
网站建设(27)
(rss)
原创天地(37)
(rss)
文章分类
(27)
DotNet(12)
(rss)
DRM(5)
(rss)
Electronic Commerce(2)
(rss)
JavaScript(3)
(rss)
software engineering (5)
(rss)
相册
汇亚创意设计
上海汇亚科技公司
收藏夹
(200)
.Text(11)
(rss)
ADO.Net(4)
(rss)
Ajax/XML(10)
(rss)
ASP.Net(53)
(rss)
C#(6)
(rss)
DataBase(5)
(rss)
DataGrid(12)
(rss)
Html/Css(6)