日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

toc如何判断 word_c#使用DocX给word添加目录TOC

發布時間:2024/3/12 C# 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 toc如何判断 word_c#使用DocX给word添加目录TOC 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

剛要做目錄的時候,我就想DocX應該提供了這個方面的函數。于是我就在討論區搜索,看看別人是怎么用的。

我搜索了catalog; catalogue; list; contents;,但是都沒有和目錄有關的東西,搞得我以為沒提供,于是就又各種搜索,什么list之類的,搜著搜著就找到了一篇。

說是需要下載一個patch,但是不造在哪。還有的提供了利用其他的xml布局來幫助生成目錄的。這些都不用管了,我用的是在DocX.cs里的源碼里直接修改下的好方法。

抄錄如下:

Hello together,

i'm sorry, i didn't like your solution proposals as I use docx to not have a need to include the open sdk. (But it took me to this solution 95% of the way, so thanks!)

I found out DocX can actually do that easily with just a few minor changes to the code.

To accomplish that goal add the following lines to DocX.cs into the class:

///

/// Activate Updating Fields on

Open

///

public void

UpdateFieldsOnOpen()

{

XElement element = new

XElement(XName.Get("updateFields", DocX.w.NamespaceName));

element.Add(new

XAttribute(XName.Get("val", DocX.w.NamespaceName),

"true"));

settings.Root.AddFirst(element);

}

Finally you need to

modify the save process slightly because docx reloads the settings part

directly before saving the document.

// Comment out or

remove those lines:

-??????????? using (TextReader tr = new

StreamReader(settingsPart.GetStream()))

-??????????????? settings =

XDocument.Load(tr);

// Insert this instead:

+??????????? if (settings == null

)

+??????????? {

+??????????????? using (TextReader tr =

new StreamReader(settingsPart.GetStream()))

+??????????????????? settings =

XDocument.Load(tr);

+??????????? }

Use these lines to

use the new option:

docx.UpdateFieldsOnOpen();

docx.Save();

As a

result, word will tell you that some fields need updating when you open the

document.

Well

after you bypassed that new preview mode that they put into word to complicate

usage. Which i know everybody at my workplace loves very much.

It

works on my computer :).

I

hope it will help YOU ALL TOO since you are great people that deserve TOCs.

Best regards,

shoff

如上所述,就是在DocX.cs的源代碼里改一下,在代碼末尾添加

1 ///

2 /// Activate Updating Fields on Open

3 ///

4 publicvoidUpdateFieldsOnOpen()

5 {

6 XElement

element = newXElement(XName.Get("updateFields", DocX.w.NamespaceName));

7 element.Add(new

XAttribute(XName.Get("val", DocX.w.NamespaceName), "true"));

8

9 settings.Root.AddFirst(element);

10 }

然后再修改下保存的函數save(),

1

2 //using (TextReader tr = new

StreamReader(settingsPart.GetStream()))

3 // settings = XDocument.Load(tr);

4 if(settings == null)

5 {

6 using(TextReader tr = newStreamReader(settingsPart.GetStream()))

7 settings

= XDocument.Load(tr);

8 }

把原本是注釋里的代碼改成現在的樣子。

然后重新生成下DocX.dll。

在使用的時候自己添加個函數

1 public staticvoidupdate(string docx)

2 {

3 using(DocX document =

DocX.Load(docx))

4 {

5 document.UpdateFieldsOnOpen();

6 document.Save();

7 }

8

9 }

讓文檔在打開的時候自動更新目錄域。

不過這樣的話你得首先有目錄,我用的辦法是新建一個word,給它加上目錄,然后創建新word的時候把這個的目錄頁給插入到新文檔里。

1 public staticvoidloadTOC(string s, stringpath, stringname)

2 {

3 if(!Directory.Exists(path))

4 {

5 Directory.CreateDirectory(path);

6 }

7 stringdocx = @path + "\\"+ name;

8 DocX

_template = DocX.Load(s);

9 DocX

_document = DocX.Create(docx);

10 _document.InsertDocument(_template);

11 _document.SaveAs(docx);

12 addNewpage(docx);

13

14 }

