Excel浏览器
新年第一天,笔者将“Excel浏览器”作为新年礼物送给您,祝您新年快乐,在新的一年,Excel网络函数库将一如既往的为帮助您提高工作效率而努力。
Excel浏览器是Excel网络函数库重要工具,专门针对各种网站或网页系统数据抓取而设计的,Excel 网络函数库中函数名以 W 或 ByWebBrowser结尾的函数都需要借助Excel浏览器。
Excel浏览器使Excel具备抓取网络数据的能力,属于“爬虫”工具。说到“爬虫”,很多人可能想到Python语言,那么Excel浏览器跟Python有没有关系呢?Excel浏览器跟Python没有关系,它本质上是一个浏览器,跟火狐狸Firefox浏览器的内核是同一个。从“爬虫”工具诞生的那一天开始,各类网站或系统的“反爬虫”能力也不但增强,比如有的网站要求必须登录后才能使用;有的网站为防止爬虫程序会根据光标轨迹判断移动鼠标的是人还是机器;有的网站大量使用Ajax延迟加载技术,导致无法直接从网页源码中获得目标数据。Excel浏览器为提高工作效率而生,它可处理各种网站或网页系统,尤其是运行于浏览器的内部业务系统。比如针对某某跨国公司供应商管理系统设计的接口,可显著提升供应商通过后台系统导入、导出、更新数据的能力。
下面介绍Excel浏览器的安装和使用方法
1. 安装Excel浏览器
从Excel网络函数库官网 安装页面下载Excel浏览器,如下如所示:
下载后解压缩,找到 exe 程序 ExcelWebBrowser.exe,双击运行
初始化数据库
Excel浏览器使用的是SQLite嵌入式(轻量级)数据库,数据库初始化完毕后会在ExcelAPInet文件夹下生成数据库文件ExcelAPI.net.sqlite,如果该文件大小大于0,表示当前操作系统环境支持SQLite数据运行。
2. 使用Excel浏览器
2.1 写Excel公式
以菜鸟裹裹快递查询为例,首先在Excel中写入公式GetKuaidiStatusByCainiaoguoguo(A2),其中A2指快递单号,菜鸟裹裹可自动识别快递公司。写好公式,回车后返回值“加入队列”,表示当前快递单号已加入待处理任务。
2.2 设置数据抓取模式,启动抓取任务
选择菜鸟裹裹官网,待网页打开后,点击开始按钮,开始执行任务。下图中,定时器间隔默认5秒钟,如果网页打开慢,可以适当增大间隔时间。
等待Excel浏览器自动处理,可通过Exce了浏览器底部状态栏观察任务执行情况。
Exce浏览器查询快递的过程如下图所示:
2.3 刷新公式
待浏览器处理完毕后,重新刷新公式。如果公式返回“正在取值”表明Excel浏览器还未处理。
3 其他功能
3.1 电商网站
支持京东、淘宝、天猫等电商网站的商品数据抓取,比如抓取价格和存库数量。
3.2 物流网站
支持菜鸟裹裹、17Track物流平台。
3.3 翻译网站
支持Google、Bing、百度、Yandex、有道等翻译网站。
3.4 门户网站
支持各类网页数据抓取。
3.5 工具
提供Excel文件、工作表合拼和拆分功能。
4 常见问题
4.1 无法加载 SQLite.Interop.DLL
初始化数据库时,如果出现”无法加载 DLL“SQLite.Interop.DLL”: 找不到指定的模块。(异常来自 HRESULT:0x8007007E)” 错误,请安装操作系统补丁vcredist_x86.exe或vcredist_x64.exe
4.2 无法加载 mozglue
打开Excel浏览器时,遇到找不到指定的模块错误时,如下图所示,需修复操作系统文件。
修复工具可从下载Windows修复工具,对操作系统进行修复。
4.3 登录界面
使用菜鸟裹裹查询快递时,如果查询次数达到一定数量,菜鸟裹裹会弹出淘宝登录框,要求登录。此时使用淘宝帐号登录后可继续查询。
记一次C#调用C++踩过的坑
一般来说,C#调用C++生产的dll,如下:
C++的项目要设置为”导出dll的项目”,而且导出的函数,一般为:
extern “C” __declspec(dllexport) int Convrnx(int format, rnxopt_t opt, char *file, char **ofile){ ….}
弄出一个C++的dll后,放到C#的生成目录下,也就是和.exe放在一起;
而C#,则要:
[DllImport(“RtklibHelper.dll”, EntryPoint = “Convrnx”, CallingConvention = CallingConvention.Cdecl)]public static extern int Convrnx(int format, rnxopt_t opt, string file, string[] ofile){ ….}
坑一:C#的类型,怎么和C++的类型对应起来(如例子:string对应*char,string[]对应char**)
解一:有一款神奇的工具,名为:CLRInsideOut,微软的手笔:
比如说:C++ 中的结构体 rnxopt_t ,其中又嵌套结构体snrmask_t等等,只需要将其用txt自上而下整理好(C++的声明写在前后很讲究),右边直接为C#代码;
坑二:在本机C#调用C++一切都正常,放到别的机器就有:找不到指定的模块。(异常来自 HRESULT:0x8007007E) ,各种搜索尝试都不行(包括尝试安装Vs c++环境)。
程序员的直觉:肯定是C++产出的dll,调用了系统的dll,而别的电脑又不一定有。
思路:找出这个dll,到底调用了什么东西
解二:又是使用微软的工具:
找到了,就是这些dll;
程序员的直觉:这个东西,绝逼是在c:\window下的,搜索一下,发现:WINMM.dll在两个文件夹都有,到底是哪个?
解:只需要到别的电脑搜一下,那个缺少就拷贝那个
全部揪出来:
然后放到和exe相同的目录下;(按照C++ dll的习惯,动态库总会在当前目录和系统目录中找,所以没必要一个个放到目标电脑对应的文件夹中)
核酸检测设备驱动没有安装完整,一扫码出现采集错误提示框
采样应用程序中发生了未经处理的异常。如果单击“继续”,应用程序将忽略此错误并尝试继续。如果单击“退出”,应用程序将立即关闭。
无法加载DLL “SQLite. Interop. dll”:找不到指定的模块。(异常来自HRESULT:0x8007007E)。详细信息 继续或退出
1、重装.netfromwork;2、重启服务器;3、重启数据库服务;4、运行数据库安装文件进行数据库修复;5、重装数据库。
手机登记好形成二维码,然后二维码扫描枪扫描手机上生成的二维码,扫描成功后电脑上的登记软件就有了记录,然后就可以去做核酸了。
这个电脑上的等级软件是个绿色版本的,但是这个扫描枪的驱动需要安装正确,有可能dll被安全卫士拦截,或文件损坏,没有安装完整等,形成如下图
解决办法就是重新多次安装驱动,期间由错误提示弹框,需要做好记录,根据错误提示发现那里出现了问题
记录好就可以跳过或关闭弹窗,其它办法
解决方法法一:手动将该dll文件放在c:/Windows/SysWOW64文件夹下(或System32下)但这个方法不推荐。
方法二:在项目根目录下,添加已有项的方式添加SQLite.Interop.dll文件。在文件属性之处选择如图选项
发布之后运行发现解决了。
除此之外,还可以在sqlite下载页面中检查以下是否符合其要求
适用于VB.NET/C#。简单整合32位SQLite跟64位SQLite,项目属性设置为anycpu的时候不会再有烦人的编译平台不同的提示,sqlite会自动根据系统的位数,而选择相应的版本。同时还阔以解决System.DllNotFoundException: 无法加载 DLL“SQLite.Interop.DLL”问题。
判断32位进程还是64位进程可以用 Environment.Is64BitProcess
在使用sqlite数据库的时候遇到的,这里做个总结;
在项目里添加 现有项 把SQLite.Interop.DLL文件添加进来,然后点击属性 修改一个属性,把 属性 复制到输出目录 改为 始终复制
然后打开你的项目属性 进入生成的 页面,把目标改为 x86 或者 x64 选择你自己的;然后运行就可以了;
应用程序发生异常 未知的软件异常
1、木马病毒查杀造成常用病毒捆绑应用程序和系统文件,清理隔离一些不知名的dll动态文件。
2、系统本身应用程序组件丢失,应用程序完整的运行需要一些系统文件或者某些dll文件支持,如果应用程序组件不完整也会导致的。
3、系统文件损坏或丢失,盗版系统或Ghost版本系统,很容易出现该问题。
4、操作系统自身的问题,操作系统本身也会有bug 。
5、硬件问题,例如内存条坏了或者存在质量问题,或者内存条的金手指的灰尘特别多。
应用程序错误解决方法:
1.检查电脑是否存在病毒,查杀清理病毒,不常用的应用软件安装需要关闭杀软和清理软件。
2.系统文件损坏或丢失,建议:使用完整版或正版系统。
3.安装的软件与系统或其它软件发生冲突,找到发生冲突的软件,卸载它。如果更新下载补丁不是该软件的错误补丁,也会引起软件异常,解决办法:卸载该软件,重新下载重新安装试试。顺便检查开机启动项,把没必要启动的启动项禁止开机启动。
Excel批量翻译函数详解
当你拿到一份全英文的Excel时,是不是很想大致的把它翻译过来呢,数据少时一个个人工翻译是没问题的,不过但数据动辄几M时,人工翻译怕是不实际了,所以如果有一个批量翻译的函数,那简直就是神器了,不过真实情况是百度了一下,试了很多种方法都不行…所以小编进来来教教大家一种新方法。如果喜欢,就点个赞再走吧~
Excel翻译函数
0
首先来看看当前的Excel翻译函数:
Fanyi(text, [from_lanaguage], [to_lanaguage])。已停用。该函数后台调用百度翻译接口
BaiduFanyiByWebBrowser(text, [from_lanaguage], [to_lanaguage])。该函数后台调用百度翻译接口
GoogleTranslate(text, [from_lanaguage], [to_lanaguage]),已停用。该函数后台调用谷歌翻译接口。
BingTranslate(text, [from_lanaguage], [to_lanaguage])。该函数后台调用Bing翻译接口。
参数解释
(参数text指待翻译的文字,
from_language指翻译后的语言种类,
默认翻译成英文en,
to_language指待翻译文字的语言种类,
默认是中文zh)
可以看到,fanyi函数其实已经不能用了哦,不过经过小编的研究,BaiduFanyiByWebBrowser函数还可以用(BingTranslate函数应该也是可以用的,方法应该类似,小编没有试过),但需要特殊的操作方式。接下来我们就来讲讲这个函数的用法,第一次使用较为麻烦,之后没有这么麻烦了。
下载ExcelAPI函数库更新工具
1
首先登陆网站:
下载ExcelAPI函数库更新工具
加压后,双击下图第一个文件
首先点击检查更新,更新完毕后点击执行更新
启用API加载项
2
之后打开一个EXCEL文件,,点击【文件】-【选项】-【加载项】-【转到】-勾选第一个-【确定】
然后可以看到加载项多了个API
下载Excel浏览器
3
打开刚才说的网页
下载Excel浏览器
解压后点击第一个文件夹
【注】:如果后面初始化数据库时,如果出现如下错误,请安装操作系统补丁vcredist_x86.exe或vcredist_x64.exe
无法加载 DLL“SQLite.Interop.DLL”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)
点击下图ExcelWebBrowser.exe文件
由于Excel浏览器使用了数据库,且数据库对操作系统有一定限制,所以运行Exce浏览器后,可通过菜单【初始化数据库】判断Excel浏览器是否可正常工作。点击【初始化数据库】、【清除缓存】,如果提示初始化数据库成功,表明Excel浏览器可正常工作。如果不成功请看上面的【注】
之后回到Excel,点击【加载项】-【ExcelAPI数据库】-【初始化数据库】、【清除缓存数据】
监测翻译任务
4
在地址栏中输入百度翻译
点击转到,然后设置好定时器间隔时间,然后点击【开始】
完成翻译
5
公式:
=BaiduFanyiByWebBrowser(A1,”en”,”zh”)
在Excel写好公式后,按住第一个框的左下角,往下拉,即可完成翻译任务。如出现“加入队列…”或“正在取值…”,则需要等Excel浏览器执行完翻译任务以后,再拉一遍即可。
其实在细节上,这个函数并不好用,有点麻烦,有时还会出现一些问题,不过总的来说还是不错的一种方法,毕竟也没有啥更好的办法了不是吗?
声明:所有白马号原创内容,未经允许禁止任何网站及个人转载、采集等一切非法引用。本站已启用原创保护,有法律保护作用,否则白马号保留一切追究的权利。发布者:白马号,转转请注明出处:https://www.bmhysw.com/article/19627.html