使用.net导出Excel的两种不同方法(二)

使用.net导出Excel出了标准的 Excel控件,还有很多第三方控件。

 

下面介绍的一个就是功能同样强大的Aspose.cells控件

 

这个控件按说是收费的,不过还是有很多破解的版本,我用的就是csdn下来的,嘿嘿。

 

本来前边使用 Excel 11.0 object liberay 已经把所有功能完成,但两个问题不太满意。一个是导出速度太慢,没办法功能需要必须逐行逐cell写入,这个问题还能忍受,使用了单独的线程,并且加入了进度显示,好歹也能知道完成了多少。

 

但另外一个问题是很难绕过的,就是客户端的情况,本来在我这边很多个机器上都没有问题,但是在客户环境同样是office2003的所有机器上都无法执行,只有用我的安装介质重新安装一遍office2003才能解决问题(我认为这是个糟糕的解决办法,客户的环境最好不要奢望能够改动)。

 

你们只有使用不依赖于office的控件。

 

 

aspose.cells控件,很多方法和 Excel 11.0 object liberay 类似,但有操作上有些不大相同的地方

 

 

样式设置,这点感觉aspose用起来很不方便(但不知道这是不是它速度快的一个原因)

Excel 11.0 object liberay,支持在任何时候设置任何一个区域的样式,并且只要样式属性不重复,就不会被覆盖。

aspose就比较苛刻了,首先,它要求赋值必须在设置样式之前,否则如果先设置了样式,之后再给这个cell赋值,那么样式是不会生效的 :(

 

第二,后设置的样式区域,如果覆盖了前边的区域的某些部分,那么前边的所有样式都无效(这个实在太违背面向对象的特性了)

举例:

Dim topstyle As Aspose.Cells.Style = ac.Styles(ac.Styles.Add())

            topstyle.Font.Size = 16
            topstyle.Font.IsBold = True
            topstyle.Font.Name = "宋体"

Dim toprange As Aspose.Cells.Range = wksheet.Cells.CreateRange(0, 0, 1, 1)

toprange.style = topstyle

 

上面这个片段是设置第一行,第一列的第一个单元格的字体等信息。

 

如果我接着

Dim Allstyle As Aspose.Cells.Style = ac.Styles(ac.Styles.Add())

 

 

Allstyle.Borders(Aspose.Cells.BorderType.BottomBorder).LineStyle = Aspose.Cells.CellBorderType.Thin

Dim Allrange As Aspose.Cells.Range = wksheet.Cells.CreateRange(0, 0, 10, 10)

 

Allrange.style = Alltyel

 

上面这个代码片段是设置前十行,十列这个范围所有cell的下边框属性。

 

本应当和前边的toptyle属性不冲突。

 

但如果这两个先后设置,那么结果就是之后后边的Allstyle生效,前边的topstyle因为range被包含在了后边allrange中,所以所有样式都被取消了。

 

基于以上原因,我们在设置样式的时候就不得不分开考虑,避免使用这样来回覆盖的模式。

 

也就是说每个区域我们都要单独定义一切属性,比如字体,边框,是否居中,行高,列宽等等。。。

 

 

但值得肯定的一点是aspose.cells控件导出的速度非常快,同样多的数据所用时间是Excel 11.0 object liberay的 1/5

 

 

 

 

 

前文连接: 

 

使用.net导出Excel的两种不同方法(一)

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值