【请教】:VC如何读取Excel表中的批注??

时间:2021-08-27 09:51:02
查找了半天,关于vc资料的都没有。
我自己实验出添加是CRange::AddComment

但获取却没有类似函数,请问大家如何获取单元格中的批注信息。

4 个解决方案

#1


Excel::Comments comments;
Excel::Comment comment;
Excel::Range range;

comments.DetachDispatch();
comments.AttachDispatch(m_sheet.GetComments(),0);

if(nIndex<1 || nIndex>comments.GetCount()) return FALSE;

comment.DetachDispatch();
comment.AttachDispatch(comments.Item(nIndex),0);

range.DetachDispatch();
range.AttachDispatch(comment.GetParent(),0);

        CString sValue; 
        sValue=comment.Text(vtMissing,vtMissing,vtMissing);

range.DetachDispatch();
range.ReleaseDispatch();

comment.DetachDispatch();
comment.ReleaseDispatch();

comments.DetachDispatch();
comments.ReleaseDispatch();

#2


使用_Worksheet 的Comments方法得到Comments类型的集合

#3


引用 1 楼 afxtian 的回复:
Excel::Comments comments;
Excel::Comment comment;
Excel::Range range;

comments.DetachDispatch();
comments.AttachDispatch(m_sheet.GetComments(),0);

if(nIndex<1 || nIndex>comments.GetCount()) return FALSE;

comment.DetachDispatch();
comment.AttachDispatch(comments.Item(nIndex),0);

range.DetachDispatch();
range.AttachDispatch(comment.GetParent(),0);

        CString sValue; 
        sValue=comment.Text(vtMissing,vtMissing,vtMissing);

range.DetachDispatch();
range.ReleaseDispatch();

comment.DetachDispatch();
comment.ReleaseDispatch();

comments.DetachDispatch();
comments.ReleaseDispatch();

这个方法如何获取单元格内的批注呢?意思是5行8列没有批注,则返回""
我测试了下,comment.AttachDispatch(comments.Item(nIndex),0);中的nIndex是按顺序来的

#4


还有,我读了批注以后为什么无法完全释放资源,即进程无法关闭,只读内容不读批注可以完全释放,加上comment.ReleaseDispatch();也不行

#1


Excel::Comments comments;
Excel::Comment comment;
Excel::Range range;

comments.DetachDispatch();
comments.AttachDispatch(m_sheet.GetComments(),0);

if(nIndex<1 || nIndex>comments.GetCount()) return FALSE;

comment.DetachDispatch();
comment.AttachDispatch(comments.Item(nIndex),0);

range.DetachDispatch();
range.AttachDispatch(comment.GetParent(),0);

        CString sValue; 
        sValue=comment.Text(vtMissing,vtMissing,vtMissing);

range.DetachDispatch();
range.ReleaseDispatch();

comment.DetachDispatch();
comment.ReleaseDispatch();

comments.DetachDispatch();
comments.ReleaseDispatch();

#2


使用_Worksheet 的Comments方法得到Comments类型的集合

#3


引用 1 楼 afxtian 的回复:
Excel::Comments comments;
Excel::Comment comment;
Excel::Range range;

comments.DetachDispatch();
comments.AttachDispatch(m_sheet.GetComments(),0);

if(nIndex<1 || nIndex>comments.GetCount()) return FALSE;

comment.DetachDispatch();
comment.AttachDispatch(comments.Item(nIndex),0);

range.DetachDispatch();
range.AttachDispatch(comment.GetParent(),0);

        CString sValue; 
        sValue=comment.Text(vtMissing,vtMissing,vtMissing);

range.DetachDispatch();
range.ReleaseDispatch();

comment.DetachDispatch();
comment.ReleaseDispatch();

comments.DetachDispatch();
comments.ReleaseDispatch();

这个方法如何获取单元格内的批注呢?意思是5行8列没有批注,则返回""
我测试了下,comment.AttachDispatch(comments.Item(nIndex),0);中的nIndex是按顺序来的

#4


还有,我读了批注以后为什么无法完全释放资源,即进程无法关闭,只读内容不读批注可以完全释放,加上comment.ReleaseDispatch();也不行