您好
如何读取已建好word目录内容,谢谢!
Document doc = new Document(@"微软创建TOC.docx");
//定义list
List<string> content = new List<string>();
foreach (Section sec in doc.Sections)
{
//遍历body下面所有对象
foreach (DocumentObject obj in sec.Body.ChildObjects)
{
//查找控件对象以TOC获取内容
if (obj is StructureDocumentTag)
{
StructureDocumentTag sdt = obj as StructureDocumentTag;
//遍历控件下所有对象
foreach (DocumentObject sdtobj in sdt.ChildObjects)
{
if (sdtobj is Paragraph)
{
//添加内容到list
Paragraph p = sdtobj as Paragraph;
content.Add(p.Text);
}
}
}
}
}
Document doc = new Document();
doc.LoadFromFile(@"Spire创建TOC.docx", Spire.Doc.FileFormat.Docx2013);
//定义list
List<string> content = new List<string>();
foreach (Section section in doc.Sections)
{
//遍历body下面所有对象
foreach (DocumentObject obj in section.Body.ChildObjects)
{
if(obj is Paragraph)
{
Paragraph para=obj as Paragraph;
//查找含有TOC域的段落
foreach (DocumentObject tr in para.ChildObjects)
{
if (tr.DocumentObjectType == DocumentObjectType.TOC || tr.DocumentObjectType == DocumentObjectType.Field)
{
//添加内容到list
content.Add(para.Text);
break;
}
}
}
}
}
static void Main(string[] args)
{
Document doc = new Document();
doc.LoadFromFile("目录.docx");
foreach (Section section in doc.Sections)
{
//遍历body下面所有对象
foreach (DocumentObject obj in section.Body.ChildObjects)
{
if (obj is Paragraph)
{
Paragraph para = obj as Paragraph;
//通过样式名来确定是否是目录文本
switch(para.StyleName){
//一级标题
case "TOC1":
ChangeFont(para, "黑体", 14);
break;
//二级标题
case "TOC2":
ChangeFont(para, "黑体", 12);
break;
//三级标题
case "TOC3":
ChangeFont(para, "黑体", 10);
break;
//其余级别类推
}
}
}
}
doc.SaveToFile("结果.docx", FileFormat.Docx);
}
public static void ChangeFont(Paragraph para, string fontName, int fontSize)
{
foreach (DocumentObject obj in para.ChildObjects)
{
//如果对象类型为TextRange
if (obj.DocumentObjectType == DocumentObjectType.TextRange)
{
TextRange tr = (TextRange)obj;
//更改字体和文字大小
tr.CharacterFormat.FontName = fontName;
tr.CharacterFormat.FontSize = fontSize;
}
}
}
Document doc = new Document("微软创建.docx");
List<String> content = new ArrayList<>();
for (Section sec : (Iterable<? extends Section>) doc.getSections()) {
//遍历body下面所有对象
for (DocumentObject obj : (Iterable<? extends DocumentObject>) sec.getBody().getChildObjects()) {
//查找控件对象以TOC获取内容
if (obj instanceof StructureDocumentTag) {
StructureDocumentTag sdt = (StructureDocumentTag) obj;
//遍历控件下所有对象
for (DocumentObject sdtobj : (Iterable<? extends DocumentObject>) sdt.getChildObjects()) {
if (sdtobj instanceof Paragraph) {
//添加内容到list
Paragraph p = (Paragraph) sdtobj;
content.add(p.getText());
}
}
}
}
}
Document doc = new Document();
doc.loadFromFile("Spire创建.docx");
List<String> content = new ArrayList<>();
for (Section sec : (Iterable<? extends Section>) doc.getSections()) {
//遍历body下面所有对象
for (DocumentObject obj : (Iterable<? extends DocumentObject>) sec.getBody().getChildObjects()) {
if (obj instanceof Paragraph) {
Paragraph para = (Paragraph) obj;
//查找含有TOC域的段落
for (DocumentObject tr : (Iterable<? extends DocumentObject>) para.getChildObjects()) {
if (tr.getDocumentObjectType() == DocumentObjectType.TOC || tr.getDocumentObjectType() == DocumentObjectType.Field) {
//添加内容到list
content.add(para.getText());
System.out.println(para.getText());
break;
}
}
}
}
}
Document document = new Document();
document.loadFromFile("file/test.docx");
//查找关键字
TextSelection[] textSelections = document.findAllString("Spire.Doc", true, false);
for (TextSelection selection : textSelections) {
//获取关键字所在段落和节
Paragraph ownerPara = (Paragraph)selection.getAsOneRange().getOwner();
Section ownerSection = (Section)ownerPara.getOwner().getOwner();
}