乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > C#里怎么样把<em>剪贴板</em>的内容复制到dataGridView中?

C#里怎么样把<em>剪贴板</em>的内容复制到dataGridView中?

作者:乔山办公网日期:

返回目录:excel表格制作


Clipboard.SetText("复制文字");
Clipboard.SetImage(Image.FromFile("d:\\a.jpg")); //复制图片到剪贴板

public static void DataGirdViewCellPaste(DataGridView DBGrid)
{
try
{
// 获取剪切板的内容,并按行分割
string pasteText = "";
pasteText = Clipboard.GetText();

if (string.IsNullOrEmpty(pasteText))
return;
if (pasteText == "pasteText")
{
return;
}
int tnum = 0;
int nnum = 0;
//获得当前剪贴板内容的行、列数
for (int i = 0; i < pasteText.Length; i++)
{
if (pasteText.Substring(i, 1) == "\t")
{
tnum++;
}
if (pasteText.Substring(i, 1) == "\n")
{
nnum++;
}
}
Object[,] data;
//粘贴板上的数据来自于EXCEL时,每行末都有\n,在DATAGRIDVIEW内复制时,最后一行末没有\n
if (pasteText.Substring(pasteText.Length - 1, 1) == "\n")
{
nnum = nnum - 1;
}
tnum = tnum / (nnum + 1);
data = new object[nnum + 1, tnum + 1];//定义一个二维数组

String rowstr;
rowstr = "";
//MessageBox.Show(pasteText.IndexOf("B").ToString());
//对数组赋值
for (int i = 0; i < (nnum + 1); i++)
{
for (int colIndex = 0; colIndex < (tnum + 1); colIndex++)
{
//一行中的e68a847a686964616f339最后一列
if (colIndex == tnum && pasteText.IndexOf("\r") != -1)
{
rowstr = pasteText.Substring(0, pasteText.IndexOf("\r"));
}
//最后一行的最后一列
if (colIndex == tnum && pasteText.IndexOf("\r") == -1)
{
rowstr = pasteText.Substring(0);
}
//其他行列
if (colIndex != tnum)
{
rowstr = pasteText.Substring(0, pasteText.IndexOf("\t"));
pasteText = pasteText.Substring(pasteText.IndexOf("\t") + 1);
}
data[i, colIndex] = rowstr;
}
//截取下一行数据
pasteText = pasteText.Substring(pasteText.IndexOf("\n") + 1);
}
//获取当前选中单元格所在的列序号
int curntindex = DBGrid.CurrentRow.Cells.IndexOf(DBGrid.CurrentCell);
//获取获取当前选中单元格所在的行序号
int rowindex = DBGrid.CurrentRow.Index;
//MessageBox.Show(curntindex.ToString ());
for (int j = 0; j < (nnum + 1); j++)
{
for (int colIndex = 0; colIndex < (tnum + 1); colIndex++)
{
if (!DBGrid.Columns[colIndex + curntindex].Visible){
continue;
}
if (!DBGrid.Rows[j + rowindex].Cells[colIndex + curntindex].ReadOnly)
{
DBGrid.Rows[j + rowindex].Cells[colIndex + curntindex].Value = data[j, colIndex];
}
}
}
Clipboard.Clear();
}
catch
{
Clipboard.Clear();
//MessageBox.Show("粘贴区域大小不一致");
return;
}
}
你好zd,试试这样行不行。
  worksheet.Activate();
worksheet.Cells.Select();
worksheet.Cells.Copy(Type.Missing);
//app.DisplayAlerts = false;

//worksheet.Copy(Missing.Value, sheet);

//粘贴sheet数据

sheet.Paste(Type.Missing, Type.Missing);

用Clipboard类的GetDataObject()方法得到剪贴板中的数据,该方法返回一个IDataObject
用IDataObject对象的GetDataPresent(System.Type format)判断IDataObject对象中存储的数据是否可以转换为指定的格式,该方法接收一个参数,该参数必须是系统预定义的一种格式类型,该方法返回bool值。
用IDataObject对象的GetData(System.Type format)方法得到数据内容,该方法返回Object使用前要进行类型转换。
例如:
// GetDataObject检索当前剪贴板上的数据
IDataObject iData = Clipboard.GetDataObject();
// 将数据与指定的格式进行匹配,返回bool
if (iData.GetDataPresent(DataFormats.Text))
{
// GetData检索数据并指7a686964616fe58685e5aeb9365定一个格式
this.textBox1.Text = (string)iData.GetData(DataFormats.Text);
}
else
{
MessageBox.Show("剪贴板中数据不可转换为文本","错误");
}

相关阅读

  • <em>excel</em>办公都需要些什么软件

  • 乔山办公网excel表格制作
  • excel是应用软件zd。区分是系统软件还是应用软件一个最简单的方法就是,专该软件是否是在系统安装结束后可以直接使用。excel属于office办公系列软件,在windows系统平台下需要安装,属
关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网