感谢您提前提供的任何帮助:)
上下文 我在 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/