日韩性视频-久久久蜜桃-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的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产精品av一区二区 | 中日韩在线视频 | 久草五月天 | 欧美在线观看a | 字幕网在线 | 亚洲高清视频一区二区 | 中文字幕在线观看视频网站 | 成人av影院在线观看 | 69精品| 久久亚洲免费视频 | 中文字幕一区二区三区日韩精品 | 手机av免费观看 | 亚洲欧美日韩在线一区 | 久久一区视频 | 久久精品丝袜 | 亚洲a成人 | 五月丁香综合激情六月久久 | 另类小说五月天 | 亚洲女女做受ⅹxx高潮 | 精品人妻一区二区三区日产乱码 | 二区在线播放 | 欧美精品在线视频 | 亚洲成人黄色在线 | 亚洲性欧美色 | 噜噜噜噜噜色 | 91av免费看 | 亚洲欧美日韩精品久久亚洲区 | 无码精品人妻一区二区三区湄公河 | 操伊人| 在线一区观看 | 制服下的诱惑暮生 | 九九国产| 欧美一级大片 | 久草资源在线播放 | 男女男精品视频站 | 国内自拍偷拍视频 | 久操视频在线观看 | 日韩少妇激情 | 欧美精品黑人猛交高潮 | 在线不卡免费av | 亚洲一区免费在线观看 | 色视频线观看在线播放 | 成人片在线视频 | 欧美大片黄色 | 欧美调教视频 | 一卡二卡在线观看 | 99在线免费视频 | 少妇喷白浆 | 丰满熟女人妻一区二区三区 | 中文久久久 | 三级视频在线观看 | 日韩久久免费 | 久久综合中文 | 91精品国产免费 | 国产精品国产精品国产专区不卡 | 黄色h视频| 99re视频在线播放 | 亚洲激情欧美色图 | 色香蕉影院 | 茄子视频懂你更多在线观看 | 中文字幕三级电影 | 乱色熟女综合一区二区三区 | 国产又粗又黄视频 | 欧美黑人又粗又大高潮喷水 | 怡红院av亚洲一区二区三区h | 91香蕉在线视频 | 浪浪视频在线观看 | 能看的av网站| 国产精品福利片 | 欧美日韩中文字幕一区二区 | 吊侵犯の奶水授乳羞羞漫画 | 久久久久久国产精品日本 | 一区二区在线免费视频 | 在线国产精品视频 | 色屁屁一区二区三区 | 国产二区精品视频 | 琪琪色在线观看 | 亚洲av无码乱码在线观看性色 | 亚洲伊人网站 | 毛片1000部免费看 | 成人xxxxx| 免费在线不卡av | 在线免费h| 在线国产小视频 | 老司机黄色片 | 久久久久草 | 色久av | 无码人妻精品一区二区三区夜夜嗨 | 日韩一区二区三区不卡 | 大又大又粗又硬又爽少妇毛片 | 欧美日韩a级 | 亚洲一区二区中文 | 91在线视频网址 | 午夜男人天堂 | 男人天堂你懂的 | 国内精品小视频 | 日韩理论片在线观看 | 成人毛片18女人毛片 | 精品人妻一区二区三区日产乱码 |