我如何将 -tabulator excel- 对象发送到服务器端(node.js)?

2024-03-12

我可以成功将制表表导出到 Excel 并将其作为文件存储在本地计算机上。但是我不知道如何将 Excel 对象发送到服务器。

在保存到本地计算机并将其发送到服务器端之前,如何将制表器 Excel 转换为 Base64?

我已经对 jsPdf 做了同样的事情并使用以下方式发送 pdf: doc.output('datauristring').

成功的场景应该是: 1. 生成excel对象(在客户端) 2. 将其转换为base64 Uri(在客户端) 3.发送到服务器端(node.js) 4.再次转换为文件(使用fs.写入本地路径)

任何帮助将不胜感激! 提前致谢!

UPDATE

下面我给大家介绍一下发送pdf到服务器的工作场景。必须对 xlsx 执行同样的操作。我尝试在保存到本地客户端计算机之前将制表器对象存储到变量,但没有成功。


    table.download("xlsx", "test.xlsx", {sheetName:"testName"});

PDF 工作场景

  1. 在客户端创建 PDF
function canvasRun(){            
        // SYSTEM DATE TO ADD AS NAME
        var today = new Date();
        var dd = String(today.getDate()).padStart(2, '0');
        var mm = String(today.getMonth() + 1).padStart(2, '0');
        var yyyy = today.getFullYear();
        today = dd+ '-' + mm + '-' +yyyy;
                                             html2canvas(document.getElementById("grid")).then(function(canvas) {

        //var doc = new jsPDF("l","mm","a4",true); //landscape, millimetre, A4, pdfCompression
        var width = doc.internal.pageSize.getWidth();
        var height = doc.internal.pageSize.getHeight();
        var img = canvas.toDataURL('image/png');

        doc.text("Test1 : "+ today, 110, 15);  // TEXT AT THE CENTER OF REPORT
        doc.text('Test2 : '+ grandTotal +' mm', 200, 15);  // TEXT AT THE CENTER OF REPORT
        doc.addImage(logo, 'PNG', 10, 1, 38, 20,'FAST');// MARGINS LEFT,TOP,WIDTH,HEIGHT

        doc.addImage(img, 'JPEG', 10, 20,width-20, height-20,'','FAST');
        doc.save('testReport-'+today+'.pdf'); // DOWNLOAD TO LOCAL COMPUTER

        });//HTMLCanvas end
        flagGeneratedPdf=1;
        }

  1. 发送PDF到服务器端

function sendToServer(){

// CONVERT PDF FILE TO BASE64 STREAM URI
var convPDF= doc.output('datauristring'); 

// LOAD URI PDF TO OBJECT
var obj = new Object;
obj.attachment=convPDF;

.....
.....

//method to send data to server        
}

  1. 服务器接受对象并处理它

    function dataFromClient(attachment){

    // CONVERT INCOMING URi TO base64 FILE AND REMOVE MIME TYPE FROM HEADER
    let base64String = attachment;
    let base64pdf = base64String.split(';base64,').pop();

    // GENERATE PDF LOCAL SERVER FILE, IF EXIST REPLACE...
    fs.writeFile("test.pdf", base64pdf,{encoding:'base64'}, (err) => {
    if (err) console.log(err);
    console.log("Successfully Written to File.");});
    }

[SOLVED]

我用这个找到了解决方案post https://stackoverflow.com/a/36281449/4636906

  1. 拦截Tabulator的blob对象
downloadReady:function(fileContents, blob){

getBase64(blob);

return blob;
}, 
  1. 使用此方法将 blob 转换为 base64 dataUri
function getBase64(file) {
   var reader = new FileReader();
   reader.readAsDataURL(file);
   reader.onload = function () {
    // console.log(reader.result);
     var xlsxUriString =reader.result;
   };
   reader.onerror = function (error) {
     console.log('Error: ', error);
   };
}
  1. Send xlsxUriString到服务器端(node.js)

  2. 将base64转换为文件并保存到本地文件夹

 let base64StringXlsx = attachment2;
 let base64Xlsx = base64StringXlsx.split(';base64,').pop();

 fs.writeFile("D:/testFolder/test.xlsx", base64Xlsx,{encoding:'base64'}, (err) => {
             if (err) console.log(err);
             console.log("Successfully Written to File xlsx.");
});


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我如何将 -tabulator excel- 对象发送到服务器端(node.js)? 的相关文章

随机推荐