【发布时间】:2016-07-01 05:02:22
【问题描述】:
我正在使用 Angular UI-grid 以表格形式显示数据,并且我还添加了将可见数据导出到 CSV 文件中的功能,但我的问题是在导出的文件中,所有字符串都用双引号括起来。
谁能告诉我如何删除那些不必要的双引号? 任何帮助表示赞赏
【问题讨论】:
标签: csv angular-ui-grid double-quotes
我正在使用 Angular UI-grid 以表格形式显示数据,并且我还添加了将可见数据导出到 CSV 文件中的功能,但我的问题是在导出的文件中,所有字符串都用双引号括起来。
谁能告诉我如何删除那些不必要的双引号? 任何帮助表示赞赏
【问题讨论】:
标签: csv angular-ui-grid double-quotes
您所指的行为来自 uiGridExporterService 服务中的函数 formatFieldAsCsv(field)。没有 API 可让您通过设置更改此设置。
然而,我们可以做的是使用decorator 来覆盖此默认行为,而无需修改 ui-grid 模块本身。
我已经在working plunker 中证明了这一点。
在下面的 sn-p 中,我指定了 qualifier 来替换最初使用的引号。有了这个,你可以让函数保持原样并且根本没有限定符,或者你可以将它的值更改为你喜欢的任何值,这将成为每个字段的前缀/后缀。
app.config(['$provide', function ($provide) {
$provide.decorator('uiGridExporterService', [
'$delegate',
function myServiceDecorator($delegate) {
$delegate.formatFieldAsCsv = formatFieldAsCsv;
return $delegate;
}
]);
function formatFieldAsCsv(field) {
var qualifier = '';
if (field.value === null) { // we want to catch anything null-ish, hence just == not ===
return '';
}
if (typeof(field.value) === 'number') {
return field.value;
}
if (typeof(field.value) === 'boolean') {
return (field.value ? 'TRUE' : 'FALSE');
}
if (typeof(field.value) === 'string') {
return qualifier + field.value.replace(/"/g, '""') + qualifier;
}
return JSON.stringify(field.value);
}
}]);
【讨论】: