Winform-DataGridView 实现如Excel的粘贴复制
void AddDataGridView(DataGridView gridView, string s)
{
s = s.Replace("/", @"\"); //避免因为版本造成的斜杠问题,这里做统一处理
int RowCount = (s.Length - s.Replace("\r\n", "").Length) / 2 + 1; //最终计算结果,这次覆盖所要影响的行数 /r/n只占2个字节所以是除2
int CellCount = (s.Length - s.Replace("\t", "").Length + RowCount) / RowCount; ; //~每行单元格数 /t的数量加行数=所有单元格数(第一个单元格会不计算)
string[,] Strarr = new string[RowCount, CellCount]; //用于记录复制的单元格信息的二维数组
for (int i = 0; i < RowCount; i++) //将单元格信息添加到数组中
{
string tem_s = s.Split(new string[] { "\r\n" }, StringSplitOptions.None)[i];
for (int j = 0; j < CellCount; j++)
{
Strarr[i, j] = tem_s.Split(new string[] { "\t" }, StringSplitOptions.None)[j];
}
}
//获取选择单元格 以第一个单元格为0点向第四象限扩展 SelectedCells是以用户选择顺序或者拖动方向决定的 是不规律的
//为了保证和理性,这里所取的第一个单元格是左上角的单元格
int arrayX = 0, arrayY = 0; //二维数组坐标系
int startRow = gridView.Rows.Count, startColumn = gridView.ColumnCount; //起始的单元格坐标系
foreach (DataGridViewCell cell in gridView.SelectedCells) //迭代比较,获取2轴数字均最小的坐标
{
startRow = cell.RowIndex < startRow ? cell.RowIndex : startRow;
startColumn = cell.ColumnIndex < startColumn ? cell.ColumnIndex : startColumn;
}
for (int i = startRow; (arrayX < RowCount && i < gridView.Rows.Count); i++, arrayX++) //非空验证
{
arrayY = 0;
DialogResult dr=new DialogResult();
for (int j = startColumn; (arrayY < CellCount && j < gridView.ColumnCount); j++, arrayY++)
{
if (!string.IsNullOrEmpty(gridView.Rows[i].Cells[j].Value.ToString()))
{
dr = MessageBox.Show("继续操作会覆盖原内容!", "警告", MessageBoxButtons.OKCancel);
if (dr == DialogResult.OK)
break; //单元格非空时警示,确定操作退出循环继续赋值
else
return; //否则直接返回方法
}
}
if (dr == DialogResult.OK) //如果做了选择 则退出
break;
}
arrayX = arrayY = 0; //坐标系重置
for (int i = startRow; (arrayX < RowCount && i < gridView.Rows.Count); i++, arrayX++) //数据赋值
{
arrayY = 0;
for (int j = startColumn; (arrayY < CellCount && j < gridView.ColumnCount); j++, arrayY++)
{
gridView.Rows[i].Cells[j].Value = Strarr[arrayX, arrayY];
}
}
}
如果不需要覆盖检查,代码会简短一些
Winform-DataGridView 实现如Excel的粘贴复制的更多相关文章
- winform DataGridView 导出到Excel表格 分类: WinForm 2014-07-04 10:48 177人阅读 评论(0) 收藏
public bool ExportDataGridview(DataGridView gridView) { if (gridView.Rows.Count ...
- Winform DataGridView直接导出Excel
/// <summary> /// 导出excel /// </summary> /// <param name="fileName">导出文件 ...
- [WinForm]dataGridView导出到EXCEL
方法一: SaveFileDialog dlg = new SaveFileDialog(); dlg.Filter = "Execl files (*.xls)|*.xls"; ...
- C# winform DataGridView 常见属性
C# winform DataGridView 属性说明① 取得或者修改当前单元格的内容 ② 设定单元格只读 ③ 不显示最下面的新行 ④ 判断新增行 ⑤ 行的用户删除操作的自定义 ⑥ 行.列的隐藏和删 ...
- 关于C# Winform DataGridView 设置DefaultCellStyle无效的原因与解决方案
上周在开发Winform 项目中,我曾遇到一个看似简单,但一直都没有解决的问题,那就是:设置winform DataGridView控件的行DefaultCellStyle,但却没有任何变化,我也曾求 ...
- 从 Excel 表格粘贴到 浏览器表格中
从 Excel 表格粘贴到 浏览器表格中 由于 Excel 用途广泛,所以在导入时用到很多. 但是更多人的喜欢使用复制粘贴. 在网上找了一圈有找到一个开源项目,可以将 Excel 粘贴到 HTML 中 ...
- 在Excel中粘贴时怎样跳过隐藏行
http://www.excel123.cn/Article/exceljichu/201203/932.html 有时在筛选后需要将其他区域中的连续行数据复制粘贴到筛选区域,以替换筛选后的数据.由于 ...
- js屏蔽浏览器右键菜单,粘贴,复制,剪切,选中(转)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- DataGridView导出到Excel的三个方法
#region DataGridView数据显示到Excel /// <summary> /// 打开Excel并将DataGridView控件中数据导出到Excel /// </s ...
随机推荐
- 项目:学生查看自己的作业情况和分数(php)
<?php include '../includes/db.ini.php'; try { $sql='SELECT work_id,title,work_text,score_value FR ...
- 【5集iCore3_ADP演示视频】5-2 iCore3应用开发平台上电及注意事项
iCore3双核心应用开发平台基于iCore3双核心板,包含ARM.FPGA.7寸液晶屏.双通道数字示波器.任意波发生器.电压表等模块,是一款专为电子爱好者设计的综合性电子学习系统. [视频简介]本视 ...
- Glide加载图片到自定义的圆形ImageView中不显示
当使用自定义的圆形ImageView时,发现使用Glide加载并设置默认初始图片时,自定义的ImageView一直显示默认图片,无法更新到加载的图片. 使用下面代码可以解决这个问题 Glide.wit ...
- CSS3 媒体查询移动设备尺寸 Media Queries for Standard Devices (包括 苹果手表 apple watch)
/* ----------- iPhone 4 and 4S ----------- */ /* Portrait and Landscape */ @media only screen and (m ...
- LINUX端口查看
e切依燃 LINUX端口查看 查看文件数 ls | wc -w lsof -i:80
- apachebench的简单使用1
ApacheBench是 Apache 附带的一个小工具,专门用于 HTTP Server 的benchmark testing,可以同时模拟多个并发请求. ab的基本格式: NAME ab - Ap ...
- iOS开发路线简述
1 iOS开发环境1.1 开发环境标准的配置是MacOSX+Xcode.MacOSX的话首选用苹果电脑,Macmini最便宜只要4000多就好了然后自己配一个显示器,MacBookPro 也可以,不推 ...
- 让div支持placeholder属性/模拟输入框的placeholder属性
实现方式:css div:empty:before{ content: attr(placeholder); color:#bbb;}div:focus:before{ content:none; }
- cursor or set-based
标题可能和正文不太相符.我主要是记录工作中遇到使用游标的语句改成普通set-based operation,执行时间快了很多. 1.游标语句 declare @startDate dateTime d ...
- Linux 设置定时任务crontab命令
1. crontab命令概念 crontab命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行. cron 系统调度进程. 可以使 ...