C#获取Word文档结构图 并且转成Datatable表格
来源:互联网 发布:大连弘历软件 编辑:程序博客网 时间:2024/04/29 02:56
/// <summary> /// 获取Word文档结构图 /// </summary> /// <param name="FilePath">文档路径</param> private void G(string FilePath) { object missing = System.Reflection.Missing.Value; object FileName = FilePath;//@"E:\学习试验项目\ReadFromWordDoc\test.doc"; object readOnly = true; object isVisible = false; app = new word.Application(); doc = app.Documents.Open(ref FileName, ref missing, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref isVisible, ref missing, ref missing, ref missing, ref missing); object x = doc.GetCrossReferenceItems(Microsoft.Office.Interop.Word.WdReferenceType.wdRefTypeHeading); Array strs = (Array)x; int pid = 0; int id = 0; DataTable dt = new DataTable("dt"); //doc.Application.ScreenUpdating = false; dt.Columns.Add("SortFlag", typeof(int)); dt.Columns.Add("ParagraphIndex", typeof(int)); dt.Columns.Add("Name", typeof(string)); dt.Columns.Add("ID", typeof(int)); dt.Columns.Add("ParentID", typeof(int)); dt.Columns.Add("SectionNumber", typeof(int)); dt.Columns.Add("Level", typeof(string)); try { int UpLevel = 0; DataTable dtup = new DataTable("dtUP"); dtup.Columns.Add("SortFlag", typeof(int)); dtup.Columns.Add("ParagraphIndex", typeof(int)); dtup.Columns.Add("Name", typeof(string)); //SectionNumber dtup.Columns.Add("SectionNumber", typeof(int)); dtup.Columns.Add("ParentID", typeof(int)); dtup.Columns.Add("ID", typeof(int)); dtup.Columns.Add("Level", typeof(string)); DataRow drUP = dtup.NewRow(); for (int i = 0; i < strs.Length; i++) { object count = i + 1; string str = strs.GetValue(i + 1).ToString(); string strtrm = str.TrimStart(); DataRow dr = dt.NewRow(); dr["SortFlag"] = i + 1; dr["ParagraphIndex"] = i + 1; dr["Name"] = strtrm; int level = str.Length - strtrm.Length; dr["Level"] = level; if (level == 0) { dr["ParentID"] = 0; UpLevel = 0; object Heading = (int)Microsoft.Office.Interop.Word.WdGoToItem.wdGoToHeading; doc = new word.Document(); doc.Application.Selection.GoTo(ref Heading, ref missing, ref count, ref missing); dr["SectionNumber"] = doc.Application.Selection.get_Information(Microsoft.Office.Interop.Word.WdInformation.wdActiveEndSectionNumber); } else { if (level - UpLevel == 0) { dr["ParentID"] = drUP["ParentID"]; dr["SectionNumber"] = drUP["SectionNumber"]; } else if (level - UpLevel > 0) { dr["ParentID"] = drUP["ID"]; dr["SectionNumber"] = drUP["SectionNumber"]; } else { dr["ParentID"] = ParetnID(i - 1, dt, level)["ParentID"]; dr["SectionNumber"] = ParetnID(i - 1, dt, level)["SectionNumber"]; } } dt.Rows.Add(dr); UpLevel=level; drUP = dr; } }catch (Exception ex){throw ex;} } DataRow ParetnID(int rowindex, System.Data.DataTable dt, int level) { // object parentID = DBNull.Value; DataRow dr=dt.NewRow(); for (int i = rowindex; i >= 0; i--) { if (dt.Rows[i]["Level"].ToString() == level.ToString()) { dr = dt.Rows[i]; break; } } return dr; } }
0 0
- C#获取Word文档结构图 并且转成Datatable表格
- C#读取word表格到DataTable
- 用好Word文档结构图
- word文档结构图
- word文档结构图混乱
- c# word文档中创建表格
- word文档结构图和目录
- word文档结构图和目录
- word文档结构图和目录
- MS WORD中的文档结构图
- 2010 Word打开文档结构图.
- C# 快速获取Word文档结构
- word文档转成网页形式!
- C#在Word文档指定位置处理表格
- C# VS2012操作word文档 (二).插入表格图片
- C#在word文档中连续插入表格
- WORD文档结构图的一些用法
- word取消自动打开文档结构图
- spring详解
- ios开发你所不熟悉的冷知识
- ubutun 下使用ecipse导致的问题
- 通过Java来解决Web前段跨域访问问题
- Android--SQLite(增,删,改,查)操作
- C#获取Word文档结构图 并且转成Datatable表格
- python import与from...import....的区别
- 关于JS中的constructor与prototype
- String和StringBuilder的简单对比
- C++11 function使用
- 【multimap/pair/数组】#28 A. Bender Problem
- 新加坡公民与国人结婚的比例呈增长趋势
- 类的加载顺序
- flex的渲染两种用法