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



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

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

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

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

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

但我不确定我是否应该将DataFormat指示为逗号分隔值(CSV)或文本。这样还是那样效果最好?有没有其他我忽略的DataFormat可以帮助我?

问题2我在Visual Studio 2012的即时窗口中使用了以下语句:

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

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

如果我能提供更多的澄清,请告诉我。我有点不知所措,不确定这个问题的范围。谢谢

以下是最终对我有效的方法:

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[] { "rn" }, StringSplitOptions.RemoveEmptyEntries);
...
}
catch (Exception e)
{
ErrorHandling.ShowError("There is no data on the Clipboard to paste.");=
}

"…"表示一旦我以数组形式获得数据,我就会对数据做一些非常特别的事情。我想做的是显示我的解决方案中可以帮助有类似需求的人的部分。

最新更新