C#如何根据WORD的标题样式获取相关文字(如获取WORD中所有"标题1" 样式的内容)

flyword2008 2010-09-21 04:25:43
最近用VS.NET2005 C#做 类RP 工具,需要根据word的样式批量获取文档中对应的内容,
遇到了下面两个问题,请各位指导一下
1、获取WORD中所有"标题1" 样式的内容
2、如何获取WORD中所有标题的样式
...全文
1622 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
newton8409 2011-06-08
  • 打赏
  • 举报
回复
顶啊!!!同求!!
灵儿 2011-05-10
  • 打赏
  • 举报
回复
顶啊!!!同求!!
zjj54180 2011-03-22
  • 打赏
  • 举报
回复
我也在求此答案!!!!
  • 打赏
  • 举报
回复
碰到类似的问题了,同求啊~~~~~~~~~~~~~
flyword2008 2010-09-25
  • 打赏
  • 举报
回复
感谢各位的关注:
小弟用的WORD.DLL,想实现两个功能
1、根据样式获取WORD文档中所有该样式的内容,例如:获取WORD中所有"标题1" 或"标题2" 样式的内容
2、获取WORD中所有 "有效样式" 信息 例如:标题、标题1、标题2、标题3、标题4等等
flyword2008 2010-09-25
  • 打赏
  • 举报
回复
顶一下
robbish 2010-09-21
  • 打赏
  • 举报
回复
三楼虽然贴了代码,但是和问题无关,目前我也需要整个类似的东西出来:就是把一个word文档中的各级标题提取出来作为树状节点,然后点击出现对应的内容。思考后有点头绪,C#中可以用TablesOfContents.Add做出目录来,那么也就是所说的各级标题(当然可以设定目录深度,如楼主要求只要一级标题那就简单多了,那第一个问题就解决了)。另外,第二个问题不知道理解是否正确,是要提取出样式中的字体,大小,斜体……这些信息吗?如果是的话,我还没思路。我用的Aspose.words控件,没用微软的WORD.DLL。如果楼主也用Aspose.words的话,可以交流下。里面用的是builder.ParagraphFormat.StyleIdentifier = StyleIdentifier.Heading1类似的语句可以提出各级标题来,希望上面的信息对你有帮助。
flyword2008 2010-09-21
  • 打赏
  • 举报
回复
弄了一天了,还没头绪 呵呵
v6hacker 2010-09-21
  • 打赏
  • 举报
回复
支持一下~~
fangxiaofelix 2010-09-21
  • 打赏
  • 举报
回复
这篇文章可能会对你有帮助C# word控件编程
http://www.taian-seo.com/it/csharp_word.html

另附操作word

1 对项目添加引用,Microsoft Word 11.0 Object Library
2 程序中添加引用
using Word = Microsoft.Office.Interop.Word;
3 程序中添加
static Word.Application app = new Microsoft.Office.Interop.Word.Application();
//可以打开word程序
static Word.Document doc = null;
//一会要记录word打开的文档
4 程序中添加以下
C# code
static public void openFile(object fileName)
{
try
{
if (app.Documents.Count > 0)
{
object unknow = Type.Missing;
doc = app.ActiveDocument;
app.Visible = false;
app.ActiveDocument.Close(ref unknow,ref unknow,ref unknow);

}
}
catch (Exception)
{
//MessageBox.Show("您可能关闭了文档");
Microsoft.Office.Interop.Word.ApplicationClass app;
app = new Word.ApplicationClass();
}

try
{
object unknow = Type.Missing;
app.Visible = false;
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)
{
Console.WriteLine("出现错误:" + ex.ToString());
}

}
static public object readPar(int i)
{
try
{
string temp = doc.Paragraphs[i].Range.Text.Trim();
return temp;
}
catch (Exception e)
{
Console.WriteLine("Error:" + e.ToString());
return null;
}
}

static public int getParCount()
{
return doc.Paragraphs.Count;
}

static public void closeFile()
{
try
{
object unknow = Type.Missing;
object saveChanges = Word.WdSaveOptions.wdPromptToSaveChanges;
app.ActiveDocument.Close(ref saveChanges, ref unknow, ref unknow);
}
catch (Exception ex)
{
Console.WriteLine("Error:" + ex.ToString());
}
}

static public void quit()
{
try
{
object unknow = Type.Missing;
object saveChanges = Word.WdSaveOptions.wdSaveChanges;
app.Quit(ref saveChanges, ref unknow, ref unknow);
}
catch (Exception)
{

}
}

static 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)
{
Console.WriteLine("文档出现错误,请重新操作");
}
}



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程序

flyword2008 2010-09-21
  • 打赏
  • 举报
回复
自己顶一下

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