使用带有多行文本的列导出ASPxGridView以实现

时间:2016-10-07 10:18:40

标签: asp.net devexpress export-to-excel aspxgridview

是否可以使用ASPxGridViewExporter将包含多行文本的列的ASPxGridView导出为ex​​cel?

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

我试过了两个< br />和“\ n”(换行符)作为行分隔符。

btw属性的属性PropertiesTextEdit-EncodeHtml在该列上为false。

由于

1 个答案:

答案 0 :(得分:1)

有两种方法可以实现您的目标:

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

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

    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;    
    }
    

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

  3. 请参阅: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来切换它。

    希望有所帮助。