以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  excel报表,如何不显示金额列  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=111033)

--  作者:lihe60
--  发布时间:2017/12/14 9:49:00
--  excel报表,如何不显示金额列
在设计excel报表模板时,假设有x列。通过什么方法禁止某人看到金额这列的数据?
--  作者:2900819580
--  发布时间:2017/12/14 9:54:00
--  
你在打印的之前,先把金额数据列给隐藏
--  作者:lihe60
--  发布时间:2017/12/14 9:56:00
--  
如果隐藏了某行,其他人也可以把该取消隐藏的。
--  作者:lihe60
--  发布时间:2017/12/14 9:57:00
--  
其他人可以插入一列或把某列改成金额列,又可以显示金额的。
--  作者:有点甜
--  发布时间:2017/12/14 10:05:00
--  

方法一:重新fill表格,排除金额列 http://www.foxtable.com/webhelp/scr/1929.htm

 

方法二:编写beforeBuild事件,检测模板文件(循环每一个单元格),把[金额]这样的字符替换成空白。


--  作者:lihe60
--  发布时间:2017/12/14 10:12:00
--  
第一个方法试一下;第二个方法不可行,因为任何人都不能显示金额了。
--  作者:有点甜
--  发布时间:2017/12/14 10:13:00
--  
以下是引用lihe60在2017/12/14 10:12:00的发言:
第一个方法试一下;第二个方法不可行,因为任何人都不能显示金额了。

 

beforebuild事件,你不是可以加入条件判断?满足条件的才检测替换。这个方法更符合规范。


--  作者:lihe60
--  发布时间:2017/12/14 10:46:00
--  
有两个问题,1、运行窗口,项目自动退出;2、beforebuild事件的代码如何写,把excel报表模板中的“[金额]”全部替换为空白。

附件在下一楼
[此贴子已经被作者于2017/12/14 10:51:32编辑过]

--  作者:lihe60
--  发布时间:2017/12/14 10:51:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb


--  作者:有点甜
--  发布时间:2017/12/14 10:58:00
--  

参考代码

 

Dim file As String = "d:\\test.xls"
Dim temp As String = "d:\\temp.xls"
FileSys.CopyFile(file, temp, True)
Dim book As new XLS.Book(file)
Dim sheet As XLS.Sheet = book.Sheets(0)
For i As Integer = 0 To sheet.Rows.count - 1
    For j As Integer = 0 To sheet.cols.Count - 1
        sheet(i,j).value = sheet(i,j).text.replace("[金额]", "0")
    Next
Next
book.save(file)

 

打印完以后,afterBuild事件,记得把temp.xls替换原来的test.xls文件,还原回去。