javascript csv格式化字符串中的强制值为文本

时间:2015-06-30 16:24:56

标签: javascript c# jquery excel csv

我从jquery数据表中获取信息并使用javascript创建csv格式的字符串,然后将该字符串发布到C#web服务api调用以创建可下载的文件。我发布到Web服务而不是直接在javascript中创建文件以供下载,因为IE并不喜欢这样做。我遇到的问题是我有一个可以包含字母数字或仅包含数字值的列。当数值非常长时,在Excel中打开时会将它们转换为科学记数法。

                    for (var row = 0; row < $rep_data.length; row++) {
                    //$str_return += '<tr>';
                    detail = '';
                    for (var col = 0; col < self.dataColumns.length; col++) {
                        //omit select/checkbox column and wtb image column
                        if (col != 0 && col != 1) {
                            if ($rep_data[row][self.dataColumns[col].data] == null)
                                detail += ',';
                            else {
                                var re = /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[0-1]|0[1-9]|[1-2][0-9])T(2[0-3]|[0-1][0-9]):([0-5][0-9]):([0-5][0-9])(\.[0-9]+)?(Z|[+-](?:2[0-3]|[0-1][0-9]):[0-5][0-9])?$/;
                                if ($rep_data[row][self.dataColumns[col].data].match(re)) {
                                    var formatedDT = moment($rep_data[row][self.dataColumns[col].data]);
                                    detail += '"' + moment(formatedDT).format('M/D/YYYY h:mm:ss A') + '",';
                                }
                                else {
                                    var result = $rep_data[row][self.dataColumns[col].data].replace(/"/g, '""');
                                    result = '"' + result + '"';
                                    detail += result + ',';
                                }
                            }
                        }
                    }
                    detail = detail.substring(0, detail.length - 1) + '\n';
                    $str_return += detail;
                }

我已经看过一些关于前置&#39; =&#39;因为它被视为论坛,但它似乎没有工作或我做错了。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

从官方Excel页面: https://support.microsoft.com/en-us/kb/214233

希望它有所帮助。

答案 1 :(得分:0)

决定使用文本编辑器创建一个简单的csv文件,经过一些试验和错误后,使用&#34; =&#34;可以正确地格式化数字。我第一次尝试使用它时,我没有正确地做到这一点。

                                var re = /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[0-1]|0[1-9]|[1-2][0-9])T(2[0-3]|[0-1][0-9]):([0-5][0-9]):([0-5][0-9])(\.[0-9]+)?(Z|[+-](?:2[0-3]|[0-1][0-9]):[0-5][0-9])?$/;
                                if ($rep_data[row][self.dataColumns[col].data].match(re)) {
                                    var formatedDT = moment($rep_data[row][self.dataColumns[col].data]);
                                    detail += '="' + moment(formatedDT).format('M/D/YYYY h:mm:ss A') + '",';
                                }
                                else {
                                    var result = $rep_data[row][self.dataColumns[col].data].replace(/"/g, '""');
                                    if (isNumeric(result))
                                        result = '="' + result + '"';
                                    else
                                        result = '"' + result + '"';
                                    detail += result + ',';
                                }

输入此功能以检查&#34; isNumeric&#34;:     function isNumeric(n){                     return!isNaN(parseFloat(n))&amp;&amp; isFinite的(N);                 }