我使用pdfmake库通过Angular UI Grid导出 pdf 内容。你能告诉我如何格式化日期吗?谢谢。
目前它显示如下:
角网格是这样的:
{
name: app.localize('BrDateReceived'),
field: 'bpoHeaderPerformedFors[0].dateReceived',
cellFilter: 'date:\'MM/dd/yyyy\'',
width: 140,
},
我使用pdfmake库通过Angular UI Grid导出 pdf 内容。你能告诉我如何格式化日期吗?谢谢。
目前它显示如下:
角网格是这样的:
{
name: app.localize('BrDateReceived'),
field: 'bpoHeaderPerformedFors[0].dateReceived',
cellFilter: 'date:\'MM/dd/yyyy\'',
width: 140,
},
很好的讨论: cellFilter 不适用于 Pdfmake
更新
我发现 UI-grid 在 gridoptions 中有一个函数可以让你回调每个单元格。使用 angular-moment 和 gridoptions.exporterFieldCallback 我能够更改 PDF 中的每个单元格。查看此plnkr中 app.js 文件中的第 43 到 47 行。
另外,请注意,我更新了下面的链接以在 github 上使用 angular-moment 和正确的 repo。我之前使用的那个不是我推荐的那个。
祝你好运!
原始答案
我建议将 angular-moment 导入您的应用程序,然后在您的文档定义中使用它。我以前成功地做到了这一点。像这样:
{text: 'DATE: ' + moment(bpoHeaderPerformedFors[0].dateReceived).format("MM-DD-YYYY")}
查看有关angular-moment或momentjs的完整文档的更多信息(角度版本基于)。
祝你好运!
答案是结合使用 exporterFieldCallback 函数和 angular 内置过滤器。首先包括 $filter:
app.controller('myController', ['$scope', '$filter', function ($scope,$filter){
然后在您的网格选项中:
$scope.gridOptions = {
exporterFieldCallback: function (grid, row, col, input)
{
if (col.name == 'myDateColumnName')
{
return $filter('date')(input, 'medium');
}
else
{
return input;
}
},
}
你可以使用任何你喜欢的日期过滤器类型,中只是一个适合我目的的例子。
我使用了与phattyD说的相同的代码。我还要求使用 ui-grid 附带的默认单元格模板来一般地执行此检查:
// Format the DATE
// http://ui-grid.info/docs/#/api/ui.grid.exporter.api:GridOptions
gridOptions.exporterFieldCallback = function ( grid, row, col, value ){
if ( col.colDef.cellTemplate == 'ui-grid/date-cell' || col.colDef.type == 'date' ){
value = $filter('date')(value, 'yyyy-MM-dd');
}
return value;
}
我附上我的完整代码来解决Excel和CSV的相同情况。
希望能帮助到你
这是我的Plunkr。