phtoshop CEP扩展 读取xls文件内容

Posted 陈才人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了phtoshop CEP扩展 读取xls文件内容相关的知识,希望对你有一定的参考价值。

整个问题搞了一周,各种插件测试。

思路:1、cep直接读取xls文件,但cep扩展本身和浏览器类似,所以直接读取本地文件,会有一个浏览器的安全问题要绕过去,就直接用ps自带的读取xls文件,以获取到xls文件的base64或者binary(为什么一定要读取xls文件,而不是xlsx文件,是因为公司买的erp生成的是xls文件。xlsx文件node.js很多npm都支持,并且一下就能读取成功)。遇到的难题是,上一篇文章提到过用node.js哪些能读取,可能是erp导出的xls文件有时版本还是什么不对,读取出来的base64编码文件开头有时不一致,就导致用xlsx.core.min.js插件,有些能解释出来,有些不能解释出来,xls文件另存为后就能解释出来,后来找了很多版本的资料各种测试,选了SheetJS js-xlsx,支持的文件格式多,怀疑之前可能是erp导出的格式或者版本不对,它支持浏览器、node.js、Adobe ExtendScript三种读取方式,选了第一种,SheetJS js-xlsxgithub.com/SheetJS/sheetjs挺恼火的,火狐浏览器能打开,谷歌,360打不开。github.com下载下来,demos\\browserify\\browserify.html示例,居然用不起,各种找问题,在sheetJS官网的网络版上能读取文件,能base64文本转换读取出来,github.com居然不行,过后把官网的保存整个网页,再打开测试,直接读取xls文件不行,但能转换。github.com   无法用   是因为要添加app.js才能用。过后再把保存下来的本地html文件读取了,改了一下,下面是读取xls文件代码,现在xls文件都能读取了

/*需引入它xlsx.full.min.js,如果是因为库使用了像Array#forEach这样的函数,CMAScript 5之前的版本,旧的浏览器需要添加引入jshint.js来提供缺少的函数。加载xlsx.full.min.js的script标签之前*/
function read_excelFile_test(){
    var path = "E:/测试/选片综合制作信息 (4).xls";
    var result = window.cep.fs.readFile(path, "Base64")
    if (0 == result.err) {
        //alert("成功");
        var xlsFile_Data = function() {
            //typeof console !== 'undefined'主要目的是兼容低版本IE,因为低版本原生ie(8及以下)window对象没有console,所以直接使用的话会导致脚本中断。
            if(typeof console !== 'undefined') console.log("onload", new Date());
            var wb = XLSX.read(result.data, {type:'base64', WTF:false});
            var result1 = {};
            wb.SheetNames.forEach(function(sheetName) {
                var roa = XLSX.utils.sheet_to_json(wb.Sheets[sheetName], {header:1});
                if(roa.length) result1[sheetName] = roa;
            });
            return JSON.stringify(result1);
        }();
        $("#workShowID").append("<br>外面的:"+xlsFile_Data);
    }else{
        alert("失败");
    }
}

2、node.js方法读取:因为CEP支持node.js,所以之前就用的这种方法,就出现上一篇文章的xls各种读取不出来,xlsx一下就读取出来,暂时还没找到具体原因。phtoshop CEP对于node.js的支持感觉是有限的,因为所有的cep+node.js,读取pdf文件,完全读不出来,node.js本身测试一下就读出来了。

3、ExtendScript方法读取:SheetJS js-xlsx的文档上写的支持ExtendScript,所以也用这个试过,用github.com/SheetJS/sheetjs/demos/extendscript示例也没读取出来,暂时也还没找到具体原因。这种是方法除了SheetJS js-xlsx官方发布的文章,其它地方没参考的文章。

以上是关于phtoshop CEP扩展 读取xls文件内容的主要内容,如果未能解决你的问题,请参考以下文章

phtoshop CEP扩展 读取xls文件内容

phtoshop CEP扩展 读取xls文件内容

关于HSSFWorkbook读取excel文件的问题

50_Pandas读取 Excel 文件 (xlsx, xls)

关于jquery读取excel文件内容 xls xlsx格式

从制表符分隔的 xls 文件中读取数据