我从jquery数据表中获取信息并使用javascript创建csv格式的字符串,然后将该字符串发布到C#Web服务API调用以创建可以是下载。我发布到Web服务,而不是直接在JavaScript中创建下载文件,因为IE不喜欢这样做。我遇到的问题是我有一列可以包含字母数字或只是数字值。当数值非常长时,它们在Excel中打开时会转换为科学记数法。将javascript csv格式化的字符串强制为文本
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;
}
我看过一些帖子前面加上关于“=”就这么把它视为一个forumla价值,但它似乎没有被工作或我在正确做事。
任何帮助将不胜感激。
我不相信在Excel之外可以做任何事情来阻止这种行为。如果有的话,使用CSV等纯文本格式的可能性极小。 –
这听起来非常特别。编辑这个问题也许值得反思。 – radicalmatt
不是Excel专用的,我正在格式化一个如下所示的javascript字符串:“15061614380011”,“NEW”,“CITY”,“1234”,“NW TEST ST E”,“PASS CHRISTIAN”,“MS 811 INC” 6/16/2015 6:38:00 PM“,”N“,”AERATION CORE/LAWN“,”2015/6/16 2:38:00“ 当它到达C#代码时,它变成这样: \“15061614380011 \”,\“NEW \”,\“CITY \”,\“1234 \”,\“NW TEST ST E \”,“PASS CHRISTIAN \”,“MS 811 INC \”,\“ 6/16/2015 6:38:00 PM \“N \”,\“AERATION CORE/LAWN \”,\“2015年6月16日下午2:38:00 \” 我想能够格式化这些字符串中的任何一个,以便强制文本。我不希望用户必须在Excel中手动格式化列。 – bdk0172