我需要将RadGridView
的Excel导出,以使其在Excel中具有“数字”的单元格格式,格式样式为“ {0:#,## 0.00}”。
我通过使用.Export处理ElementExporting
事件来实现这一点:
grid.ElementExporting += Grid_ElementExporting;
grid.Export(stream, new GridViewExportOptions()
{
Format = ExportFormat.ExcelML,
ShowColumnHeaders = true,
ShowColumnFooters = true
});
private void Grid_ElementExporting(object sender, GridViewElementExportingEventArgs e)
{
if (e.Element == ExportElement.Cell)
{
var column = e.Context as GridViewDataColumn;
if (column?.DataType?.Name == "Decimal")
{
e.Value = string.Format(@"{0:#,##0.00}", e.Value);
}
}
}
但是,我在Excel中打开时收到错误消息“ X的文件格式和扩展名不匹配。” ,尽管它肯定是.xls扩展名。我可以点击过去,然后正确加载。
更多地阅读它,听起来我应该更新为使用.ExportToXlsx,并且无论如何获取.xlsx中的文件还是很容易的事。
我将.Export
更改为.ExportToXlxs
,将ElementExporting
更改为ElementExportingToDocument
,并且格式仍然有效,但是所有单元格都恢复为“常规”格式Excel,而我需要将它们作为“数字”。
有关于应用视觉样式的文档: https://docs.telerik.com/devtools/wpf/controls/radgridview/export/how-to/style-exported-documents
但不要更改我可以找到的基础格式。
有什么建议吗?
答案 0 :(得分:1)
您应按照the official docs中的说明使用CellValueFormat
。
CellValueFormat
类是在Telerik.Windows.Documents.Spreadsheet.dll
中定义的,因此您需要引用此程序集