设为首页
加入收藏
联系我们
首页 基础教程 技术文档 实例分析 数 据 库 疑难杂症 ASP.NET 七夕许愿树 技术论坛
最新文章
  .NET上传图片加文字…
 在vs.net bate…
 C#中利用正则表达式实现…
 Visual C#的SQ…
 关于使用存储过程创建分页
 通用分页显示查询存储过程
 大数据量的分页
 什么是web.confi…
 ASP.NET 配置文件…
 对“三层结构”的深入理解…
 多个关键字的查询问题
 VB和C# 语法对比图 …
 C#基础全接触
 用C#压缩和修复Acce…
 C#中的类型相等与恒等(…
推荐文章
 关于C#中的REF和黓认…
 读书笔记c#高级编程 委…
 【算法】C#快速排序类
 Visual C#的SQ…
 C#中调用API
 Infragistics…
 C#接口转换
 C#读取设备信息
 用.net操作word
 C# MessageBo…
 Visual C#中的数…
 雅虎公司C#笔试题,看看…
 C#.NET使用NHib…
 .net学习之运算符重载…
 Visual C# 3.…
热门文章
 ADO.Net与ADO在…
 开发ASP.NET下的M…
 用C#+XMI技术进行U…
 什么是虚拟机?
 C#基础全接触
 C#中利用正则表达式实现…
 雅虎公司C#笔试题,看看…
 用Visual C# 2…
 C#学习第一天
 C#语言初级入门(1)
 VB和C# 语法对比图 …
 远程重启计算机(C#)
 什么是B/S三层?
 Visual C#的SQ…
 Visual C#常用函…
用C#实现把Office文件编码为xml的方法
阅读正文 文字大小:增大 减小  文字行距:增大 减小   双击自动滚屏
本文由中国C#技术学习中心整理  如果你对本文有不明之处请到技术论坛讨论!

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);
        }
        #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.Po
            int( 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.Po
            int( 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.Po
            int( 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.Po
            int( 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( "加载成功" );
            }
        }
    }
}

本文由中国C#技术学习中心整理  如果你对本文有不明之处请到技术论坛讨论!

中国C#技术交流QQ群:6337034  10976424  9383681  35248582  35248645
版权所有:中国C#技术学习中心 Copyright © 20010-20012
建议浏览分辨率使用:1024*768分辨率
粤ICP备05002251号