将带有多行文本的列的 ASPxGridView 导出到 excel
Export ASPxGridView with column with multiline text to excel
是否可以使用 ASPxGridViewExporter 将包含多行文本的列的 ASPxGridView 导出到 excel?
我有一个 ASPxGridView,其列包含多行文本。
当我使用 ASPxGridViewExporter 导出网格数据时,多行文本呈现为一行(没有换行符)。
我尝试了
和“\n”(换行符)作为行分隔符。
顺便说一句,属性 PropertiesTextEdit-EncodeHtml 的值在该列上是错误的。
谢谢
有两种方法可以达到您的要求:
在 XlsxExportOptionsEx 中指定 WYSIWYG 导出类型:
XlsxExportOptionsEx options = new XlsxExportOptionsEx()
{
ExportType = DevExpress.Export.ExportType.WYSIWYG
};
ASPxGridView1.ExportToXlsx("Test.xlsx", options);
告诉导出器您想要数据感知导出并处理 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 关闭了换行。
希望对您有所帮助。
是否可以使用 ASPxGridViewExporter 将包含多行文本的列的 ASPxGridView 导出到 excel?
我有一个 ASPxGridView,其列包含多行文本。 当我使用 ASPxGridViewExporter 导出网格数据时,多行文本呈现为一行(没有换行符)。
我尝试了
和“\n”(换行符)作为行分隔符。
顺便说一句,属性 PropertiesTextEdit-EncodeHtml 的值在该列上是错误的。
谢谢
有两种方法可以达到您的要求:
在 XlsxExportOptionsEx 中指定 WYSIWYG 导出类型:
XlsxExportOptionsEx options = new XlsxExportOptionsEx() { ExportType = DevExpress.Export.ExportType.WYSIWYG }; ASPxGridView1.ExportToXlsx("Test.xlsx", options);
告诉导出器您想要数据感知导出并处理 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 关闭了换行。
希望对您有所帮助。