• webadi修改经历


    一、背景

    我们老大给我一个任务,说是erp下载下来的excle文件,用office可以正常打开,用wps就会缺少行信息,让我改一下,顺便给了我一个文档,是wps厂家的建议。

     二、开始研究

    我从erp下载下来excle文档,试着用office打开,正常。试着用wps打开,在获取行信息的时候vba代码报错,提示

     百度之后发现,是没有添加引用。为什么office就能有引用,wps就没有引用呢,然后我就对比两个的引用有什么不一样,当然中间还走了很多弯路。

    office的引用

    wps的引用 

    发现有好几个不一样的,开始从xml这个引用入手,office是3.0,wps是6.0,这跟之前发我的文档wps的厂家说的一样。

     接下来就是研究为什么wps会引用6.0,怎么才能让wps引用3.0呢?又经过一堆研究后发现,不管是3.0还是6.0,他的名字参数这些都是一样的

    接下来就找BneAddReference方法,看看他是怎么把这两个参数对应成xml6.0的

     

    接下来找到了这个方法,里面的版本对应的是1,我猜测是这样的,xml版本指定为1,在系统上找不到后就会默认选择一个,office选择了3.0,而wps选择了6.0,再看wps厂家给的文档,立马联想到是不是把1改成3就可以了呢?经过测试,真的可以了!那么怎么解决问题时搞定了。这个宏代码去哪里改呢?

    三、改宏代码

    这些宏代码是跟excle一起下载下来的,那么就去erp的oaf上找。

     发现在点击下载的时候,其实就是做了一个a标签页面跳转,那么就找跳转的这个页面CuxPaDelvPG。

     发现这里没做什么操作,而是跳转到了FUNC这个地方,FUNC就是上面a标签里的CUX_DLVR_ENG_IMP。这玩意看着怎么也不像是个地址啊,怎么会跳转呢?在老板的帮助下,发现这玩意是个功能。

    果然是个功能,发现他跳转的路径其实是个servlet

     然后在服务器上全局搜索这个类

    find / -name BneApplicationService.class

    找到这个类后,发现他就是哥servlet,里面有一堆渲染菜单渲染页面的代码,但是没发现什么可用的信息。

     后面杨老板机智过人,突发奇想,既然我们要找这个excle是哪里来的,那么直接找他的下载地址就行了呀

    下载地址找到了,他传了4个参数,第三个感觉像是要跳转到下载页面,就在代码里找哪里获取了这个参数。

     这个参数对应了一个类

    搞了半天发现找错地方了,我去

    这玩意才是正确的下载路径

    然后进来有慢慢找,最终找到了 

    接下来就是找我要改的地方

     这块就陷入了有一个问题里,当执行下载好的excel时,他会新建一个excel,新建的这个excel里有binMain,而我要改的地方就在binMain模块里,也就是说下载下来的文档里没有binMain这个方法。

    我比较幸运,在上面那个类里搜索binMain,返现了createBinMain的方法

     进入这个类后发现了

    再追进去

     终于找到了我要改的地方,将最下面那行里的1改为3,发布,测试,大功告成!

  • 相关阅读:
    AR眼镜方案—单目光波导AR智能眼镜
    新冠疫情数据建模分析
    什么是JWT?
    Advanced .Net Debugging 5:基本调试任务(线程的操作、代码审查、CLR内部的命令、诊断命令和崩溃转储文件)
    深度学习,机器学习所涵盖的100多个基本概念总结
    【场景化解决方案】“云上管车”连接货运系统,帮助企业高效调度车辆
    【计算机网络】ICMP协议
    力扣刷题记录(Java)(一)
    14、DQL(条件查询:where)
    【微软技术栈】使用新的C#功能减少内存分配
  • 原文地址:https://blog.csdn.net/hailin525/article/details/126379646