C# 将Word文档格式转化成写字板格式

本文介绍了一个使用C#编写的简单Windows窗体应用程序,该程序能够读取并显示.doc和.docx格式的Word文档内容。通过将Word文档转换为RTF格式,应用程序能够在RichTextBox中显示文档的文字和基本格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值