繁体   English   中英

使用 javascript 将 xlsx(字节数组)转换为 csv(字符串)

[英]Convert xlsx (byte array) to csv(string) with javascript

我来自 c# 所以对 java 脚本一无所知。 I have excel file (xlsx) that I red into byte array (with unity3d c# in webGL build) and want to send it into java script function that parse it into csv structure and return as string. 所以问题部分仅与接收 xlsx 作为字节数组(或来自 memory 流的任何类型)并以字符串形式返回 csv 的 java 脚本有关。 我需要那个 function。 我还需要什么(库)? (更新) javascript 代码是

MyConverterXlsxToCsvReturn: function (array,size) {

    var buffer = new ArrayBuffer(size);
    for (var i = 0; i < size; i++)
        buffer[i] =  HEAPU8[array + i];       
    
    var txt = XLSX.utils.sheet_to_txt(buffer, {type: 'arraybuffer'});

    window.alert(Pointer_stringify(txt));
    window.alert(Pointer_stringify(txt.length));

    var returnStr = Pointer_stringify(txt);
    var bufferSize = lengthBytesUTF8(returnStr) + 1;
    var buffer = _malloc(bufferSize);
    stringToUTF8(returnStr, buffer, bufferSize);
    return buffer;
},

我正在尝试发送 byte[] 并转换为 arraybuffer,但正在寻找正确的方法来做到这一点。 现在 function 返回空字符串。

我想转换我在 C# 中收到的字节数组,然后将 javascript 中的数组变红。 作为解决方案,我使用以下方法将字节数组转换为十六进制字符串:

private string ByteArrayToString(byte[] ba)
    {
        StringBuilder hex = new StringBuilder(ba.Length * 2);
        foreach (byte b in ba)
            hex.AppendFormat("{0:x2}", b);
        return hex.ToString();
    }

然后我将此字符串发送到 javascript function 并转换为数组。 rezult 作为字符串返回:

ExcelHexToCSV: function (hexStr) {
    console.log("javascript: ExcelHexToCSV");
    console.log("javascript received: " + Pointer_stringify(hexStr));

    // convert part
    var str = Pointer_stringify(hexStr);
    var a = [];
    for (var i = 0, len = str.length; i < len; i += 2) {
        a.push(parseInt(str.substr(i, 2), 16));
    }
    var data = new Uint8Array(a);
    console.log("javascript hex_to_byte:" + data);

    // excel part
    var workbook = XLSX.read(data, {type: "array"});
    var sheetname = workbook.SheetNames[0];
    console.log("javascript sheetname:  " + sheetname);
    var sheetdata = XLSX.utils.sheet_to_csv(workbook.Sheets[sheetname]);
    console.log("javascript sheetdata: = " + sheetdata);

    var rezult = sheetdata;

    var returnStr = rezult;
    var bufferSize = lengthBytesUTF8(returnStr) + 1;
    var buffer = _malloc(bufferSize);
    stringToUTF8(returnStr, buffer, bufferSize);
    return buffer;
},

我的示例项目的 Github 链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM