首页 > 解决方案 > 如何将javascript生成的文件附加到fileupload中?

问题描述

我正在研究类似于 这个项目的东西,它使用 javascript 生成和下载 excel 文件。有什么方法可以将生成的文件附加到文件上传器中,以便在提交表单时最终上传它。

function go(){

        var excel = $JExcel.new("Calibri light 10 #333333");        
        excel.set( {sheet:0,value:"This is Sheet 1" } );
        excel.addSheet("Sheet 2");

        var evenRow=excel.addStyle ( {                                                                  // Style for even ROWS
            border: "none,none,none,thin #333333"});                                                    

        var oddRow=excel.addStyle ( {                                                                   // Style for odd ROWS
            fill: "#ECECEC" ,                                                                           // Background color, plain #RRGGBB, there is a helper $JExcel.rgbToHex(r,g,b)
            border: "none,none,none,thin #333333"}); 


        for (var i=1;i<50;i++) excel.set({row:i,style: i%2==0 ? evenRow: oddRow  });                    // Set style for the first 50 rows
        excel.set({row:3,value: 30  });                                                                 // We want ROW 3 to be EXTRA TALL

        var headers=["Header 0","Header 1","Header 2","Header 3","Header 4"];                           // This array holds the HEADERS text
        var formatHeader=excel.addStyle ( {                                                             // Format for headers
                border: "none,none,none,thin #333333",                                                  //      Border for header
                font: "Calibri 12 #0000AA B"});                                                         //      Font for headers

        for (var i=0;i<headers.length;i++){                                                             // Loop all the haders
            excel.set(0,i,0,headers[i],formatHeader);                                                   // Set CELL with header text, using header format
            excel.set(0,i,undefined,"auto");                                                            // Set COLUMN width to auto (according to the standard this is only valid for numeric columns)
        }


        // Now let's write some data
        var initDate = new Date(2000, 0, 1);
        var endDate = new Date(2016, 0, 1);
        var dateStyle = excel.addStyle ( {                                                              
                align: "R",                                                                             
                format: "yyyy.mm.dd hh:mm:ss",                                                          
                font: "#00AA00"});                                                                      

        for (var i=1;i<50;i++){                                                                         
            excel.set(0,0,i,"This is line "+i);                                                         
            var d=randomDate(initDate,endDate);                                                         
            excel.set(0,1,i,d.toLocaleString());                                                    
            excel.set(0,2,i,$JExcel.toExcelLocalTime(d));                                               
            excel.set(0,3,i,$JExcel.toExcelLocalTime(d),dateStyle);                                     
            excel.set(0,4,i,"Some other text");                                                         
            }


            excel.generate("SampleData.xlsx");//the file to append to file uploader .


    }

谢谢 。

标签: javascriptjquery

解决方案


您不需要将生成的文件附加到表单以保存它,您生成的文件可以是base64base64 文本,然后可以将隐藏输入发送到服务器并制作文件serverSide

就像是 :

(function(file){
    // load file

    // get base 64

    // append base64 to form
    // form.querySelector("#fileBase64").value = base64;

})(createdFile)

推荐阅读