【求助】文件操作

想用creator做一个web端的可以读写文件的功能用于游戏内属性编辑,不知道该怎么去操作?我查到网上大多都是js的,一般用啥模块?
我目前水平仅限于能看懂基础逻辑,麻烦大佬给个方向,我自己去查一下

功能主要想的是:(机型mac)
1、调起文件选择(文件格式xls、xlsx)
2、读取文件内容并解析
3、更改文件后保存为新的文件(文件格式json或xls、xlsx)

1赞

https://www.npmjs.com/package/xlsx

你目前水平仅限于能看懂基础逻辑,那我的水平怕是连基础逻辑都看不懂,呜呜呜

第一步用到的就是 FileReader Api
第二步 拿到数据自己解析或者找现有的库
第三部 把需要下载的结果转成 Blob 然后用超链接下载

全是知识盲区。。。我去查查资料试一试

js方面我确实只能看懂基础逻辑,深一点的都不会,我以前不是用creator的

大佬能举个例子讲解下filereader嘛?没看懂怎么用

用creator做这个工具,比直接用excel编辑的优势在哪里?

image 你咋不看我发的

我是想直接做个编辑器让策划能够直接修改游戏配置转化成程序里能用的表。不然现在就是需要excel编辑然后还要再转化成json,我想的是直接做一个工具展示出各个属性供策划修改并且保存的时候分别保存为json和excel。

英文不过关,那个网站看不大懂
而且我现在先卡在了怎么调起读取本地文件这里,还没到识别excel这步,一步步来嘛

// 上传文件
export function uploadForBrowser(): Promise {
if (!cc.sys.isBrowser) return
return new Promise(resolve => {

    let input = document.createElement('input');
    input.type = 'file';
    input.onchange = (e) => {
        let files = e.target['files'];
        if (files.length == 0) {
            return;
        }
        let fileReader = new FileReader();
        fileReader.onload = (e) => {
            //获得数据
            let dataURL = e.target.result as string;
            cc.assetManager.loadRemote<T>(dataURL, (error, asset: T) => {
                if (error)
                    resolve(null);
                else
                    resolve(asset);
            });
        }
        fileReader.readAsDataURL(files[0]);
    }
    input.click();
})

}

/**

  • 保存字符串内容到文件。

  • 效果相当于从浏览器下载了一个文件到本地。

  • @param textToWrite 要保存的文件内容

  • @param fileNameToSaveAs 要保存的文件名
    */
    export function saveForBrowser(textToWrite, fileNameToSaveAs) {
    if (!cc.sys.isBrowser) return
    var textFileAsBlob = new Blob([textToWrite], { type: ‘text’ });
    var downloadLink = document.createElement(“a”);
    downloadLink.download = fileNameToSaveAs;
    downloadLink.innerHTML = “Download File”;
    if (window.webkitURL != null) {
    // Chrome allows the link to be clicked
    // without actually adding it to the DOM.
    // var url = window.webkitURL.createObjectURL(textFileAsBlob);

     // var downloader = new jsb.Downloader({
     //     // This will match all url with .scene extension or all url with scene type
     //     'scene': function (url, callback) { }
     // });
     downloadLink.href = window.webkitURL.createObjectURL(textFileAsBlob);
    

    } else {
    // Firefox requires the link to be added to the DOM
    // before it can be clicked.
    downloadLink.href = window.URL.createObjectURL(textFileAsBlob);
    downloadLink.onclick = function () {
    if (downloadLink) document.body.removeChild(downloadLink);
    };
    downloadLink.style.display = “none”;
    document.body.appendChild(downloadLink);
    }
    downloadLink.click();

}

我这里上传和编辑后保存的都是json 配置文件就是json

1赞

感谢大佬,原来可以直接调用click???我特么一直不知道该怎么触发,我试试这块

直接打包成win32的就ok了

没懂。。。而且win32的exe不能在mac上跑吧?

:rofl:那就打包为mac程序 调用jsb的文件操作接口

:rofl:太麻烦了,楼上大佬的前面的代码实测可用,我现在得去想想怎么去解析读出来的数据了

用node-xlsx模块去解析xls

我打算放弃excel了,直接json然后在我的工具里解析展示对应数据和描述给策划,然后模拟部分excel功能就好,反正也不会需要用到所有功能。这样也省得策划两个工具来回用了

1和3我之前做关卡编辑器的时候用到过,2没处理过,但是如果1得到的文件数据类型是json的话应该也好解析吧。这方面应该有百度,找到了分享一下:)