C#高级功能:DevExpress复制表格到剪贴板粘贴到Excel
C# 全选
private static void OnClick_CopyGridData(object? sender, EventArgs e)
{
GridView gvSummary = _Current.GridView;
if (gvSummary.GridControl.DataSource == null) return;
//表格数据源
var listSource = gvSummary.GridControl.DataSource;
var listTmp = listSource.Copy(); //复制数据副本,使用NPOI.Util扩展类
//必须去掉断行符!!!Excel会自动换行,导致表格记录数和Excel记录数不一致。
if (listTmp is IList data)
{
data.RemoveText('\r', '\n');
gvSummary.GridControl.DataSource = listTmp;
}
//必须允许多选
var allowMultiSelect = gvSummary.OptionsSelection.MultiSelect;
gvSummary.OptionsSelection.MultiSelect = true;
gvSummary.GridControl.SuspendLayout();
gvSummary.SelectAll(); //选择所有记录
gvSummary.OptionsClipboard.AllowCopy = DevExpress.Utils.DefaultBoolean.True;
gvSummary.OptionsClipboard.AllowExcelFormat = DevExpress.Utils.DefaultBoolean.True;
gvSummary.OptionsClipboard.ClipboardMode = ClipboardMode.PlainText;
gvSummary.OptionsClipboard.CopyColumnHeaders = DevExpress.Utils.DefaultBoolean.True;
gvSummary.OptionsClipboard.PasteMode = PasteMode.Update;
gvSummary.OptionsClipboard.ShowProgress = ProgressMode.Never;
Clipboard.Clear();//先清除所有内容
gvSummary.CopyToClipboard();//复制到剪贴板
gvSummary.OptionsSelection.MultiSelect = allowMultiSelect;
gvSummary.ClearSelection();
gvSummary.GridControl.DataSource = listSource;//还原数据
gvSummary.GridControl.ResumeLayout();
Msg.ShowInformation($"表格内容已复制到剪贴板,记录数【{gvSummary.DataRowCount}】");
}
关联代码:
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网





