解除FreeSpire.Office导出xlsx文件时的限制

既然你已经搜到了这个文章,想必已经了解FreeSpire.Office.

FreeSpire.Office它虽然是免费的,但是它也有一些限制,比如导出xlsx文件时,限制不能操作5个sheet以及不能超过200行.
其实一般情况下5个sheet够用了,但是200行的限制还是有点不爽的.如果是调整到1000行的话还是满足大部分需求的.


下面就开整吧

在VS工具,使用nuget搜索安装FreeSpire.Office到项目,然后编译项目,目的就是为了获取以下几个dll文件

DLL文件

Spire.XLS.dll文件拖拽到de4dot工具撸一把.获得反混淆过的DLL文件,然后再使用dnSpy工具打开撸过的Spire.XLS-cleaned.dll文件.


使用dnSpy工具进行调试

回顾一下上面所说的限制条件,5个sheet和200行,这个提示给我们提供了线索.下面看操作

通过dnSpy搜索功能,进行搜索200数字/字符串,然后就是地毯式排查,打开每个搜索到的结果.我在图中红色标注的地方找到了关键代码.双击进入代码页面.

第一个
dnSpy搜索1
第二个
dnSpy搜索2

  • 第一个关键代码如下,如果官方没有说明限制内容,要定位关键代码还是比较费时间的.
if (Enum550.const_1 > this.class1580_0.method_72())
			{
			   
				if (Enum550.const_1 > this.class1580_0.method_72() && this.class1580_0.method_20().Count > 5)
				{
					for (int i = this.class1580_0.method_20().Count; i > 5; i--)
					{
						this.class1580_0.method_20().method_96(i - 1);
					}
				}
				foreach (object obj in this.class1580_0.method_20())
				{
					Class1583 class2 = (Class1583)obj;
					if (class2.method_12().method_7().Count > 200)
					{
						class2.method_12().method_188(200, class2.method_12().method_219().method_31());
					}
				}
			}

通过代码可以清晰的看到判断逻辑.下面简单说明一下.

  • if (Enum550.const_1 > this.class1580_0.method_72() && this.class1580_0.method_20().Count > 5) 很显然这里数字5暴露了,判断5个sheet
  • if (class2.method_12().method_7().Count > 200)同样这里200暴露了,判断200行数据

第二个

				if (@enum == Enum729.const_10)
				{
					if (this.Worksheets.Count > 5)
					{
						for (int i = this.Worksheets.Count; i > 5; i--)
						{
							this.Worksheets.Remove(i - 1);
						}
					}
					foreach (object obj in this.Worksheets)
					{
						Worksheet worksheet = (Worksheet)obj;
						if (worksheet.Rows.Length > 200)
						{
							worksheet.DeleteRow(201, worksheet.LastRow);
						}
					}
				}

现在知道了关键代码剩下的就是修改代码了.如下操作. 鼠标右击->编辑方法,进入编辑模式.
代码修改
修改代码,这里把5个sheet修改到1048570,同时200行数据修改到了1048570. 想必这下肯定是满足需求了.

第一个
修改后的代码
第二个
修改后的代码

最后保存模块,把文件名字修改为Spire.XLS.dll,让项目使用这个DLL文件. 测试导出200行以上的数据,看看是否成功.
通过同样的方法,可以解除 Spire.Doc.dll Spire.Pdf.dll等限制.

结论

请支持正版! 使用nuget搜索Spire.Office,这个就是付费正版.

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值