private void copydata(stringdata1) {string clipboardText = Clipboard.GetText(); //获取剪贴板中的内容
if (data1.Trim().Length < 1) { return; }try{int colnum = 0;int rownum = 0;for (int i = 0; i < clipboardText.Length; i++)
{if (clipboardText.Substring(i, 1).Equals("\t"))
{
colnum++;
}if (clipboardText.Substring(i, 1).Equals("\n"))
{
rownum++;
}
}//粘贴板上的数据来源于EXCEL时,每行末尾都有\n,来源于DataGridView是,最后一行末尾没有\n
if (clipboardText.Substring(clipboardText.Length - 1, 1) == "\n")
{
rownum--;
}
colnum= colnum / (rownum + 1);object[,] data; //定义object类型的二维数组
data = new object[rownum + 1, colnum + 1]; //根据剪贴板的行列数实例化数组
string rowStr = "";//对数组各元素赋值
for (int i = 0; i <= rownum; i++)
{for (int j = 0; j <= colnum; j++)
{//一行中的其它列
if (j !=colnum)
{
rowStr= clipboardText.Substring(0, clipboardText.IndexOf("\t"));
clipboardText= clipboardText.Substring(clipboardText.IndexOf("\t") + 1);
}//一行中的最后一列
if (j == colnum && clipboardText.IndexOf("\r") != -1)
{
rowStr= clipboardText.Substring(0, clipboardText.IndexOf("\r"));
}//最后一行的最后一列
if (j == colnum && clipboardText.IndexOf("\r") == -1)
{
rowStr= clipboardText.Substring(0);
}
data[i, j]=rowStr;
}//截取下一行及以后的数据
clipboardText = clipboardText.Substring(clipboardText.IndexOf("\n") + 1);
}
clipboardText=Clipboard.GetText();int start, end = -1, index, rowStart = 0, columnStart = 0;
rowStart=r;//选中单元格的行号
columnStart=Icol;//选中单元格的列号for (int i = 0; i <=rownum; i++)
{
#region 如果datagridview中行数不够,就自动增加行
if ((i + rowStart) > dataGridView3.Rows.Count - 1)
{
//添加新行
DataRow row= dsMainFilter1.Tables[0].NewRow();
str= SYSVARS.vars.userId + System.DateTime.Now.ToString("yyyyMMddHHmmss").ToString().Trim() + dsMainFilter1.Tables[0].Rows.Count.ToString();//以时间标识代码不同的单据号
dsMainFilter1.Tables[0].Rows.Add(row);
}#endregion
for (int j = 0; j <= colnum; j++)//将值赋值过去---如果datagridview中没有自动增加列
{
#region 需要判断单元格是不是只读的,是只读的就不用不赋值
bool iszd = this.dataGridView3.Rows[i + rowStart].Cells[j +columnStart].ReadOnly;if (iszd == true)
{continue;
}#endregion
string sjz = "";try{
sjz=data[i, j].ToString();
}catch { sjz = ""; }if (sjz.Trim().Length < 1) { continue; }//直接复制this.dataGridView3.Rows[i + rowStart].Cells[j + columnStart].Value =sjz;
}
}
}catch{ }
}