Doc To RTF

using System;
using System.IO;
using System.Windows.Forms;
using Word = Microsoft.Office.Interop.Word;

namespace WinFormWord
{
    public partial class FormWord : Form
    {
        #region
        private Button docButton;
        private RichTextBox richText;
        private OpenFileDialog openFile;
        private readonly string tempFilePath = Path.GetTempFileName();
        #endregion

        #region Form1
        public FormWord()
        {
            InitializeComponent();
            docButton = new Button();
            docButton.Dock = DockStyle.Top;
            docButton.Text = "读取Word文档(*.doc;*.docx)";
            docButton.Click += new EventHandler(docButton_Click);
            this.Controls.Add(docButton);
            richText = new RichTextBox();
            richText.AllowDrop = true;
            richText.Dock = DockStyle.Fill;
            richText.DragEnter += new DragEventHandler(richText_DragEnter);
            this.Controls.Add(richText);
            richText.BringToFront();
            openFile = new OpenFileDialog();
            openFile.Filter = "Word 文档(*.doc;*.docx)|*.doc;*.docx";
            this.StartPosition = FormStartPosition.WindowsDefaultBounds;
        }
        #endregion

        #region richText_DragEnter
        private void richText_DragEnter(object sender, DragEventArgs e)
        {
            DataObject newData = e.Data as DataObject;
            if (richText.EnableAutoDragDrop = !newData.ContainsFileDropList())
                return;
            string filePath = newData.GetFileDropList()[0];
            if (Path.GetExtension(filePath).ToLowerInvariant().Contains(".doc"))
                DocToRTF(filePath);
        }
        #endregion

        #region DocToRTF
        private void DocToRTF(string filePath)
        {
            Word.Application newWord = new Word.Application();
            try
            {
                newWord.Visible = false;
                object readOnly = true;
                object fileName = filePath;
                object missing = Type.Missing;
                Word.Document doc = newWord.Documents.Open(ref fileName, ref missing, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
                fileName = tempFilePath;
                object format = Word.WdSaveFormat.wdFormatRTF;
                doc.SaveAs(ref fileName, ref format, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
                doc.Close(ref missing, ref missing, ref missing);
                newWord.Quit(ref missing, ref missing, ref missing);
                richText.LoadFile(tempFilePath);
                this.Text = Path.GetFileName(filePath);
            }
            catch (Exception se)
            {
                MessageBox.Show(this, se.Message, "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            finally
            {
                newWord = null;
                GC.Collect();
            }
        }
        #endregion

        #region docButton_Click
        private void docButton_Click(object sender, EventArgs e)
        {
            if (openFile.ShowDialog(this) == DialogResult.OK)
                DocToRTF(openFile.FileName);
        }
        #endregion

        #region OnFormClosing
        protected override void OnFormClosing(FormClosingEventArgs e)
        {
            base.OnFormClosing(e);
            File.Delete(tempFilePath);
        }
        #endregion
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值