精华内容
下载资源
问答
  • Word文档中添加目录Word文档中提取目录 更新Word文档中的目录 从Word文档中删除目录 Aspose.Words for C ++ 是本机C ++库,允许您创建,读取,修改和转换Microsoft Word文档。此外,它还

    目录(TOC)是Word文档的重要组成部分。它提供了文档内容的概述,并允许您快速导航到所需的部分。您可能会遇到需要以编程方式从Word文档中添加,提取,更新或删除目录的情况。为此,本文将教您如何使用C ++处理Word文件中的目录。

    让我们探索以下有关的内容:

    • 在Word文档中添加目录
    • 从Word文档中提取目录
    • 更新Word文档中的目录
    • 从Word文档中删除目录

    Aspose.Words for C ++ 是本机C ++库,允许您创建,读取,修改和转换Microsoft Word文档。此外,它还支持使用Word文件中的目录。

    >>你可以这里下载Aspose.Words for C ++ 最新版测试体验。


    在Word文档中添加目录

    以下是在Word文档中添加目录的步骤。

    • 使用Document 类加载Word文件 。
    • 使用先前创建的Document对象创建DocumentBuilder类的实例 。
    • 使用DocumentBuilder-> InsertTableOfContents(System :: String开关)方法插入目录。
    • 使用Document-> UpdateFields()方法填充目录。
    • 使用Document-> Save(System :: String fileName)方法保存Word文档。

    下面的示例代码显示了如何使用C ++在Word文档中添加目录。

    // Source and output directory paths.
    System::String sourceDataDir = u"SourceDirectory\\";
    System::String outputDataDir = u"OutputDirectory\\";
    
    // Load the Word file
    System::SharedPtrdoc = System::MakeObject(sourceDataDir + u"Sample 5.docx");
    
    // Create an instance of the DocumentBuilder class
    System::SharedPtrbuilder = System::MakeObject(doc);
    
    // Insert a table of contents at the beginning of the document.
    builder->InsertTableOfContents(u"\\o \"1-3\" \\h \\z \\u");
    
    // The newly inserted table of contents will be initially empty.
    // It needs to be populated by updating the fields in the document.
    doc->UpdateFields();
    
    // Output file path
    System::String outputPath = outputDataDir + u"AddTOC.docx";
    
    // Save the Word file
    doc->Save(outputPath);

    Word开发工具Aspose.Words功能演示:使用C ++在Word文档中使用目录

    从Word文档中提取目录

    以下是从Word文档中提取目录的步骤。

    • 使用Document 类加载Word文件 。
    • 使用Document-> get_Range()-> get_Fields()方法检索字段并在它们上循环。
    • 检查字段是否为FieldType :: FieldHyperlink类型。
    • 检查该字段是否属于目录。
    • 检索并打印字段信息。

    下面的示例代码演示了如何使用C ++从Word文档中提取目录。

    // Source direvctory
    System::String inputDataDir = u"SourceDirectory\\";
    
    // Load the Word file
    System::SharedPtrdoc = System::MakeObject(inputDataDir + u"SampleTOC.docx");
    
    // Loop through the fields
    for (System::SharedPtrfield : System::IterateOver(doc->get_Range()->get_Fields()))
    {
    	// Get FieldHyperlink fields
    	if (field->get_Type() == FieldType::FieldHyperlink)
    	{
    		System::SharedPtrhyperlink = System::DynamicCast(field);
    
    		// Check if field belongs to TOC
    		if (hyperlink->get_SubAddress() != nullptr && hyperlink->get_SubAddress().StartsWith(u"_Toc"))
    		{
    			System::SharedPtrtocItem = System::DynamicCast(field->get_FieldStart()->GetAncestor(NodeType::Paragraph));
    			std::cout << System::StaticCast(tocItem)->ToString(SaveFormat::Text).Trim().ToUtf8String() << std::endl; std::cout << "------------------" << std::endl; if (tocItem != nullptr) { System::SharedPtrbm = doc->get_Range()->get_Bookmarks()->idx_get(hyperlink->get_SubAddress());
    
    				// Get the location this TOC Item is pointing to
    				System::SharedPtrpointer = System::DynamicCast(bm->get_BookmarkStart()->GetAncestor(NodeType::Paragraph));
    				std::cout << System::StaticCast(pointer)->ToString(SaveFormat::Text).ToUtf8String() << std::endl; } } } }

    更新Word文档中的目录

    如果文档的内容已更新,并且您需要在目录中反映这些更改,则只需加载Word文件并调用 Document-> UpdateFields() 方法。此方法将根据修改后的内容更新目录。之后,保存更新的Word文档。

    以下是从Word文档中删除目录的步骤。

    • 使用Document 类加载Word文件 。
    • 检索并存储FieldStart节点的列表。
    • 遍历节点,直到到达指定目录结尾的类型NodeType :: FieldEnd的节点。
    • 使用Node-> Remove()方法删除目录。
    • 使用Document-> Save(System :: String fileName)方法保存Word文档。

    下面的示例代码显示了如何使用C ++从Word文档中删除目录。

    void RemoveTableOfContents(const System::SharedPtr& doc, int32_t index)
    {
    	// Store the FieldStart nodes of TOC fields in the document for quick access.
    	std::vectorfieldStarts;
    	// This is a list to store the nodes found inside the specified TOC. They will be removed
    	// at the end of this method.
    	std::vectornodeList;
    
    	for (System::SharedPtrstart : System::IterateOver(doc->GetChildNodes(NodeType::FieldStart, true)))
    	{
    		if (start->get_FieldType() == FieldType::FieldTOC)
    		{
    			// Add all FieldStarts which are of type FieldTOC.
    			fieldStarts.push_back(start);
    		}
    	}
    
    	// Ensure that the TOC specified by the passed index exists.
    	if (index > fieldStarts.size() - 1)
    	{
    		throw System::ArgumentOutOfRangeException(u"TOC index is out of range");
    	}
    
    	bool isRemoving = true;
    
    	// Get the FieldStart of the specified TOC.
    	System::SharedPtrcurrentNode = fieldStarts[index];
    
    	while (isRemoving)
    	{
    		// It is safer to store these nodes and delete them all at once later.
    		nodeList.push_back(currentNode);
    		currentNode = currentNode->NextPreOrder(doc);
    
    		// Once we encounter a FieldEnd node of type FieldTOC then we know we are at the end
    		// of the current TOC and we can stop here.
    		if (currentNode->get_NodeType() == NodeType::FieldEnd)
    		{
    			System::SharedPtrfieldEnd = System::DynamicCast(currentNode);
    			if (fieldEnd->get_FieldType() == FieldType::FieldTOC)
    			{
    				isRemoving = false;
    			}
    		}
    	}
    
    	// Remove all nodes found in the specified TOC.
    	for (System::SharedPtrnode : nodeList)
    	{
    		node->Remove();
    	}
    }
    
    int main()
    {
    	// Source and output directory paths.
    	System::String sourceDataDir = u"SourceDirectory\\";
    	System::String outputDataDir = u"OutputDirectory\\";
    
    	// Open a Word document
    	System::SharedPtrdoc = System::MakeObject(sourceDataDir + u"SampleTOC.docx");
    
    	// Remove the first table of contents from the document.
    	RemoveTableOfContents(doc, 0);
    
    	// Output file path
    	System::String outputPath = outputDataDir + u"RemoveTOC.docx";
    
    	// Save the Word file
    	doc->Save(outputPath);
    }

    如果您有任何疑问或需求,请随时加入Aspose技术交流群(761297826),我们很高兴为您提供查询和咨询。

    展开全文
  • 有很多PDF文件一开始没有目录,阅读的时候非常不方便,但其实给PDF文件添加书签目录操作非常简单,我们自己就可以很轻松的搞定。 一、将PDF转成Word 1、首页手机下载和安装软件会相对麻烦些,所以一般更习惯使用一些...

    有很多PDF文件一开始没有目录,阅读的时候非常不方便,但其实给PDF文件添加书签目录操作非常简单,我们自己就可以很轻松的搞定。

    一、将PDF转成Word

    1、首页手机下载和安装软件会相对麻烦些,所以一般更习惯使用一些免费的在线转换工具。搜索speedpdf找到并打开这个在线转换工具首页后,先选择页面中的PDF to Word;
    在这里插入图片描述

    2、根据页面提示上传PDF文档并点击convert开始转换,转换完成后即可快速下载PDF文档;
    在这里插入图片描述

    二、给Word文档制作文档结构图

    1、打开上一步中转换后的Word文档之后,在右下方找到大纲视图选项,并点击进入大纲模式;
    在这里插入图片描述

    2、依次将鼠标光标定位到需要设置结构图的标题位置,然后在左上方的菜单栏中的大纲选项在其内找到正文本选项,根据内容设置为不同的层级。
    在这里插入图片描述
    在这里插入图片描述

    三、将Word导出成PDF

    文档结构图完成后点击左上角文件选项卡中的“导出”,将Word以PDF格式导出并保存;
    在这里插入图片描述

    再次打开PDF文件点击“目录”后则可在左侧面板显示与Word中一样的文档结构图,点击即可跳转到对应页面;
    在这里插入图片描述

    展开全文
  • word 报告格式报表时,为了有更好的阅读效果,经常需要在首页增加一个目录导航页,这样就能够快速的知道关心的数据在第几页,但是报表不同于 word 文档,word 文档中格式都是固定的,所以能够方便快速的生成目录页,...

    需求描述:

    在做一些类似 word 报告格式报表时,为了有更好的阅读效果,经常需要在首页增加一个目录导航页,这样就能够快速的知道关心的数据在第几页,但是报表不同于 word 文档,word 文档中格式都是固定的,所以能够方便快速的生成目录页,在报表中数据都是动态变化的,并且通常会涉及到动态扩展,这样很难固定目录项,并且由于数据动态扩展,对应的页码也很难精确获得,下面通过一个实例看下,如果在报表中动态增加目录。

    解决方案:

    报表数据是动态的,所以设计时就不能用固定的目录,需要报表计算后才能知道数据在第几页,润乾报表提供了一个报表计算侦听类,在 java 程序中可以动态获取报表计算后的结果,并能够在程序中动态更改单元格的值。

    首先,看下报表模板的设计界面:

    1jpg

    这个报表要对订单数据按照地区进行汇总分析,并展示详细数据,要求目录中以地区为导航进行设置,报表前 5 行是目录页,第三行中,概要分析一般是固定的,这里就写了固定一行,页码设置 2 就行。

    A4:=ds1.group(货主地区; 货主地区:1),表达式按照地区进行分组,也就是目录这块按照地区进行展示,对应 E4 单元格后续要设置成目录页,此处暂时为空。

    A5:目录通常在第一页,所以此处设置一个行后分页

    A7:就是一个固定的汇总描述,里边可以用字符串拼接方式将固定文本和动态数据拼接在一起展示。

    A8:=ds1.group(货主地区; 货主地区:1),按照地区进行分组

    A9:对该地区数据做一个汇总说明

    A10:=ds1.select(订单 ID),取数订单数据,B10 往后依次类推。

    将 A9,A10,A11,A12 单元格的左主格设置成 A8,此片数据根据 A8 进行纵向扩展,这样报表展示结果为:

    2jpg

    这里可以看到,目录项处列出了对应地区,接下来看下,如果给地区增加对应页码。

    从报表结果中看到,第一页中的目录名称和报表中的地区名称相同,这样就可以根据这两个名称做匹配,判断如果名称相同获取数据区域的名称所在的页码,放到对应目录行就行,如数据区域的“东北”在第 2 页,那么目录中东北的页码应该为 2,接下来看下,如何给目录设置动态的页码。

    这里就用到了之前说到的报表侦听类的使用,源码如下:

    import com.raqsoft.common.Area;
    import com.raqsoft.report.usermodel.Context;
    import com.raqsoft.report.usermodel.IPagerListener;
    import com.raqsoft.report.usermodel.IReport;
    import com.raqsoft.report.usermodel.IReportListener;
    import com.raqsoft.report.usermodel.PageBuilder;
    import com.raqsoft.report.util.ReportUtils;
    
    public class createmulu implements IReportListener {
    	 public void afterCalc(Context arg0, IReport arg2) { 
    		 PageBuilder arg1 = null;
    		try {
    			arg1 = new PageBuilder(arg2);
    		} catch (Throwable e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
    			System.out.println("报表总页数"+arg1.getPageCount());
    			IReport p1;
    			try {
    				 p1=arg1.getPage(1);//目录通常在第一页,所以获取第一页为目录页
    				 int page=2;//设置数据初始循环页,通常为第二页
    				 for(int i=3;i<=p1.getRowCount();i++){//目录行从第三行开始
    					String muluName=(String)p1.getCell(i, 2).getValue() ;//报表中设置第二页为目录名称
    					for(int j=page;j<=arg1.getPageCount();j++){//按照页数进行循环,分别取分页后每页报表对象
    						for(int k=1;k<=arg1.getPage(j).getRowCount();k++){//每页中按照每行进行循环		
    						String mName=arg1.getPage(j).getCell(k,1).getValue() != null ? arg1.getPage(j).getCell(k,1).getValue().toString() : "";//本例中目录项在报表中的第一列,也就是A8单元格
    						if(mName!="" && mName==muluName){//判断每页中的目录项和第一页中的目录名称是否相同
    							arg2.getCell(i, 5).setValue(j);//如果相同,则设置目录页第5列对应的值为对应页码,注意,此处是arg2对象
    							arg2.getCell(i, 5).setHyperlink("javaScript:toPage('report1',"+j+")");//设置超链接
    							page=j;//为提高计算效率,下次在循环时,不用从第2页开始,从上次终端的页码开始就行
    							break;//找到页码,跳出此处循环,提高效率
    						}	
    						}
    					} 
    				 }
    			} catch (Exception e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			} 
    	   } 
    	   public void beforeCalc(Context arg0, IReport arg1) { 
    	   } 
    	
    }
    

     

    核心思路就是在类中根据名称进行匹配,获取页码,放到对应单元格中,将编译好的类放到报表类路径中,如:应用的 WEB-INF\classes 下,注意如果有包路径,此处要要带相应的路径,放置过去后重启应用,在页面端访问报表,结果如下:

    3jpg

    可以看到,目录后边会生成对应的页码,word 中目录有个功能点是,点击页码,能够快速跳转到对应的页数,报表中同样可以增加对应的功能,报表提供了一个跳转页数的 js 函数,toPage,在 java 类中,在对应的页码单元格设置了一个超链接,调用这个 js 就行:

    arg2.getCell(i, 5).setHyperlink("javaScript:toPage('report1',"+j+")");
    

    这样,在页面端点击页码,就能够快速跳转到对应页数,当然,此功能要求报表在页面端分页后才有效,否则无法跳转,并且如果导出到 word 的话,只能显示页数,无法跳转。

    通过这个例子可以看到,通过拿目录项中的单元格数据和数据表中的单元格进行匹配,来获取页码,但是在实际使用中,目录页中的目录名称和报表中的数据名称可能并不完全一致,比如目录页中叫东北,报表数据中叫东北地区,很难严格匹配,这样可以换种变通的方法,报表单元格属性栏中有个注释属性,可以在这个里边写上和目录项匹配的值,然后 java 类中可以根据这个属性的值做匹配,这样能够实现更加灵活的效果,更多 api 接口可以参考报表帮助文档《程序员参考》,后续带来更多 api 在报表实际需求中的应用。

    更多报表样式类问题请看:报表样式分类导航
    * 按段分组报表制作
    * 如何开发主从报表
    * 报告式报表的制作
    * 报表中如何实现不规则布局
    * 报表工具轻松搞定卡片式报表

    展开全文
  • 我们经常使用word来编辑一些...至于页脚一般会有当前页的页码,方便阅读者能根据目录快速翻阅和查找,也可以添加页眉中提到的信息加入一些注释内容,通常页脚可以包括文档名、作者名、章节名、页码、编辑日期、时间...

    我们经常使用word来编辑一些文字内容信息,Word文档是一个文字处理软件,页眉是指位于上页边区的注释性文字或图片,页眉中一般会添加一些公司名称、LOGO等重要信息,这些信息是希望文档阅读者能记住并熟悉的,以起到推广和宣传的作用。至于页脚一般会有当前页的页码,方便阅读者能根据目录快速翻阅和查找,也可以添加页眉中提到的信息加入一些注释内容,通常页脚可以包括文档名、作者名、章节名、页码、编辑日期、时间、图片以及其它一些域等多种信息。那么一起来看看如何设置插入页脚吧。
    首先我们先打开word,进入到需要编辑的文档中。
    如图:
    在这里插入图片描述

    当进入到word文档中,我们在文档上方的菜单工具栏中选择【插入】选项。
    如图:
    在这里插入图片描述

    点击插入按钮进入插入选项界面后,在该界面中找到“页眉和页脚窗口”,在窗口选项中点击选择【页脚】。
    如图:
    在这里插入图片描述

    我们点击“页脚”选项按钮后会出现一个下拉选项菜单,我们可以在界面中选择页脚的样式。
    如图:
    在这里插入图片描述

    我们选择其中一个想要的页脚样式点击即可完成添加页脚。
    如图:
    在这里插入图片描述

    我们可以在添加的页脚进行编辑录入信息,加入一些有趣的因素和内容注释,希望能够对大家有所帮助,感谢大家的观看。

    展开全文
  • 添加目录时,可将“有效样式”设置为“目录级别”显示(如图2),一定程度上来说,标题大纲也可以作为目录来参考。 图2 本文,将通过后端Java程序代码介绍如何来获取Word中的标题内容。 注:如果在Word中...
  • PDF文件如何自动生成目录书签

    千次阅读 2020-10-29 14:45:11
    我们在制作完成一个PDF文档后,需要给文件添加目录便于快速查看内容,但如果手动一条一条添加太浪费时间,也容易出错,那么如何才能给PDF文件自动添加目录呢? 首先用极速PDF编辑器打开我们需要添加目录的PDF文件后...
  • 添加目录时,可将“有效样式”设置为“目录级别”显示(如图2),一定程度上来说,标题大纲也可以作为目录来参考。 图2 本文,将通过后端Java程序代码介绍如何来获取Word中的标题内容。 注:如果在Word中进行了如...
  • 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着...
  • 第 1 章Word 2013界面组成 /1 1.1 工具栏与选项卡 /1 疑难 1 如何将常用命令按钮添加到“快速访问工具栏” /1 疑难 2 如何显示“开发工具”选项卡 /4 疑难 3 如何显示“图片工具”
  • 网上下载的好多Pdf都没有书签,电子书籍几百页看起来没有书签,很不方便,手动逐个为Pdf添加书签难免有些繁琐,下面这个方法可能有助于你快速生成书签: 举例: 1. 将网上找到的书签复制到新建word文档中,粘贴时要...
  • 运行项目根目录下的脚本demo-word.bat可以快速体验分词效果 用法: command [text] [input] [output] 命令command的可选值为:demo、text、file demo text 杨尚川是APDPlat应用级产品开发平台的作者 file d:/text.txt...
  • word使用技巧大全

    热门讨论 2011-03-18 20:37:53
    二、使WORD里面的文章自动生成目录 1 (一) 设置标题格式 1 (二) 自动生成目录 1 (三) 更新目录的方法 2 三、自动生成目录图片演示 2 4.用标题1,2,3分别去定义文中的每一章节 4 四、如何自动生成目录? 6 五、奇偶...
  • 添加目录时,可将“有效样式”设置为“目录级别”显示(如图2),一定程度上来说,标题大纲也可以作为目录来参考。 图2 本文,将通过后端Java程序代码介绍如何来获取Word中的标题内容。 注:如果在Word中进行...
  • 实例001 在系统菜单中添加菜单项 2 实例002 带历史信息的菜单 3 实例003 菜单动态合并 4 实例004 像“开始”菜单一样漂亮的菜单 5 实例005 多彩的菜单 6 实例006 可以拉伸的菜单界面 8 1.2 工具栏设计...
  • 基于JSP物流信息网设计软件程序源码+数据库+WORD毕业设计论文文档. 物流信息网主要用于实现网上自主物流,基本功能包括:登录、查询、时效查询、价格查询、注册等。本系统结构如下: (1)普通用户: 登录:账号、...
  • oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...
  • 1. word如何快速将图片格式大小设置成一样大小 2. IEEE latex模板如何添加 bib 3. 如何在excel中绘制坐标轴是文字的曲线图 4. WinEdt如何自动换行 ================================ 1. word如何快速将...
  • otherwise, by default it is doing chinese pre-train using whole word mask of chinese. 执行预训练 pre-training on GPU/TPU using the command GPU(brightmart版, tiny模型): export BERT_BASE_DIR=./albert_...
  • C#编程经验技巧宝典

    热门讨论 2008-06-01 08:59:33
    43 <br>0061 树的实现 44 <br>3.2 排序 48 <br>0062 如何实现选择排序算法 48 <br>0063 如何实现冒泡排序算法 49 <br>0064 如何实现快速排序算法 50 <br>0065 如何实现插入排序算法 ...
  • 另外,如何保存文本或设计图中的字体,以便在新的环境中快速恢复使用,也是臃肿的系统字体目录难以解决的问题。 字体试衣间豪华版以集合为单位将字体根据实际需要分门别类,只在需要时激活某个集合,使其中的字体...
  • 目录我与富文本编辑器的恩怨情仇前言前戏:快速搭个富文本编辑器依赖npm jiǒ 本欢迎 Quill 登场身子热乎了,来撸起袖子干知己知彼开始心心念的事情首先将编辑器的字体改一下再给编辑器添加个分割线功能处理图片处理...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 137
精华内容 54
关键字:

word如何快速添加目录