是否可以使用ASPxGridViewExporter将包含多行文本的列的ASPxGridView导出为excel?
我的ASPxGridView包含一个包含多行文本的列。 当我使用ASPxGridViewExporter导出网格数据时,多行文本呈现为一行(没有换行符)。
我试过了两个< br />和“\ n”(换行符)作为行分隔符。
btw属性的属性PropertiesTextEdit-EncodeHtml在该列上为false。
由于
答案 0 :(得分:1)
有两种方法可以实现您的目标:
在XlsxExportOptionsEx中指定WYSIWYG导出类型:
XlsxExportOptionsEx options = new XlsxExportOptionsEx()
{
ExportType = DevExpress.Export.ExportType.WYSIWYG
};
ASPxGridView1.ExportToXlsx("Test.xlsx", options);
告诉导出器您想要数据识别导出并处理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;
}
然后使用自定义选项对象进行导出。
请参阅: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来切换它。
希望有所帮助。