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