【发布时间】:2019-08-06 13:26:13
【问题描述】:
我需要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
但不要更改我能找到的底层格式。
有什么建议吗?
【问题讨论】:
-
您是否尝试按照the official docs 中的说明创建
CellValueFormat? -
我有,但看起来我一直在误用它。我试过“Format = CellValueFormat.”,然后看到唯一的选择是 GeneralFormat。我将尝试创建一个,谢谢。
-
CellValueFormat类在Telerik.Windows.Documents.Spreadsheet.dll中定义。您需要引用此程序集。 -
非常感谢,已经搞定了。
标签: excel wpf radgridview