以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于单元格,行,列style优先问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=40567)

--  作者:东坡一剑
--  发布时间:2013/9/23 16:41:00
--  关于单元格,行,列style优先问题

Dim fl As String = ProjectPath & "Reports\\订单.XLS"
Dim Book As New XLS.Book(fl)
Dim Sheet As XLS.Sheet = Book.Sheets(0)

 

For i As Integer = 0 To sheet.Rows.count - 1
    sheet.Rows(i).Height = 40
Next

Dim v As Integer = sheet.Rows(3).Height * 3/4
Dim fnt As New Font("黑体",v,FontStyle.regular)
Dim Style As XLS.Style = Book.NewStyle() \'定义新样式
Style.Font = fnt
For i As Integer = 0 To sheet.Rows.count - 1  
    \'For c As Integer = 0 To sheet.Cols.count - 1
           \'sheet(i,c).Style=Style  
    \'Next    

sheet.rows(i).Style=Style  
Next
book.Save(fl)

 

上面这段代码,意图在于根据某行的height值改变相关单元格(或者行)的文字字号。

测试时手工修改蓝字行的数值观察代码是否起作用。

轮流注释掉红字部分和绿字部分的代码,发现绿字部分的代码不起作用(但也不会报错),有什么办法能让绿字部分的代码能其作用吗?最好是绿字和红字部分的代码能协调运行,以便更加灵活地控制报表的字体。

 

例子如下,请指教

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:例子.zip


--  作者:Bin
--  发布时间:2013/9/23 16:44:00
--  
样式都有优先级别,这个你既然自己测试知道了.还有必要问吗?



--  作者:狐狸爸爸
--  发布时间:2013/9/23 16:59:00
--  

因为单元格的样式优先于行的样式,如果在excel中设置过单元格样式,或者用代码设置过单元格样式,行样式就不会生效的,这是没有办法的,一般只能逐个单元格设置样式。

 

[此贴子已经被作者于2013-9-23 17:00:08编辑过]

--  作者:东坡一剑
--  发布时间:2013/9/24 11:52:00
--  
那么有没有办法用代码清除所有单元格样式,然后再用代码重新逐个设置,就像先用datattables("表").loadfilter = ""先清除所有加载条件再重新设置加载条件一样?因为我发现就算是新建的Excel,行与列的style属性设置也不起作用。这样一来,行与列的style属性就成为一个摆设,但是有不少场合又确实需要这个功能。知识有限,可能我说错了,希望大家指正。
--  作者:Bin
--  发布时间:2013/9/24 11:55:00
--  
这个估计得循环一遍才能清楚样式,但是为什么要重新清除呢? 你本来就不要设置样式,然后根据需求使用代码设定不行吗?
--  作者:狐狸爸爸
--  发布时间:2013/9/24 11:58:00
--  
呵呵,是的,循环清除单元格样式,不如循环给单元格指定样式。
--  作者:东坡一剑
--  发布时间:2013/9/24 18:04:00
--  
那就只能循环设置了。谢谢哦!