C#读取doc文档,并将其显示在richTextBox里面? 如果我的程序引用了Word的COM,那么如果在一台没有安装对应版本的OFFICE的电脑上运行这个程序会不会报错呢?我们知道richTextBox只支持rtf和纯文本类型的文件。我想到Word是可以将doc文档保存成rtf文档的,但是不知道word是否提供了命令行功能,使我在程序里面可以通过调用命令完成这项工作呢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 说的应该是word的编程,或者excel 添加morcosoft word 12.0 object Library引用 //获得word文件的文本内容 public string Doc2Text(string docFileName) { //实例化COM Microsoft.Office.Interop.Word.ApplicationClass wordApp = new Microsoft.Office.Interop.Word.ApplicationClass(); object fileobj = docFileName; object nullobj = System.Reflection.Missing.Value; //打开指定文件(不同版本的COM参数个数有差异,一般而言除第一个外都用nullobj就行了) Microsoft.Office.Interop.Word.Document doc = wordApp.Documents.Open(ref fileobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj ); //取得doc文件中的文本 string outText = doc.Content.Text; //关闭文件 doc.Close(ref nullobj, ref nullobj, ref nullobj); //关闭COM wordApp.Quit(ref nullobj, ref nullobj, ref nullobj); //返回 return outText; } 参考C# WinForm开发系列 - Word将Word文档导入RichTextBox 程序里静态的引用了Word,运行时如果没有安装是会报错的。像这样的程序要求一定要安装相应版本的程序。可以考虑使用动态引用,这样可以通过代码来检测是否安装了程序,也可以做到版本兼容。参考下面代码:Type objWordType = Type.GetTypeFromProgID("Word.Application");object objWordApp = Activator.CreateInstance(objWordType);object objDocuments = objWordApp.GetType().InvokeMember("Documents", BindingFlags.GetProperty, null, objWordApp, null);object[] openParas ={ @"D:\Documents\my\test.doc" };object openDocument = objDocuments.GetType().InvokeMember("Open", BindingFlags.InvokeMethod, null, objDocuments, openParas);object[] pars = { true };objWordApp.GetType().InvokeMember("Visible", BindingFlags.SetProperty, null, objWordApp, pars); Microsoft.Office.Interop.Word.ApplicationClass wordApp = new Microsoft.Office.Interop.Word.ApplicationClass(); object fileobj = docFileName; object nullobj = System.Reflection.Missing.Value; //打开指定文件(不同版本的COM参数个数有差异,一般而言除第一个外都用nullobj就行了) Microsoft.Office.Interop.Word.Document doc = wordApp.Documents.Open(ref fileobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj ); object fileFormate = Word.WdSaveFormat.wdFormatRTF; curDoc.SaveAs(ref rtfSaveName, ref fileFormate, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref encoding, ref missing, ref missing, ref missing, ref missing); //关闭文件 doc.Close(ref nullobj, ref nullobj, ref nullobj); //关闭COM wordApp.Quit(ref nullobj, ref nullobj, ref nullobj); XNA。SpriteBatch.Begin 关于ADO.NET连接池的问题 产生n个随机数,且那个随机数和为定值? 如何一次执行多条select count(1) from mytable where conditon "指定的转换无效。"的问题 问个dataGridView显示树状表的问题 (救命呀)在数据库中怎么读image类型字段,里面是文字。 这是怎么回事? 大家有什么方法解决!! 求移动sso平台接入的例子 在c#.net中,如何读取xml中节点的值?急!! checkedlistbox 问题 C#简单内存问题
说的应该是word的编程,或者excel
//获得word文件的文本内容
public string Doc2Text(string docFileName)
{
//实例化COM
Microsoft.Office.Interop.Word.ApplicationClass wordApp = new Microsoft.Office.Interop.Word.ApplicationClass();
object fileobj = docFileName;
object nullobj = System.Reflection.Missing.Value;
//打开指定文件(不同版本的COM参数个数有差异,一般而言除第一个外都用nullobj就行了)
Microsoft.Office.Interop.Word.Document doc = wordApp.Documents.Open(ref fileobj, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj
);
//取得doc文件中的文本
string outText = doc.Content.Text;
//关闭文件
doc.Close(ref nullobj, ref nullobj, ref nullobj);
//关闭COM
wordApp.Quit(ref nullobj, ref nullobj, ref nullobj);
//返回
return outText;
}
将Word文档导入RichTextBox
可以考虑使用动态引用,这样可以通过代码来检测是否安装了程序,也可以做到版本兼容。参考下面代码:
Type objWordType = Type.GetTypeFromProgID("Word.Application");
object objWordApp = Activator.CreateInstance(objWordType);
object objDocuments = objWordApp.GetType().InvokeMember("Documents", BindingFlags.GetProperty, null, objWordApp, null);
object[] openParas ={ @"D:\Documents\my\test.doc" };
object openDocument = objDocuments.GetType().InvokeMember("Open", BindingFlags.InvokeMethod, null, objDocuments, openParas);
object[] pars = { true };
objWordApp.GetType().InvokeMember("Visible", BindingFlags.SetProperty, null, objWordApp, pars);
object fileobj = docFileName;
object nullobj = System.Reflection.Missing.Value;
//打开指定文件(不同版本的COM参数个数有差异,一般而言除第一个外都用nullobj就行了)
Microsoft.Office.Interop.Word.Document doc = wordApp.Documents.Open(ref fileobj, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj
);
object fileFormate = Word.WdSaveFormat.wdFormatRTF;
curDoc.SaveAs(ref rtfSaveName, ref fileFormate, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing, ref encoding, ref missing,
ref missing, ref missing, ref missing);
//关闭文件
doc.Close(ref nullobj, ref nullobj, ref nullobj);
//关闭COM
wordApp.Quit(ref nullobj, ref nullobj, ref nullobj);