ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 543|回复: 17

[求助] 关于在JSA中用Get读取二进制文件不起作用的问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-2-14 11:42 | 显示全部楼层 |阅读模式
看了ruirui5015[分享] jsa读写流,txt读写示例深受启发,但是其中的Get用法始终无法使用。
WPS JSA中对该函数的描述如下:

Get(FileNumber:String,VarName:?,RecNumber:?)
FileNumber:可用FreeFile 获得一个尚未使用的文件号
VarName:变量似乎是任意类型皆可。
RecNumber:记录数任意,可以忽略。
按照VBA中的解释,我的理解其中VarName似乎应该是一个Byte数组变量,而在JSA中没有Byte数组,只能使用ArrayBuffer和Uint8Array(Uint16Array)来代替Byte数组。我试着写了一个程序来读取二进制数据,但是Get函数根本取不到任何数据,请大家看看到底是什么原因?到底怎么样才能使Get函数发挥作用?如何解决这个问题?

function read(path) {
        var no = FreeFile()
        var fn = Open(path, no,jsBinary, jsRead, jsLockWrite, 10000)
        sl=LOF(no)//文件长度字节数
        var bf=new ArrayBuffer(sl)//设定存储缓存区
        var zf=new Uint8Array(bf) //设定TypedArray读取数据
       Get(no,zf)//这一句想获取文件内容存入TypedArray即zf变量中,运行了一下,zf存储变量没有Get到任何数据
        Close(no)
        Console.log(zf.join(""))//显示获取的文件内容
}

TA的精华主题

TA的得分主题

发表于 2024-2-14 13:58 | 显示全部楼层
用XMLHttpRequest请求本地文件试试

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-14 14:28 来自手机 | 显示全部楼层
仙女配凡人 发表于 2024-2-14 13:58
用XMLHttpRequest请求本地文件试试

XMLHttpRequest只能在windows版中可以使用,但在linux版中没有这个函数,最好是能解决Get读取二进制文件的问题。

TA的精华主题

TA的得分主题

发表于 2024-2-14 14:44 来自手机 | 显示全部楼层
关注+1
现在是用lineinput,但每行有长度限制,所以外部用base64弄成相同长度的行,js宏里再解出来,很麻烦

TA的精华主题

TA的得分主题

发表于 2024-2-14 19:04 | 显示全部楼层
xx6000 发表于 2024-2-14 14:28
XMLHttpRequest只能在windows版中可以使用,但在linux版中没有这个函数,最好是能解决Get读取二进制文件 ...

linux版不能用win组件基本无解,只能用Shell处理,但我不知道jsa和shell之间的怎么通信

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-14 22:49 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
仙女配凡人 发表于 2024-2-14 19:04
linux版不能用win组件基本无解,只能用Shell处理,但我不知道jsa和shell之间的怎么通信

所以说必须把Get这个函数具体怎么读取二进制数据搞清楚,其他一切就迎刃而解了

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-18 11:23 来自手机 | 显示全部楼层
各位大神有谁能解释一下怎么使用Get函数读取到二进制数据?百思不得其解,为什么完全按照函数的说明来写的程序,但Get函数根本不起作用。

TA的精华主题

TA的得分主题

发表于 2024-2-18 12:20 来自手机 | 显示全部楼层
xx6000 发表于 2024-2-18 11:23
各位大神有谁能解释一下怎么使用Get函数读取到二进制数据?百思不得其解,为什么完全按照函数的说明来写的 ...

放弃吧,我咨询过官方人员了,get暂时不完善,没法用。建议转wps加载项

TA的精华主题

TA的得分主题

发表于 2024-2-20 11:53 | 显示全部楼层
wanghan519 发表于 2024-2-14 14:44
关注+1
现在是用lineinput,但每行有长度限制,所以外部用base64弄成相同长度的行,js宏里再解出来,很麻 ...

那 怎么写 binaryString(图片的二进制字符串) to base64的?我白嫖一下

TA的精华主题

TA的得分主题

发表于 2024-2-20 12:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
perfect131 发表于 2024-2-20 11:53
那 怎么写 binaryString(图片的二进制字符串) to base64的?我白嫖一下

“图片的二进制字符串”是怎样的格式?

外部的二进制文件,我是用shell命令执行base64.exe a.jpg > a.txt得到base64的文件,它会自动换行,不会超过lineinput的限制
base64是下载的busybox-w32.exe改名成base64.exe就能用
内部是用js-base64这个库转的


您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-6-11 03:29 , Processed in 0.037950 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表