以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  sheet插入行请教  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=56491)

--  作者:CRM2013
--  发布时间:2014/9/6 15:16:00
--  sheet插入行请教

测试在sheet中插入行,但没成功,请问下面这个代码问题出在哪了?

 

Dim Book As New XLS.Book(ProjectPath & "Attachments\\数据查询.xls")
Dim Sheet As XLS.Sheet = Book.Sheets(0) \'引用工作簿的第一个工作表
Book.Build() \'生成细节区

For i As Integer = 0 To 6
Sheet.Rows.Insert(3) 
Next


Book.Save(ProjectPath & "Reports\\数据查询.xls")   \'保存工作簿
Dim Proc As New Process \'打开工作簿
Proc.File = ProjectPath & "Reports\\数据查询.xls"
Proc.Start()


--  作者:yan2006l
--  发布时间:2014/9/6 20:06:00
--  

一个小问题

在编写帮助的时候,我曾经写过一段简单的代码:

Dim Book As New XLS.Book(ProjectPath & "Attachments\\出库单.xls")
Dim
Sheet As XLS.Sheet = Book.Sheets(0)
Book.Build()
Sheet(Sheet.Rows.Count, 0).Value =
"制单人:" & User.Name
Book.Save(
"c:\\reports\\test.xls"
)

执行的结果很奇怪,并没有如我所料在最后一行出现制单人,也就是说第四行代码没有任何效果,这一度让我百思不得其解。

这是因为执行Build方法之后,原来的模板工作表会被全部删除,取而代之的是基于模板生成的新的工作表,而变量sheet在引用的是模板工作表,所以第四行代码是无效的。

因此,如果要在Build方法生成后修改生成的报表,必须使变量Sheet指向新生成的工作表:

Dim Book As New XLS.Book(ProjectPath & "Attachments\\出库单.xls")
Dim
Sheet As XLS.Sheet
Book.Build()
Sheet = Book.Sheets(
0)
Sheet(Sheet.Rows.Count,
0).Value = "制单人:" & User.Name
Book.Save(
"c:\\reports\\test.xls")


--  作者:有点甜
--  发布时间:2014/9/7 10:08:00
--  

http://www.foxtable.com/help/topics/1982.htm