Javascript 将包含2个数据的单元格导出到csv ag网格
我有一个网格,其中包含一些单元格2和3个数据。当我尝试将网格导出到Javascript 将包含2个数据的单元格导出到csv ag网格,javascript,angular,typescript,export-to-csv,ag-grid,Javascript,Angular,Typescript,Export To Csv,Ag Grid,我有一个网格,其中包含一些单元格2和3个数据。当我尝试将网格导出到csv文件时,这些列不会被导出。我相信在编写columnKeys时,我必须为它们编写特殊的代码。这是我的界面: 我尝试使用append(+)运算符,但没有成功。这是我的密码: import { Component, OnInit } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { Grid, GridApi } fr
csv
文件时,这些列不会被导出。我相信在编写columnKeys
时,我必须为它们编写特殊的代码。这是我的界面:
我尝试使用append(+)运算符,但没有成功。这是我的密码:
import { Component, OnInit } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Grid, GridApi } from 'ag-grid-community';
import { AgGridAngular } from 'ag-grid-angular';
import { DealsService } from '../services/deals.service';
import * as moment from 'moment';
@Component({
selector: 'app-deals',
templateUrl: './deals.component.html',
styleUrls: ['./deals.component.scss']
})
export class DealsComponent implements OnInit {
private gridApi;
gridOptions = {
rowHeight :90,
headerHeight:60,
defaultColDef: {
sortable: true
},
}
columnDefs = [
{headerName: 'Block' ,field:'BLOCKID',width:200, resizable:true, filter: 'agNumberColumnFilter'} ,
{headerName: 'Deal' ,field:'DEALID',width:200, resizable:true, } ,
{headerName: 'Deal Class' ,field:'DEALCLASS',width:200, resizable:true, } ,
{headerName: 'Instr Class' ,field:'INSTRCLASS',width:200, resizable:true, } ,
// {headerName: 'Trade \n Start',cellRendererFramework: DateCellRendererComponent ,width:210, resizable:true, filter: 'agDateColumnFilter' } ,
{headerName: 'Trade', field : 'TRADEDATE', valueFormatter : this.dateFormatter ,width:150, resizable:true, filter : 'agDateColumnFilter', filterParams: { //inRangeInclusive: true,
comparator: function(filterLocalDateAtMidnight, cellValue) {
//using moment js
var dateAsString = moment(cellValue).format('DD/MM/YYYY');
var dateParts = dateAsString.split("/");
var cellDate = new Date(Number(dateParts[2]), Number(dateParts[1]) - 1, Number(dateParts[0]));
if (filterLocalDateAtMidnight.getTime() == cellDate.getTime()) {
return 0
}
if (cellDate < filterLocalDateAtMidnight) {
return -1;
}
if (cellDate > filterLocalDateAtMidnight) {
return 1;
}
}
}} ,
{headerName: 'Start', field : 'STARTDATE', valueFormatter : this.dateFormatter ,width:200, resizable:true, filter : 'agDateColumnFilter', filterParams: { //inRangeInclusive: true,
comparator: function(filterLocalDateAtMidnight, cellValue) {
//using moment js
var dateAsString = moment(cellValue).format('DD/MM/YYYY');
var dateParts = dateAsString.split("/");
var cellDate = new Date(Number(dateParts[2]), Number(dateParts[1]) - 1, Number(dateParts[0]));
if (filterLocalDateAtMidnight.getTime() == cellDate.getTime()) {
return 0
}
if (cellDate < filterLocalDateAtMidnight) {
return -1;
}
if (cellDate > filterLocalDateAtMidnight) {
return 1;
}
}
}} ,
{headerName: 'Folder' ,field:'FOLDERSHORTNAME',filter:true ,width:200, resizable:true},
{headerName: 'Cpty' ,field:'CPTYSHORTNAME',width:130, resizable:true, filter: true} ,
,
{headerName: 'ShortName \n Name', cellRenderer: function(params){ return params.data.INSTRSHORTNAME + '<br/>' + params.data.INSTRNAME },width:250, resizable:true, sortable: false} ,
{headerName: 'Quantity \n Settl.Amt',cellRenderer: function(params){ return params.data.QUANTITY + '<br/>' + params.data.SETTLEAMT + '\n'+ params.data.SETTLECURRENCIESSHORTNAME },width:200, resizable:true, sortable: false} ,
{headerName: 'Rate \n Fees', cellRenderer: function(params){ return params.data.FLOATINGRATESSHORTNAME + '<br/>' + params.data.RENTSPREADFIXEDRATE },width:200, resizable:true, sortable: false} ,
{headerName: 'Category \n Type',cellRenderer: function(params){ return params.data.DEALCAT + '<br/>' + params.data.DEALTYPE },width:200, resizable:true, sortable: false} ,
{headerName: 'End', field : 'ENDDATE', valueFormatter : this.dateFormatter ,width:200, resizable:true, filter : 'agDateColumnFilter', filterParams: {
//inRangeInclusive: true,
comparator: function(filterLocalDateAtMidnight, cellValue) {
//using moment js
var dateAsString = moment(cellValue).format('DD/MM/YYYY');
var dateParts = dateAsString.split("/");
var cellDate = new Date(Number(dateParts[2]), Number(dateParts[1]) - 1, Number(dateParts[0]));
if (filterLocalDateAtMidnight.getTime() == cellDate.getTime()) {
return 0
}
if (cellDate < filterLocalDateAtMidnight) {
return -1;
}
if (cellDate > filterLocalDateAtMidnight) {
return 1;
}
}
}}
];
rowData : any;
constructor(private service:DealsService) {
}
dateFormatter(params){
return moment(params.value).format('DD/MM/YYYY');
}
onBtExport() {
var params = {
columnSeparator: ';',
columnKeys: ['BLOCKID','DEALID','DEALCLASS','INSTRCLASS','TRADEDATE','STARTDATE','FOLDERSHORTNAME','CPTYSHORTNAME','INSTRSHORTNAME' + 'INSTRNAME','QUANTITY'+ 'SETTLEAMT','FLOATINGRATESSHORTNAME'+'RENTSPREADFIXEDRATE','DEALCAT'+'DEALTYPE','ENDDATE']
};
this.gridApi.exportDataAsCsv(params);
}
onGridReady(params) {
this.gridApi = params.api;
}
ngOnInit() {
this.service.getDealsList().subscribe(data => {
this.rowData = data;
}); }
}
从'@angular/core'导入{Component,OnInit};
从'@angular/common/http'导入{HttpClient};
从“ag Grid社区”导入{Grid,GridApi};
从'ag grid angular'导入{aggrid angular};
从“../services/deals.service”导入{deasservice};
从“时刻”导入*作为时刻;
@组成部分({
选择器:“应用程序交易”,
templateUrl:“./deals.component.html”,
样式URL:['./deals.component.scss']
})
导出类DealsComponent实现OnInit{
私有网格API;
网格选项={
行高:90,
人头数:60,,
默认值f:{
可排序:正确
},
}
columnDefs=[
{headerName:'Block',字段:'BLOCKID',宽度:200,可调整大小:true,过滤器:'agNumberColumnFilter'},
{headerName:'Deal',字段:'DEALID',宽度:200,可调整大小:true,},
{headerName:'Deal Class',字段:'Deal Class',宽度:200,可调整大小:true,},
{headerName:'Instr Class',字段:'INSTRCLASS',宽度:200,可调整大小:true,},
//{headerName:'Trade\n Start',CellRenderFramework:DateCellRenderComponent,宽度:210,可调整大小:true,筛选器:'agDateColumnFilter'},
{headerName:'Trade',字段:'TRADEDATE',valueFormatter:this.dateFormatter,宽度:150,可调整大小:true,筛选器:'agDateColumnFilter',filterParams:{//inRangeInclusive:true,
比较器:函数(filterLocalDateAtMidnight,cellValue){
//使用矩js
var dateAsString=时刻(cellValue).format('DD/MM/yyyyy');
var dateParts=dateAsString.split(“/”);
var cellDate=新日期(编号(日期部分[2]),编号(日期部分[1])-1,编号(日期部分[0]);
如果(filterLocalDateAtMidnight.getTime()==cellDate.getTime()){
返回0
}
if(cellDatefilterLocalDateAtMidnight){
返回1;
}
}
}} ,
{headerName:'Start',field:'STARTDATE',valueFormatter:this.dateFormatter,宽度:200,可调整大小:true,筛选器:'agDateColumnFilter',filterParams:{//inRangeInclusive:true,
比较器:函数(filterLocalDateAtMidnight,cellValue){
//使用矩js
var dateAsString=时刻(cellValue).format('DD/MM/yyyyy');
var dateParts=dateAsString.split(“/”);
var cellDate=新日期(编号(日期部分[2]),编号(日期部分[1])-1,编号(日期部分[0]);
如果(filterLocalDateAtMidnight.getTime()==cellDate.getTime()){
返回0
}
if(cellDatefilterLocalDateAtMidnight){
返回1;
}
}
}} ,
{headerName:'Folder',字段:'FOLDERSHORTNAME',筛选器:true,宽度:200,可调整大小:true},
{headerName:'Cpty',字段:'CPTYSHORTNAME',宽度:130,可调整大小:true,筛选器:true},
,
{headerName:'ShortName\n Name',cellRenderer:function(params){return params.data.INSTRSHORTNAME+'
'+params.data.INSTRNAME},宽度:250,可调整大小:true,可排序:false},
{headerName:'Quantity\n settle.Amt',cellRenderer:function(params){return params.data.Quantity+'
'+params.data.settleteamt+'\n'+params.data.settletecurrencesshortname},宽度:200,可调整大小:true,可排序:false},
{headerName:'Rate\n Fees',cellRenderer:function(params){return params.data.FLOATINGRATESSHORTNAME+'
'+params.data.RENTSPREADFIXEDRATE},宽度:200,可调整大小:true,可排序:false},
{headerName:'Category\n Type',cellRenderer:function(params){return params.data.DEALCAT+'
'+params.data.DEALTYPE},宽度:200,可调整大小:true,可排序:false},
{headerName:'End',field:'ENDDATE',valueFormatter:this.dateFormatter,宽度:200,可调整大小:true,筛选器:'agDateColumnFilter',filterParams:{
//是的,
比较器:函数(filterLocalDateAtMidnight,cellValue){
//使用矩js
var dateAsString=时刻(cellValue).format('DD/MM/yyyyy');
var dateParts=dateAsString.split(“/”);
var cellDate=新日期(编号(日期部分[2]),编号(日期部分[1])-1,编号(日期部分[0]);
如果(filterLocalDateAtMidnight.getTime()==cellDate.getTime()){
返回0
}
if(cellDatefilterLocalDateAtMidnight){
返回1;
}
}
}}
];
行数据:任何;
构造函数(专用服务:解除服务){
}
日期格式化程序(参数){
返回力矩(参数值)。格式('DD/MM/YYYY');
}
onBtExport(){
变量参数={
列分隔符:';',
列键:['BLOCKID'、'DEALID'、'DEALCLASS'、'INSTRCLASS'、'TRADEDATE'、'STARTDATE'、'FOLDERSHORTNAME'、'CPTYSHORTNAME'、'INSTRSHORTNAME'+'INSTRNAME'、'QUANTITY'+'SettleMatt'、'FloatingMatherShortName'+'RentSpreadedFixedRate'、'DEALCAT'+'DEALTYPE'、'ENDDATE']
};
this.gridApi.exportDataAsCsv(params);
}
onGridReady(参数){
this.gridApi=params.api;
}
恩戈尼尼特(){
this.service.getDealsList().subscribe(数据=>{
this.rowData=数据;
}); }
}
我非常感谢你的帮助。谢谢。您需要使用与
cellRenderer
类似的功能定义ValueGetter
(可能会删除
)
根据—
将使用原始值,而不是单元渲染器的结果,
意思是:
Cell Renderers will NOT be used.
Value Getters will be used.
Cell Formatters will NOT be used (use processCellCallback instead).
您需要使用与
cellRenderer
类似的函数定义ValueGetter
(可能会删除
)
根据—
将使用原始值,而不是单元渲染器的结果,
意思是:
Cell Renderers will NOT be used.
Value Getters will be used.
Cell Formatters will NOT be used (use processCellCallback instead).
我们使用ag网格和Adaptive,它们具有导出功能,允许您