Infrastics UltraGrid-不将公式导出到Excel



我有一个非常简单的测试应用程序,带有InfrasticsUltraGrid,我用一些货币值填充了它。

UltraDataSource dataSource = new UltraDataSource();
dataSource.Band.Columns.Add("Cost1", typeof(double));
dataSource.Band.Columns.Add("Cost2", typeof(double));
dataSource.Band.Columns.Add("Cost3", typeof(double));
var dataRow = dataSource.Rows.Add();
dataRow["Cost1"] = 10.50;
dataRow["Cost2"] = 12.30;
dataRow["Cost3"] = 14.96;
gridResults.DataSource = dataSource;
gridResults.DataBind();
gridResults.DisplayLayout.Bands[0].Columns[1].Format = "C";
gridResults.DisplayLayout.Bands[0].Columns[2].Format = "C";
gridResults.DisplayLayout.Bands[0].Columns[3].Format = "C";

实际上,我想使用一个自定义格式字符串"$0.00",因为我的货币在不同的列中可能不同,但为了简单起见,我一直使用通用的C格式字符串。然后,我使用UltraGridExcelExporter对象将网格导出到MS Excel,如下所示。

UltraGridExcelExporter exporter = new UltraGridExcelExporter();
exporter.ExportFormulas = true;
exporter.Export(gridResults, filename);

屏幕上的显示与我所期望的一样,货币符号和值的格式正确,但当我查看生成的Excel文件时,值显示为标准数字,没有保留格式。我已经检查了文档,默认是导出格式,但目前我不知道自己做错了什么。

您所能做的就是处理UltraGridExcelExporterInitializeColumn事件。在这种情况下,您可以访问该列的excel格式字符串以及网格列格式字符串。如果列有格式字符串,请检查事件,并将excel格式字符串设置为:

private void UltraGridExcelExporterInitializeColumn(object sender, InitializeColumnEventArgs e)
{
if (!string.IsNullOrEmpty(e.Column.Format))
{
switch (e.FrameworkFormatStr)
{
case "C":
e.ExcelFormatStr = "$#,##0.00";
break;
// handle here other format strings you may have
default:
e.ExcelFormatStr = e.FrameworkFormatStr;
break;
}
}
}

请注意,并非C#中的所有格式字符串都与Excel中的格式字符串相同。

最新更新