【发布时间】:2015-06-30 16:24:56
【问题描述】:
我正在从 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;
}
我看过一些关于在值前加上“=”的帖子,因此它被视为论坛,但它似乎没有工作,或者我做错了什么。
任何帮助将不胜感激。
【问题讨论】:
-
我不相信在 Excel 之外可以做任何事情来阻止这种行为。如果有,那么在像 CSV 这样的纯文本格式上是不可能的。
-
这听起来很特别。可能值得编辑问题以反映更多。
-
不是 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","6/16/2015 2:38:00 PM" 当它到达 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\",\"6/16/2015 2:38:00 PM\" I希望能够格式化这些字符串中的任何一个,以便强制文本。我不希望用户必须在 Excel 中手动格式化列。
-
@user3379395 “我遇到的问题是我有一列可以包含字母数字或仅包含数值。当数值非常长时,在 Excel 中打开时会将它们转换为科学计数法。 "听起来很特别。这不是一个 JavaScript 问题。
标签: javascript c# jquery excel csv