c# - 将 Excel RangeSelection 复制到 Windows 应用程序中的数组

标签 c# excel clipboard copy-paste spreadsheetgear

感谢您提前提供的任何帮助:)

上下文 我在 Windows 应用程序中使用 SpreadsheetGear,在某些情况下,用户希望从打开的 Excel 应用程序复制数据并将二维网格粘贴到我的应用程序中的 SpreadsheetGear 对象中。

动机 我正在尝试从剪贴板中的数据获取信息,为粘贴做好准备。需要在粘贴之前确定传入数据的行数和列数,以便 SpreadsheetGear 控件和页面上的其他控件为数据“做好准备”。

问题 1 如何从剪贴板获取此类数据?我正在使用

System.Windows.Forms.Clipboard.GetData(...)

但我不确定是否应该将数据格式指示为 CommaSeparatedValue (CSV) 还是文本。一种方法或另一种方法效果最好吗?是否有另一种我忽略的数据格式可以帮助我?

问题2 我在Visual Studio 2012的立即窗口中使用了这个语句:

System.Diagnostics.Debug.WriteLine(Clipboard.GetText())

有趣的是,这返回了我在 Excel 中选择并复制的部分数据。剪贴板可以从 Excel 处理的数据量是否有限制?或者有没有办法让我的 Windows 应用程序帮助在剪贴板上分配更多空间,了解用户正在从 Excel 中选择数据并将该数据复制到剪贴板?

如果我可以提供更多说明,请告诉我。我有点迷失,不确定这个问题的范围。谢谢!

最佳答案

这就是最终对我有用的内容:

try
{
    var data = Clipboard.GetDataObject();
    var stream = (System.IO.Stream)data.GetData(DataFormats.CommaSeparatedValue);
    var enc = new System.Text.UTF8Encoding();
    var reader = new System.IO.StreamReader(stream, enc);
    string data_csv = reader.ReadToEnd();
    string[] data_csv_array = data_csv.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
    ...
}
catch (Exception e)
{
    ErrorHandling.ShowError("There is no data on the Clipboard to paste.");=
}

“...”表示一旦我以数组形式获得数据,我就会对数据执行一些非常特殊的操作。我想做的是展示我的解决方案中能够帮助有类似需求的人们的部分。

关于c# - 将 Excel RangeSelection 复制到 Windows 应用程序中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13481041/

相关文章:

c# - 为什么 asp.net core 发送空对象作为响应?

c# - 使用 LINQ 时从字符串访问 lambda 表达式中的属性

Python Pandas SUMPRODUCT 和 L 矩阵计算

excel - 在类模块内创建公共(public) VB 数组

vba - 如何创建 Double 的空数组

c# - 剪贴板 + PresentationFramework = OutOfMemoryException?

c# - 在 ListView C# 中拖放

c# - 在正在运行的进程中获取类的实例

javascript - 在 iOS 上的 Safari 中,是否可以有一个将文本复制到剪贴板的按钮?

javascript - 不使用任何输入将文本复制到剪贴板