如何使用指定的公式将html表转换为Excel文件?

时间:2019-01-19 16:38:50

标签: javascript html html-table

我有一个从firebase数据库中的数据生成的表。我想在单击按钮时将此导出到excel文件。但是我也希望能够通过添加公式以某种方式设置excel的样式,以便它可以将“已发送的金额”行加在一起,并在行的底部给出总计。

我尝试过在线查看,但没有成功。

我认为最简单的方法是导入已经制作好的具有公式的Excel,并将HTML表中的变量设置为Excel中已经具有的标题。

JavaScript代码

    var database = firebase.database().ref().child('transactions');
    database.once('value', function(snapshot){
        if(snapshot.exists()){
            var content = '';

            snapshot.forEach(function(data){
                var AmountSent = data.val().AmountSent;
                var CustomerName = data.val().CustomerName;
                var DateEffected = data.val().DateEffected;
                var Successful = data.val().Successful;
                var TimeEffected= data.val().TimeEffected;


            content += '<tr>';
            content += '<td>' + AmountSent + '</td>'; //column1
            content += '<td>' + CustomerName + '</td>';//column2

            content += '<td>' + DateEffected + '</td>'; //column1
            content += '<td>' + Successful + '</td>'; //column1
            content += '<td>' + TimeEffected + '</td>';//column2

            content += '</tr>';

            });

            $('#ex-table').append(content);
        }
    });

HTML

<body>
        <table style="width:100%" id="ex-table">
        <tr id="tr">
            <th>Amount Sent:</th>
            <th>Customer Name:</th> 
            <th>Date Effected:</th>
            <th>Successful</th>
            <th>Time Effected</th>
    </table> 

</body>

CSS

    #ex-table {
  font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
  border-collapse: collapse;
  width: 100%;
}

#ex-table td, #ex-table th {
  border: 1px solid #ddd;
  padding: 8px;
}

#ex-table tr:nth-child(even){background-color: #f2f2f2;}

#ex-table tr:hover {background-color: #ddd;}

#ex-table th {
  padding-top: 12px;
  padding-bottom: 12px;
  text-align: left;
  background-color: #4CAF50;
  color: white;
}

1 个答案:

答案 0 :(得分:1)

我来看看SheetJS。我已经将它们用于许多应用程序,它们可以处理多种格式。它们也可以从HTML表开始进行转换:https://github.com/SheetJS/js-xlsx#html-table-input

已更新

关于公式,您可以参考this answer来了解如何嵌入公式。请注意他的答案中的这一行,您可以在其中明确设置公式:

var cell = {f: 'A2+A3'};

基本公式可以通过输入f的键和带有函数定义的值来设置。将表输入库后,大部分工作将涉及遍历结果,并根据需要使用公式调整单元格值。有关公式的文档为here