码迷,mamicode.com
首页 > 其他好文 > 详细

如何用代码读取Office Online Server2016的文档的备注信息

时间:2016-10-13 23:57:37      阅读:417      评论:0      收藏:0      [点我收藏+]

标签:

前言

在一个项目上客户要求读取office online server 2016的对文档的备注信息,如下图:

技术分享

以前思路老纠结在OOS这个在线上,总有以为这个信息存储在某个列表中,其实错了,这个备注信息其实就是word文档的备注信息,微软采用openxml开发的OOS,因此我也采用openxml读取备注信息的思路进行尝试,结果发现原来是可以的,成功效果图如下:

技术分享

注意:

OpenXml格式只有office2007以及以上版本才支持的格式,如果office97-2003格式的文档是二进制格式的文档,openxml无法进行此操作,需要用代码另存为2007以上的格式。当然OOS在线编辑也不支持此office97-2003格式的文档进行备注信息

 

实现

1、 下载OpenXMLSDK2.5,如下下载地址:

https://www.microsoft.com/en-us/download/details.aspx?id=30425

技术分享

2、 下载完毕后,引用如下2个DLL,如下图:

技术分享

3、 具体代码如下:(注意,sp文档库的文档要转成stream流的方式进行openxml操作)

 

StringBuilder sb = new StringBuilder();
            #region//spsite
            using (SPSite site = new SPSite("http://sp2016:8001"))
            {
                if (site != null)
                {
                    #region//spweb
                    using (SPWeb web = site.OpenWeb(""))
                    {
                        if (web != null)
                        {
                            Stream docStream = web.GetFile("http://sp2016:8001/DocLib1/测试文档.docx").OpenBinaryStream();

                            #region//openxml读取备注信息
                            using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(docStream, true))
                            {
                                //body
                                var body = wordDoc.MainDocumentPart.Document.Body;
                                //parts
                                var paras = body.Elements<Paragraph>();
                                //得到备注信息
                                Comments comments = wordDoc.MainDocumentPart.WordprocessingCommentsPart.Comments;
                                //循环备注信息
                                foreach (Comment item in comments)
                                {
                                    //内容
                                    string content = item.InnerText;
                                    //作者
                                    string userID = item.Author;
                                    //时间
                                    string createT = item.Date.Value.ToString("yyyy-MM-dd HH:mm:ss");
                                    //sb
                                    sb.Append("作者:" + userID + ",备注内容:"+ content +",时间:"+ createT +"\r\n");
                                }

                            }
                            #endregion
                        }
                    }
                    #endregion
                }
            }
            #endregion
            //赋值给textBox
        this.textBox1.Text = sb.ToString();

效果

技术分享

 

 

如何用代码读取Office Online Server2016的文档的备注信息

标签:

原文地址:http://www.cnblogs.com/love007/p/5958528.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!