至此,目錄就可以正常使用了。每次打開就會提示更新域。

如上,結果今天一大早去翻看Example的時候,發現原來作者已經更新了,并且添加了操作目錄的代碼。使用起來也很簡單。

1 public staticvoidAddToc(string docx)

2 {

3

4 using(var document =

DocX.Load(docx))

5 {

6 document.InsertTableOfContents("目錄", TableOfContentsSwitches.O | TableOfContentsSwitches.U |

TableOfContentsSwitches.Z | TableOfContentsSwitches.H, "Heading2");

7 document.Save();

9 }

10 }

這樣就已經ok了,也不用修改什么代碼了,作用和之前的那個一樣。頓時心里一陣草泥馬奔騰而過。

提醒:多看example里的項目,有需求先在里面找。

總結

以上是生活随笔為你收集整理的toc如何判断 word_c#使用DocX给word添加目录TOC的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 锦绣未央在线观看 | 超碰777| 国产乱码在线 | 玖草在线 | 日本老年老熟无码 | 艳母免费在线观看 | 自拍一级片 | 九色丨蝌蚪丨成人 | 欧美大片免费观看网址 | 国产精品野外户外 | 青青草久久久 | 这里有精品视频 | 玖草在线观看 | 久久久区| 91在线免费看片 | 日本一级一片免费视频 | 日韩一区高清 | 成人做爰的视频 | 在线观看黄色 | 91丨porny丨尤物 | 日韩在线| 黄色性情网站 | 国产91福利 | 538任你躁在线精品免费 | 久久久久久久久久网 | 一级片av | av导航网| 精品无码久久久久久久久果冻 | 久久久精品一区 | 精品国产av无码一区二区三区 | 欧美精品免费一区二区 | 狂野欧美性猛交xxⅹ李丽珍 | av电影一区二区三区 | 嫩草免费视频 | 曰曰操 | 欧美综合一区二区三区 | 欧美极品少妇 | 波多野结衣一区二区三区免费视频 | 91黄色入口 | 黄床大片 | 国产精品国产三级国产aⅴ原创 | se综合| 禁漫天堂黄漫画无遮挡观看 | 亚洲综合在线视频 | 午夜视频免费看 | 成人欧美在线视频 | 欧美,日韩,国产在线 | 天堂国产一区二区三区 | 91香草视频 | 亚洲人体一区 | 麻豆高清免费国产一区 | 明星毛片| 1024手机在线观看 | 黄色国产免费 | 日韩免费 | 日韩精品高清在线观看 | 一级黄网 | 国产精品国产三级国产专区51 | 高清无码一区二区在线观看吞精 | 26uuu国产| 香蕉视频97 | 少妇无套高潮一二三区 | 亚洲欧美一区二区激情 | 色综合五月婷婷 | 日韩精品极品 | 秋霞免费av | 欧美激情999 | 在线观看少妇 | 国产中文自拍 | 日本在线观看a | av永久免费网站 | 国产成人综合亚洲 | 人人上人人干 | 日韩少妇av| 肥臀av| 亚洲一区电影 | 国产精品无码一区二区三区免费 | 真实的国产乱xxxx在线91 | 高清中文字幕mv的电影 | 日本白嫩的bbw | 久久yy| 波多野结衣乳巨码无在线 | av大全在线| 欧美精品二区三区四区免费看视频 | 日韩在线一二三区 | 国产精品国产 | 午夜精品久久久久久久99 | 色婷婷成人 | 91操人 | 神秘马戏团在线观看免费高清中文 | 国产男男chinese网站 | 久热免费视频 | 伊人久久大香线 | 国产人妖在线播放 | 最新日韩在线 | 欧美 日韩 国产 中文 | 91精品国产乱码在线观看 | 综合久久久久 | 日日噜噜夜夜狠狠久久丁香五月 |