将带有多行文本的列的 ASPxGridView 导出到 excel

Export ASPxGridView with column with multiline text to excel

是否可以使用 ASPxGridViewExporter 将包含多行文本的列的 ASPxGridView 导出到 excel?

我有一个 ASPxGridView,其列包含多行文本。 当我使用 ASPxGridViewExporter 导出网格数据时,多行文本呈现为一行(没有换行符)。

我尝试了
和“\n”(换行符)作为行分隔符。

顺便说一句,属性 PropertiesTextEdit-EncodeHtml 的值在该列上是错误的。

谢谢

有两种方法可以达到您的要求:

  1. 在 XlsxExportOptionsEx 中指定 WYSIWYG 导出类型:

    XlsxExportOptionsEx options = new XlsxExportOptionsEx()
    {
        ExportType = DevExpress.Export.ExportType.WYSIWYG
    };
    ASPxGridView1.ExportToXlsx("Test.xlsx", options);
    
  2. 告诉导出器您想要数据感知导出并处理 CustomizeCell 事件以将单元格换行设置为真:

    XlsxExportOptionsEx options = new XlsxExportOptionsEx()
    {
        ExportType = DevExpress.Export.ExportType.DataAware
    };
    
    options.CustomizeCell += options_CustomizeCell;
    
    void options_CustomizeCell(DevExpress.Export.CustomizeCellEventArgs e)
    {
       e.Formatting.Alignment = new XlCellAlignment() { WrapText = true };
       e.Handled = true;    
    }
    

    然后使用自定义选项对象进行导出。

参见:https://www.devexpress.com/Support/Center/Question/Details/T381176

还有 RenderBrick 事件,有时可能会有帮助。你可以这样处理:

gveExporter.RenderBrick += gveExporter_RenderBrick;

void gveExporter_RenderBrick(object sender, DevExpress.Web.ASPxGridViewExportRenderingEventArgs e)
{
    ...
    StringFormat sFormat = new StringFormat(StringFormatFlags.NoWrap);
    BrickStringFormat brickSFormat = new BrickStringFormat(sFormat);
    e.BrickStyle.StringFormat = brickSFormat;
    ...
}

但我还没有找到如何实际强制单元格换行的方法,因为 StringFormatFlags 在合适的项目中只有 NoWrap。根据我的经验,我确实在导出的 Excel 文档中使用了单元格换行长文本,因此我使用 RenderBrick 关闭了换行。

希望对您有所帮助。