整個問題搞了一周,各種插件測驗,
思路: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-xlsx的github.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官方發布的文章,其它地方沒參考的文章,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/287100.html
標籤:其他
上一篇:Day296.原子類 -Juc
