我从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;因为它被视为论坛,但它似乎没有工作或我做错了。
非常感谢任何帮助。
答案 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); }