以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  有办法读取XLS文件单元格的批注吗?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=50830)

--  作者:gzdw
--  发布时间:2014/5/14 12:25:00
--  有办法读取XLS文件单元格的批注吗?
找了一下帮助,只有清除单元格信息(包括批注)的方法。
论坛上也只有输出XLS文件时,添加批注的办法。


现有一个XLS文件的某列带了批注,想把它读入到备注列中。

--  作者:有点甜
--  发布时间:2014/5/14 14:15:00
--  

 可以设置,就肯定可以读取啊。

 

 参考下面的代码,获取第一个单元格的批准

 

Dim App As New MSExcel.Application
Dim Wb As MSExcel.Workbook = App.WorkBooks.Open("e:\\test.xls")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)

Dim pz As String = ws.cells(1,1).Comment.Text
msgbox(pz)

app.quit


--  作者:gzdw
--  发布时间:2014/5/14 14:58:00
--  
放在命令窗口去执行上述代码,出现以下提示,还有什么代码没写吗?
---------------------------
版本:2014.3.8.1
---------------------------
代码执行出错,错误信息:



System.NullReferenceException: Object variable or With block variable not set.

   at Microsoft.VisualBasic.CompilerServices.Symbols.Container..ctor(Object Instance)

   at Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateGet(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack)

   at UserCode.Test()
---------------------------
确定   
---------------------------


--  作者:有点甜
--  发布时间:2014/5/14 15:08:00
--  

 回复3楼,代码你都不会改一改?路径都不改,文件都没有?

 

 

Dim App As New MSExcel.Application
Dim Wb As MSExcel.Workbook = App.WorkBooks.Open("e:\\test.xls")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)

Dim pz As String = ws.cells(1,1).Comment.Text
msgbox(pz)

app.quit


--  作者:gzdw
--  发布时间:2014/5/14 15:21:00
--  
把我文件放在C:\\,也改了命令。

跟踪时,是下面这句出错:
Dim pz As String = ws.cells(1,1).Comment.Text


而且,以下语句是可以执行的。
\'添加批注
Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("C:\\test.xls")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
Ws.Range("1:5").ClearComments \'清除原有批注
Ws.Range("B2").AddComment("批注测试,20140514添加")  \'B2单元格添加批注,注意批注内容在园括号内
App.Visible = True

--  作者:有点甜
--  发布时间:2014/5/14 15:38:00
--  

 回复5楼,我测试没有问题。

 

 你上传一个你测试不成功的例子吧。很简单的一个内容。


--  作者:有点甜
--  发布时间:2014/5/14 15:42:00
--  

 我再测试了一下。肯定是你的那个单元格没有标注,所以会出错。

 

Dim App As New MSExcel.Application
Dim Wb As MSExcel.Workbook = App.WorkBooks.Open("e:\\test.xls")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)

If ws.cells(100,1).Comment Is Nothing Then
    msgbox("没有标注")
Else
    Dim pz As String = ws.cells(1,1).Comment.Text
    msgbox(pz)
End If

app.quit


--  作者:gzdw
--  发布时间:2014/5/14 17:06:00
--  

刚才出去了。

 

是我没注意到去关单元格添加批注,相应单元格有批注时,可以读出了。

谢谢!

 

Dim App As New MSExcel.Application
Dim Wb As MSExcel.Workbook = App.WorkBooks.Open("c:\\test.xls")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)

If ws.cells(2,2).Comment Is Nothing Then
    Output.Show("没有标注")
Else
    Dim pz As String = ws.cells(2,2).Comment.Text
    Output.Show(pz)
End If

app.quit

 

[此贴子已经被作者于2014-5-14 17:06:56编辑过]