将 WPF 数据网格复制到剪贴板需要的时间太长



我编写了一个 WPF 应用程序,该应用程序将数据从 DataGrid 复制到剪贴板,然后自动将其粘贴到 Excel 中。问题:复制时间太长了。还有其他方法可以更快地将数据网格复制到剪贴板吗?谢谢

private void copyAlltoClipboard()
{
DataGrid1.SelectAllCells();
DataGrid1.ClipboardCopyMode = DataGridClipboardCopyMode.IncludeHeader;
ApplicationCommands.Copy.Execute(null, DataGrid1); // Take too long time
}

private void Button_Click(object sender, RoutedEventArgs e)
{
copyAlltoClipboard();
Excel.Application xlexcel;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlexcel = new Excel.Application();
xlexcel.Visible = true;
xlWorkBook = xlexcel.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
Excel.Range CR = (Excel.Range)xlWorkSheet.Cells[1, 1];
CR.Select();
xlWorkSheet.PasteSpecial(CR, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, true);
}

我认为一个问题是你从UI复制,而不是从后面的代码中复制原始数据。我看到其他一些东西表明您没有使用 MVVM 模式。WPF/UWP 和 XAML 实际上是为 MVVM 模式设计的。虽然您可以使用其他方法,但这样做会错过大约 90% 的功能,并且在其他地方都会遇到问题。如果您打算继续使用该 GUI 技术,那么没有理由不先学习 MVVM,并可能在此过程中解决您的问题。

如果操作需要很长时间并且无法修复,则可能是时候考虑一些多任务处理了。基本上,此操作(导出到Excel(需要很长时间。如果你有一个长时间运行的操作(保存到磁盘,打印,导出到另一种格式(,通常需要一些多任务处理。

最新更新