2个回答
展开全部
C#读取word内容的操作是我们在开发中经常会遇到的问题,那么如何C#读取word内容的操作呢?那么这里向你介绍了7个方面,希望对你有所帮助。
C#读取word内容1:
对项目添加引用,Microsoft Word 11.0 Object Library
C#读取word内容2:
在程序中添加
using Word = Microsoft.Office.Interop.Word;
C#读取word内容3:
程序中添加
Word.Application app =
new Microsoft.Office.Interop.Word.Application(); //可以打开word程序
Word.Document doc = null; //一会要记录word打开的文档
word文档和word程序可不是一回事奥!
C#读取word内容4:
一般来说,对于抽取word内容,用的方法很少
public override void openFile(object fileName){} //打开文档
public override object readPar(int i){} //读取word文档的第i段
public override int getParCount(){} //返回word文档一共几段
public override void closeFile(){} //关闭文档
public override void quit(){} //关闭word程序
//从网页上拷贝的目录有时候会出现手动换行符^l,,
先将其换成回车段落标记,才能正确读取
public void replaceChar(){}
C#读取word内容5:代码
public override void openFile(object fileName)
...{
try
...{
if (app.Documents.Count > 0)
...{
if (MessageBox.Show(
"已经打开了一个word文档,
你想关闭重新打开该文档吗?", "提示",
MessageBoxButtons.YesNo) == DialogResult.Yes)
...{
object unknow = Type.Missing;
doc = app.ActiveDocument;
if (MessageBox.Show(
"你想保存吗?", "保存",
MessageBoxButtons.YesNo) == DialogResult.Yes)
...{
app.ActiveDocument.Save();
}
app.ActiveDocument.Close(ref unknow, ref unknow, ref unknow);
app.Visible = false;
}
else
...{
return;
}
}
}
catch (Exception)
...{
//MessageBox.Show("您可能关闭了文档");
app = new Microsoft.Office.Interop.Word.Application();
}
try
...{
object unknow = Type.Missing;
app.Visible = true;
doc = app.Documents.Open(ref fileName,
ref unknow, ref unknow, ref unknow, ref unknow, ref unknow,
ref unknow, ref unknow, ref unknow, ref unknow, ref unknow,
ref unknow, ref unknow, ref unknow, ref unknow, ref unknow);
}
catch (Exception ex)
...{
MessageBox.Show("出现错误:" + ex.ToString());
}
}
public override object readPar(int i)
...{
try
...{
string temp = doc.Paragraphs[i].Range.Text.Trim();
return temp;
}
catch (Exception e) ...{
MessageBox.Show("Error:"+e.ToString());
return null;
}
}
public override int getParCount()
...{
return doc.Paragraphs.Count;
}
public override void closeFile()
...{
try
...{
object unknow = Type.Missing;
object saveChanges = Word.WdSaveOptions.wdPromptToSaveChanges;
app.ActiveDocument.Close(
ref saveChanges, ref unknow, ref unknow);
}
catch (Exception ex)
...{
MessageBox.Show("Error:" + ex.ToString());
}
}
public override void quit()
...{
try
...{
object unknow = Type.Missing;
object saveChanges = Word.WdSaveOptions.wdSaveChanges;
app.Quit(ref saveChanges, ref unknow, ref unknow);
}
catch (Exception)
...{
}
}
public void replaceChar() ...{
try
...{
object replaceAll = Word.WdReplace.wdReplaceAll;
object missing = Type.Missing;
app.Selection.Find.ClearFormatting();
app.Selection.Find.Text = "^l";
app.Selection.Find.Replacement.ClearFormatting();
app.Selection.Find.Replacement.Text = "^p";
app.Selection.Find.Execute(
ref missing, ref missing,
ref missing, ref missing, ref missing,
ref missing, ref missing,
ref missing, ref missing, ref missing,
ref replaceAll, ref missing,
ref missing, ref missing, ref missing);
}
catch (Exception e)
...{
MessageBox.Show("文档出现错误,请重新操作");
}
}
C#读取word内容6:
刚才是用读取一段做的例子,如果要读取一句或一篇只需要把doc.Paragraphs[i](readPar中)改成doc.Sentences[i]或doc.content即可,因为都是微软的东东,所以用起来没有一点的障碍,再加上现在的vs2005做的很智能,所以先从java转到了c#上
C#读取word内容7:
实际上,C#读取word内容是不用那么麻烦的,但是如果考虑到可能还要抽取txt,ppt等多种格式,所以就写了一个抽象类,调用起来也方便,这就是为什么我的程序方法开头会有override的原因,总要考虑到通用,所以多了一些代码。
C#读取word内容的基本内容就向你介绍到这里,希望对你了解和学习操作C#读取word内容有所帮助。
C#读取word内容1:
对项目添加引用,Microsoft Word 11.0 Object Library
C#读取word内容2:
在程序中添加
using Word = Microsoft.Office.Interop.Word;
C#读取word内容3:
程序中添加
Word.Application app =
new Microsoft.Office.Interop.Word.Application(); //可以打开word程序
Word.Document doc = null; //一会要记录word打开的文档
word文档和word程序可不是一回事奥!
C#读取word内容4:
一般来说,对于抽取word内容,用的方法很少
public override void openFile(object fileName){} //打开文档
public override object readPar(int i){} //读取word文档的第i段
public override int getParCount(){} //返回word文档一共几段
public override void closeFile(){} //关闭文档
public override void quit(){} //关闭word程序
//从网页上拷贝的目录有时候会出现手动换行符^l,,
先将其换成回车段落标记,才能正确读取
public void replaceChar(){}
C#读取word内容5:代码
public override void openFile(object fileName)
...{
try
...{
if (app.Documents.Count > 0)
...{
if (MessageBox.Show(
"已经打开了一个word文档,
你想关闭重新打开该文档吗?", "提示",
MessageBoxButtons.YesNo) == DialogResult.Yes)
...{
object unknow = Type.Missing;
doc = app.ActiveDocument;
if (MessageBox.Show(
"你想保存吗?", "保存",
MessageBoxButtons.YesNo) == DialogResult.Yes)
...{
app.ActiveDocument.Save();
}
app.ActiveDocument.Close(ref unknow, ref unknow, ref unknow);
app.Visible = false;
}
else
...{
return;
}
}
}
catch (Exception)
...{
//MessageBox.Show("您可能关闭了文档");
app = new Microsoft.Office.Interop.Word.Application();
}
try
...{
object unknow = Type.Missing;
app.Visible = true;
doc = app.Documents.Open(ref fileName,
ref unknow, ref unknow, ref unknow, ref unknow, ref unknow,
ref unknow, ref unknow, ref unknow, ref unknow, ref unknow,
ref unknow, ref unknow, ref unknow, ref unknow, ref unknow);
}
catch (Exception ex)
...{
MessageBox.Show("出现错误:" + ex.ToString());
}
}
public override object readPar(int i)
...{
try
...{
string temp = doc.Paragraphs[i].Range.Text.Trim();
return temp;
}
catch (Exception e) ...{
MessageBox.Show("Error:"+e.ToString());
return null;
}
}
public override int getParCount()
...{
return doc.Paragraphs.Count;
}
public override void closeFile()
...{
try
...{
object unknow = Type.Missing;
object saveChanges = Word.WdSaveOptions.wdPromptToSaveChanges;
app.ActiveDocument.Close(
ref saveChanges, ref unknow, ref unknow);
}
catch (Exception ex)
...{
MessageBox.Show("Error:" + ex.ToString());
}
}
public override void quit()
...{
try
...{
object unknow = Type.Missing;
object saveChanges = Word.WdSaveOptions.wdSaveChanges;
app.Quit(ref saveChanges, ref unknow, ref unknow);
}
catch (Exception)
...{
}
}
public void replaceChar() ...{
try
...{
object replaceAll = Word.WdReplace.wdReplaceAll;
object missing = Type.Missing;
app.Selection.Find.ClearFormatting();
app.Selection.Find.Text = "^l";
app.Selection.Find.Replacement.ClearFormatting();
app.Selection.Find.Replacement.Text = "^p";
app.Selection.Find.Execute(
ref missing, ref missing,
ref missing, ref missing, ref missing,
ref missing, ref missing,
ref missing, ref missing, ref missing,
ref replaceAll, ref missing,
ref missing, ref missing, ref missing);
}
catch (Exception e)
...{
MessageBox.Show("文档出现错误,请重新操作");
}
}
C#读取word内容6:
刚才是用读取一段做的例子,如果要读取一句或一篇只需要把doc.Paragraphs[i](readPar中)改成doc.Sentences[i]或doc.content即可,因为都是微软的东东,所以用起来没有一点的障碍,再加上现在的vs2005做的很智能,所以先从java转到了c#上
C#读取word内容7:
实际上,C#读取word内容是不用那么麻烦的,但是如果考虑到可能还要抽取txt,ppt等多种格式,所以就写了一个抽象类,调用起来也方便,这就是为什么我的程序方法开头会有override的原因,总要考虑到通用,所以多了一些代码。
C#读取word内容的基本内容就向你介绍到这里,希望对你了解和学习操作C#读取word内容有所帮助。
参考资料: http://www.knowsky.com/539597.html
展开全部
楼上说的都是利用word自动化技术做的,这种代码在asp.net的后台代码里运行问题多多哦:
1. 因为word是单机交互式程序,所以你必须给你的IIS进程模拟成administrator拥有桌面交互权的程序,好像在配置文件里要加个impersonate
否则你的代码运行不了。
2. 即使可以运行了,服务器端word自动化也会大量消耗服务器的内存等资源,运行缓慢,还经常会出现word死进程。微软官方文章声明不建议这样编程。
3. 你给IIS配置的帐号密码暴露在config文件里好像也不太安全
建议直接使用SOAOffice这个中间件产品,在网页里可以直接显示word文件,甚至还可以在线编辑保存、动态生成word报告等等
1. 因为word是单机交互式程序,所以你必须给你的IIS进程模拟成administrator拥有桌面交互权的程序,好像在配置文件里要加个impersonate
否则你的代码运行不了。
2. 即使可以运行了,服务器端word自动化也会大量消耗服务器的内存等资源,运行缓慢,还经常会出现word死进程。微软官方文章声明不建议这样编程。
3. 你给IIS配置的帐号密码暴露在config文件里好像也不太安全
建议直接使用SOAOffice这个中间件产品,在网页里可以直接显示word文件,甚至还可以在线编辑保存、动态生成word报告等等
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询