使用带有格式化文本的 ASPxGridViewExporter 将 ASPxGridView 导出到 xlsx

Export ASPxGridView to xlsx using ASPxGridViewExporter with formatted text

我有一个 ASPxGridView,它有许多列(GridViewDataComboBoxColumnGridViewDataHyperLinkColumn 类型)。在网格的 CustomColumnDisplayText 事件后面的代码中,我按以下方式设置单元格文本的格式:

protected void MyGrid_CustomColumnDisplayText(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewColumnDisplayTextEventArgs e)
{
    if (e.Column is DevExpress.Web.ASPxGridView.GridViewDataColumn)
    {
        switch (e.Column.FieldName)
        {
            case "Energy":
                if (e.Value is float)
                {
                    // the FormatEnergy method here returns for example "323.32 kWh"
                    e.DisplayText = DataDisplayTools.Instance.FormatEnergy((float)e.Value);
                }
                break;

                // other cases

        }
    }
}

为了以 .xlsx 格式导出网格视图,我使用 ASPxGridViewExporter:

protected void lnkXlsxExport_Click(object sender, EventArgs e)
{
    try
    {
        gridViewExporter.DataBind();
        gridViewExporter.WriteXlsxToResponse();
    }
    catch (Exception e1)
    {
        //
    }
}

我的问题是,当我将网格视图导出到 .xlsx 时,导出文件中列值的格式与网格视图中的不同。 例如,网格视图中的值(它们在 CustomColumnDisplayText 事件中格式化)是

但是导出后 xlsx 文件中的这些值看起来像

我的问题是:可以使用 [=16] 将 ASPxGridView 导出到 excel 文件,该文件在 excel 文件的单元格中具有与网格视图完全相同的文本=]?

ASPxGridViewExporter 按值导出网格内容,而不是显示文本。创建 XlsxExportOptions class, set its TextExportMode property to Text, and use this instance during exporting. Here is a corresponding ticket on DevExpress Support Center: ASPxGridView - The CustomColumnDisplayText event doesn't not work when exporting to Excel after upgrading from v.9.2 to v.13.2.

的实例

您可能还会遇到 ASPxGridView / MVC GridView Extension - Excel Data Aware Export FAQ 问题单中描述的问题。这张工单提供了一个解决方案。

试试这个。

<asp:UpdatePanel runat="server">
    <Triggers>
        <asp:PostBackTrigger ControlID="lnkXlsxExport" />
    </Triggers>
</asp:UpdatePanel>